{"openapi":"3.1.0","info":{"title":"doWallet API","version":"0.2.0","description":"doWallet stellt Coupons, Kundenkarten, Tickets und Ausweise für Apple Wallet und Google Wallet aus, aktualisiert sie und zählt Nutzungen. Diese Referenz beschreibt die REST-API, mit der du doWallet an Ticketing, Kasse, Shop, CRM oder Data-Warehouse anbindest.\n\n## Basis-URL\n\n| Umgebung | URL |\n| --- | --- |\n| Produktion | `https://api.dowallet.de` |\n| Staging | `https://api.dowallet.dev` |\n\nAlle Pfade sind versioniert (`/v1/…`). Antworten sind JSON, Zeitstempel ISO 8601 in UTC, Beträge in Cent.\n\n## Ein Pass pro Kauf in drei Schritten\n\n1. **Token anlegen**: Einstellungen → API-Management → „Neuer Token“ mit dem Scope `passes:issue`. Die Rezepte auf dowallet.de/docs setzen außerdem die Feldliste der Vorlage per API und brauchen dafür `templates:write`.\n2. **Pass ausstellen**: ein Aufruf pro Kauf. `attributes` füllt die Felder der Vorlage, `code` kommt in den Barcode.\n\n```bash\ncurl -X POST https://api.dowallet.de/v1/workspaces/{workspaceId}/passes \\\n  -H \"Authorization: Bearer $DOWALLET_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Idempotency-Key: bestellung-4711\" \\\n  -d '{ \"templateId\": \"{templateId}\", \"attributes\": { \"film\": \"Dune\", \"saal\": \"5\" }, \"code\": \"TK-889\" }'\n```\n\n   Die Antwort enthält `passId`, `serial`, `code` und die Links für Apple Wallet (`apple.downloadUrl`) und Google Wallet (`google.saveUrl`).\n3. **Ereignisse empfangen**: einen Webhook anlegen (`POST /v1/workspaces/{workspaceId}/webhooks`) mit Ereignissen aus `GET /v1/webhook-event-types`, etwa `pass.registered` (Pass liegt im Wallet) und `pass.redeemed` (Pass genutzt).\n\nVier fertige Abläufe (Ticket pro Kauf, Badge pro Registrierung, Karte pro Vertrag, Codes aus dem Shop-System) stehen unter [dowallet.de/docs](https://dowallet.de/docs). Die Workspace-ID steht in der App unter Nutzungen → Anbindung, die ID einer Vorlage in der Adresse des Editors (`/templates/{id}`).\n\n## Authentifizierung\n\nIntegrationen nutzen einen **API-Token** (Einstellungen → API-Management, nur der Inhaber der Organisation in der Web-App). Sende ihn als Bearer-Token:\n\n```http\nAuthorization: Bearer dwlt_xxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nEin Token gehört zu einer Organisation und gilt entweder für die ganze Organisation oder nur für einen Workspace (`workspaceId` beim Anlegen). Er handelt mit der Rolle der Person, die ihn angelegt hat, aber nur innerhalb dieser Bindung: ein Workspace-Token sieht keine anderen Workspaces und hat keine Rechte an der Organisation selbst. Ein Token trägt nie Plattform-Admin-Rechte, auch wenn ihn ein Plattform-Admin angelegt hat, und erreicht die Konto-Selbstverwaltung nicht (Profil, Passwort, Zwei-Faktor, Passkeys, eigener Datenexport, Kontolöschung). Die Web-App selbst verwendet eine Cookie-Sitzung (`dwlt_session`) mit CSRF-Header; für Server-zu-Server-Aufrufe brauchst du das nicht.\n\n### Scopes\n\nDie Scopes eines Tokens begrenzen, welche Routen er aufrufen darf. Sie geben keine Rechte: die Rolle seines Erstellers muss die Aktion trotzdem erlauben. Jede Route gehört zu einer Familie; lesende Aufrufe (`GET`) brauchen den Lese-Scope, alle anderen den Schreib-Scope.\n\n| Scope | Routen |\n| --- | --- |\n| `passes:read` | Pässe lesen (`GET …/passes`, `GET /v1/passes/{id}`, Verlauf), Nutzungen, Auswertung und Kennzahlen, Suche, Ereignisse, Kontakte |\n| `passes:issue` | Pässe ausstellen (`POST …/passes`, `POST …/passes/bulk`) |\n| `passes:write` | Pässe ändern: kennzeichnen, Attribute, Inhalt eines Test-Passes, entwerten, Mitteilung, personenbezogene Daten löschen, Google-Abgleich |\n| `templates:read`, `templates:write` | Vorlagen samt Versionen, Entwurf, Test-Pass und Veröffentlichen, Ordner, Bilder, Standorte einer Vorlage, Einlöse-Regel, Landing-Seiten, Code-Listen, Wertquelle, Kurzlinks, E-Mail-Vorschau und Test-E-Mail; dazu die Standort-Liste (`GET …/locations`) |\n| `locations:write` | Standorte anlegen, ändern und löschen |\n| `campaigns:read`, `campaigns:write` | Kampagnen (auch Empfänger, Kampagnenplan, Veröffentlichen, Pausieren, Abbrechen) und Automatisierungen (Probelauf und Schritt-Test zählen als Schreiben) |\n| `audiences:read`, `audiences:write` | Zielgruppen; Vorschau und Schätzung speichern nichts und brauchen nur `audiences:read` |\n| `webhooks:write` | Webhooks (auch Liste, Zustellungen und Test) und Empfangs-URLs |\n| `events:write` | Eigene Ereignisse schreiben, Nutzungen melden und importieren |\n\nWeitere Ausnahmen: `GET /v1/passes/{id}` nimmt auch `passes:write` oder `passes:issue`, `PATCH /v1/passes/{id}/attributes` auch `passes:issue`, `POST /v1/templates/{id}/preflight` braucht nur `templates:read`.\n\n**Ohne Scope**, für jeden Token: Organisation und Workspaces lesen (`GET /v1/orgs`, `GET /v1/orgs/{id}`, `GET /v1/orgs/{orgId}/workspaces`, `GET /v1/workspaces/{id}`), der Webhook-Katalog und die Branchen-Benchmarks.\n\n**Nur mit Anmeldung im Browser**, nie mit einem Token: die Verwaltung der Organisation (Team, Einladungen, API-Tokens, Workspaces anlegen und ändern, Branding, Rechnungen, Verbrauch, E-Mail-Absender, Wallet-Zugänge, Audit-Log, DSGVO-Export und Löschung, Support), das eigene Konto (`/v1/users/*`), Mitteilungen und der Scanner der Web-App.\n\n**Einführung:** Die Pass-Routen (Ausstellen, Attribute ändern, einen Pass lesen) prüfen ihre Scopes schon immer. Für alle anderen Routen läuft die Prüfung zuerst im Beobachtungsmodus: fehlt einem Token ein Scope, geht der Aufruf durch und doWallet vermerkt es im Log. Danach antwortet die API mit `403 missing_scope` und nennt die nötigen Scopes in `details.requiredScopes` (bei Routen nur für die Anmeldung im Browser `[\"session\"]`). Lege deine Tokens deshalb gleich mit den Scopes an, die deine Integration braucht.\n\n## Fehler\n\nJeder Fehler kommt als Envelope mit stabiler `code`-Kennung und einer `requestId` für den Support:\n\n```json\n{\n  \"error\": {\n    \"type\": \"https://docs.dowallet.de/errors/validation_failed\",\n    \"title\": \"Validation failed\",\n    \"status\": 422,\n    \"code\": \"validation_failed\",\n    \"detail\": \"Die Attribute passen nicht zur Feldliste der Vorlage.\",\n    \"fields\": { \"attributes.saal\": [\"Pflichtfeld fehlt\"] },\n    \"requestId\": \"req-8f3a…\"\n  }\n}\n```\n\n| Status | Bedeutung |\n| --- | --- |\n| `401` | Token fehlt, ist abgelaufen oder widerrufen |\n| `402` | Funktion nicht im Paket oder Kontingent erreicht |\n| `403` | Rolle reicht nicht (`permission_denied`), dem Token fehlt ein Scope (`missing_scope`, die nötigen stehen in `details.requiredScopes`), das Modul ist für deine Organisation nicht eingeschaltet (`module_disabled`, `details.module`) oder der Pass-Typ einer neuen Vorlage ist nicht freigeschaltet (`pass_type_not_allowed`, `details.passType` und `details.allowed`) |\n| `404` | Objekt gehört nicht zu deiner Organisation oder existiert nicht |\n| `409` | Konflikt, z. B. Code schon vergeben (`code_in_use`) oder Pass schon entwertet |\n| `422` | Validierung fehlgeschlagen (`fields` nennt die Felder) |\n| `429` | Rate-Limit, `Retry-After` beachten |\n| `503` | Kein Code verfügbar (`codes_exhausted`) |\n\n## Rate-Limits und Idempotenz\n\nAufrufe sind je Token begrenzt, ohne Anmeldung je IP; einige Routen haben eigene, engere Grenzen, etwa der Code-Import. Viele Pässe stellst du gebündelt aus (`POST /v1/workspaces/{workspaceId}/passes/bulk`, bis 100 je Aufruf). Ein `Idempotency-Key`-Header macht schreibende Aufrufe wiederholbar: dieselbe Anfrage mit demselben Schlüssel liefert 24 Stunden lang dieselbe Antwort und legt nichts doppelt an. Derselbe Schlüssel mit anderem Body ergibt 409 `idempotency_replay`.\n\n## Webhooks\n\ndoWallet ruft deinen Endpunkt bei den Ereignissen auf, die dein Webhook abonniert. Den Katalog liefert `GET /v1/webhook-event-types`, z. B. `pass.created`, `pass.registered`, `pass.redeemed`, `pass.attributes_updated` und `pass.expired`. Jede Zustellung ist ein POST mit diesem JSON-Umschlag:\n\n```json\n{\n  \"id\": \"5b0f3c1e-7a2d-4e8b-9c61-2f4d8a1b3e70\",\n  \"type\": \"pass.redeemed\",\n  \"occurredAt\": \"2026-09-15T10:32:00.000Z\",\n  \"workspaceId\": \"3f2c1b7e-8d4a-4c6e-9b1f-2a7d5e6c9f01\",\n  \"data\": { \"passId\": \"…\", \"kind\": \"redemption\" }\n}\n```\n\n`type` ist immer der Name aus dem Katalog, auch wenn der Webhook einen früheren Namen abonniert hat; `data` hängt vom Ereignis ab. Kopfzeilen: `x-dowallet-event` (derselbe Name wie `type`), `x-dowallet-event-id` (dieselbe ID wie `id`, für Dubletten bei Wiederholungen) und `x-dowallet-signature: t=<unix>,v1=<hex(hmac_sha256(secret, t + \".\" + body))>` mit dem Webhook-Secret. Scheitert eine Zustellung, versucht doWallet es bis zu fünfmal erneut, mit Abständen von 5 und 30 Minuten, 2, 12 und 24 Stunden.\n\n## Nutzungen melden\n\nDrei Wege, alle landen in derselben Auswertung: live über eine Empfangs-URL (`POST /v1/webhooks/incoming/{id}`, signiert mit ihrem Secret), gebündelt per `POST /v1/workspaces/{workspaceId}/redemptions` oder als CSV in der App. Seriennummer, Code oder Pass-ID reichen als Referenz, `externalId` verhindert Dubletten.\n\n## Entwerten\n\n`POST /v1/passes/{id}/deactivate` entwertet einen Pass endgültig: das Wallet zeigt ihn als ungültig, der Download-Link antwortet mit 410, und auch ein erneutes Hinzufügen macht ihn nicht wieder gültig.","contact":{"name":"doWallet Support","email":"hallo@dowallet.de","url":"https://dowallet.de/trust"}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API-Token aus Einstellungen → API-Management."},"cookieAuth":{"type":"apiKey","in":"cookie","name":"dwlt_session","description":"Browser-Sitzung der Web-App."}},"schemas":{}},"paths":{"/v1/auth/sign-in":{"post":{"summary":"Anmelden mit Passwort","tags":["auth"],"description":"Setzt die Sitzungs-Cookies der Web-App. Bei aktivierter Zwei-Faktor-Authentifizierung folgt `mfaRequired` mit einem Challenge-Token.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"identifier":{"type":"string","minLength":1},"password":{"type":"string","minLength":1},"captchaToken":{"type":"string","minLength":1}},"required":["identifier","password"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopes":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["id","scopes","orgId","workspaceId"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"isPlatformAdmin":{"type":"boolean"},"accessExpiresAt":{"type":["string","null"]},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","isPlatformAdmin"],"additionalProperties":false},"activeOrg":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"onboardingCase":{"type":["string","null"]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"capabilities":{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"activeOrgRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"activeOrgWideRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"mfaEnrolled":{"type":"boolean"},"activeWorkspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"availableWorkspaces":{"type":"array","items":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["customer","pitch","test","internal"]}},"required":["id","slug","name"],"additionalProperties":false},"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["org","workspaces"],"additionalProperties":false}},"impersonation":{"anyOf":[{"type":"object","properties":{"superAdminUserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["read_only","write_allowed"]}},"required":["superAdminUserId","expiresAt","mode"],"additionalProperties":false},{"type":"null"}]},"customerMode":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":"string"},"editUnlockedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"unlockMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","orgName","editUnlockedUntil","unlockMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["user","activeOrg","activeOrgRole","activeOrgWideRole","activeWorkspace","availableWorkspaces","impersonation"],"additionalProperties":false},{"type":"object","properties":{"mfaRequired":{"type":"boolean","enum":[true]},"challengeToken":{"type":"string"},"method":{"type":"string","enum":["passkey","totp"]},"methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["passkey","totp"]}},"recoveryCodesRemaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["mfaRequired","challengeToken","method","methods"],"additionalProperties":false}]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/sign-in/mfa-verify":{"post":{"summary":"Zweiten Faktor bestätigen","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"challengeToken":{"type":"string","minLength":8},"code":{"type":"string","minLength":6,"maxLength":20}},"required":["challengeToken","code"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopes":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["id","scopes","orgId","workspaceId"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"isPlatformAdmin":{"type":"boolean"},"accessExpiresAt":{"type":["string","null"]},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","isPlatformAdmin"],"additionalProperties":false},"activeOrg":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"onboardingCase":{"type":["string","null"]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"capabilities":{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"activeOrgRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"activeOrgWideRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"mfaEnrolled":{"type":"boolean"},"activeWorkspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"availableWorkspaces":{"type":"array","items":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["customer","pitch","test","internal"]}},"required":["id","slug","name"],"additionalProperties":false},"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["org","workspaces"],"additionalProperties":false}},"impersonation":{"anyOf":[{"type":"object","properties":{"superAdminUserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["read_only","write_allowed"]}},"required":["superAdminUserId","expiresAt","mode"],"additionalProperties":false},{"type":"null"}]},"customerMode":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":"string"},"editUnlockedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"unlockMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","orgName","editUnlockedUntil","unlockMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["user","activeOrg","activeOrgRole","activeOrgWideRole","activeWorkspace","availableWorkspaces","impersonation"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/sign-in/passkey-options":{"post":{"summary":"Zweiter Schritt mit Passkey: Optionen","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"challengeToken":{"type":"string","minLength":8,"maxLength":200}},"required":["challengeToken"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"string"},"rpId":{"type":"string"},"timeout":{"type":"number"},"userVerification":{"type":"string"},"allowCredentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["public-key"]},"transports":{"type":"array","items":{"type":"string"}}},"required":["id","type"],"additionalProperties":{}}}},"required":["challenge"],"additionalProperties":{}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/sign-in/passkey-verify":{"post":{"summary":"Zweiter Schritt mit Passkey: Bestätigung","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"challengeToken":{"type":"string","minLength":8,"maxLength":200},"response":{}},"required":["challengeToken","response"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopes":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["id","scopes","orgId","workspaceId"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"isPlatformAdmin":{"type":"boolean"},"accessExpiresAt":{"type":["string","null"]},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","isPlatformAdmin"],"additionalProperties":false},"activeOrg":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"onboardingCase":{"type":["string","null"]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"capabilities":{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"activeOrgRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"activeOrgWideRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"mfaEnrolled":{"type":"boolean"},"activeWorkspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"availableWorkspaces":{"type":"array","items":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["customer","pitch","test","internal"]}},"required":["id","slug","name"],"additionalProperties":false},"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["org","workspaces"],"additionalProperties":false}},"impersonation":{"anyOf":[{"type":"object","properties":{"superAdminUserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["read_only","write_allowed"]}},"required":["superAdminUserId","expiresAt","mode"],"additionalProperties":false},{"type":"null"}]},"customerMode":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":"string"},"editUnlockedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"unlockMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","orgName","editUnlockedUntil","unlockMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["user","activeOrg","activeOrgRole","activeOrgWideRole","activeWorkspace","availableWorkspaces","impersonation"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/passkeys/login-options":{"post":{"summary":"Passkey-Anmeldung: Optionen","tags":["auth"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/passkeys/login-verify":{"post":{"summary":"Passkey-Anmeldung: Bestätigung","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"response":{}},"required":["response"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopes":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["id","scopes","orgId","workspaceId"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"isPlatformAdmin":{"type":"boolean"},"accessExpiresAt":{"type":["string","null"]},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","isPlatformAdmin"],"additionalProperties":false},"activeOrg":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"onboardingCase":{"type":["string","null"]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"capabilities":{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"activeOrgRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"activeOrgWideRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"mfaEnrolled":{"type":"boolean"},"activeWorkspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"availableWorkspaces":{"type":"array","items":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["customer","pitch","test","internal"]}},"required":["id","slug","name"],"additionalProperties":false},"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["org","workspaces"],"additionalProperties":false}},"impersonation":{"anyOf":[{"type":"object","properties":{"superAdminUserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["read_only","write_allowed"]}},"required":["superAdminUserId","expiresAt","mode"],"additionalProperties":false},{"type":"null"}]},"customerMode":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":"string"},"editUnlockedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"unlockMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","orgName","editUnlockedUntil","unlockMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["user","activeOrg","activeOrgRole","activeOrgWideRole","activeWorkspace","availableWorkspaces","impersonation"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/sign-out":{"post":{"summary":"Abmelden","tags":["auth"],"responses":{"204":{"description":"Default Response"}}}},"/v1/auth/active-workspace":{"post":{"summary":"Aktiven Workspace wechseln","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["workspaceId"]},{"type":"object","properties":{"orgSlug":{"type":"string"},"workspaceSlug":{"type":"string"}},"required":["orgSlug","workspaceSlug"]}]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopes":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["id","scopes","orgId","workspaceId"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"isPlatformAdmin":{"type":"boolean"},"accessExpiresAt":{"type":["string","null"]},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","isPlatformAdmin"],"additionalProperties":false},"activeOrg":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"onboardingCase":{"type":["string","null"]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"capabilities":{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"activeOrgRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"activeOrgWideRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"mfaEnrolled":{"type":"boolean"},"activeWorkspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"availableWorkspaces":{"type":"array","items":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["customer","pitch","test","internal"]}},"required":["id","slug","name"],"additionalProperties":false},"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["org","workspaces"],"additionalProperties":false}},"impersonation":{"anyOf":[{"type":"object","properties":{"superAdminUserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["read_only","write_allowed"]}},"required":["superAdminUserId","expiresAt","mode"],"additionalProperties":false},{"type":"null"}]},"customerMode":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":"string"},"editUnlockedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"unlockMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","orgName","editUnlockedUntil","unlockMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["user","activeOrg","activeOrgRole","activeOrgWideRole","activeWorkspace","availableWorkspaces","impersonation"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/otp-request":{"post":{"summary":"Anmeldecode per E-Mail anfordern","tags":["auth"],"description":"Antwortet immer 204. Die E-Mail enthält einen 6-stelligen Code und einen Direkt-Link, beide 10 Minuten gültig und einmal verwendbar.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"brand":{"description":"Kurzname der Marke, von deren Anmeldung die Anfrage kommt (/anmelden/<slug>). Wirkt nur für Mitglieder dieser Organisation mit geprüfter App-Marke.","type":"string","maxLength":80},"captchaToken":{"description":"Token des doCaptcha-Widgets auf dem Formular. Pflicht, sobald die API mit doCaptcha läuft (sonst 400, details.reason captcha_required oder captcha_failed).","type":"string","minLength":1,"maxLength":4096}},"required":["email"]}}}},"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/otp-verify":{"post":{"summary":"Anmeldecode einlösen","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"code":{"type":"string","minLength":4,"maxLength":12}},"required":["email","code"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopes":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["id","scopes","orgId","workspaceId"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"isPlatformAdmin":{"type":"boolean"},"accessExpiresAt":{"type":["string","null"]},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","isPlatformAdmin"],"additionalProperties":false},"activeOrg":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"onboardingCase":{"type":["string","null"]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"capabilities":{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"activeOrgRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"activeOrgWideRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"mfaEnrolled":{"type":"boolean"},"activeWorkspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"availableWorkspaces":{"type":"array","items":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["customer","pitch","test","internal"]}},"required":["id","slug","name"],"additionalProperties":false},"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["org","workspaces"],"additionalProperties":false}},"impersonation":{"anyOf":[{"type":"object","properties":{"superAdminUserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["read_only","write_allowed"]}},"required":["superAdminUserId","expiresAt","mode"],"additionalProperties":false},{"type":"null"}]},"customerMode":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":"string"},"editUnlockedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"unlockMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","orgName","editUnlockedUntil","unlockMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["user","activeOrg","activeOrgRole","activeOrgWideRole","activeWorkspace","availableWorkspaces","impersonation"],"additionalProperties":false},{"type":"object","properties":{"mfaRequired":{"type":"boolean","enum":[true]},"challengeToken":{"type":"string"},"method":{"type":"string","enum":["passkey","totp"]},"methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["passkey","totp"]}},"recoveryCodesRemaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["mfaRequired","challengeToken","method","methods"],"additionalProperties":false}]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/otp-link-verify":{"post":{"summary":"Anmelde-Link einlösen","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":20,"maxLength":200}},"required":["token"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopes":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["id","scopes","orgId","workspaceId"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"isPlatformAdmin":{"type":"boolean"},"accessExpiresAt":{"type":["string","null"]},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","isPlatformAdmin"],"additionalProperties":false},"activeOrg":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"onboardingCase":{"type":["string","null"]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"capabilities":{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"activeOrgRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"activeOrgWideRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"mfaEnrolled":{"type":"boolean"},"activeWorkspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"availableWorkspaces":{"type":"array","items":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["customer","pitch","test","internal"]}},"required":["id","slug","name"],"additionalProperties":false},"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["org","workspaces"],"additionalProperties":false}},"impersonation":{"anyOf":[{"type":"object","properties":{"superAdminUserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["read_only","write_allowed"]}},"required":["superAdminUserId","expiresAt","mode"],"additionalProperties":false},{"type":"null"}]},"customerMode":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":"string"},"editUnlockedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"unlockMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","orgName","editUnlockedUntil","unlockMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["user","activeOrg","activeOrgRole","activeOrgWideRole","activeWorkspace","availableWorkspaces","impersonation"],"additionalProperties":false},{"type":"object","properties":{"mfaRequired":{"type":"boolean","enum":[true]},"challengeToken":{"type":"string"},"method":{"type":"string","enum":["passkey","totp"]},"methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["passkey","totp"]}},"recoveryCodesRemaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["mfaRequired","challengeToken","method","methods"],"additionalProperties":false}]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/password-reset-request":{"post":{"summary":"Passwort-Zurücksetzen anfordern","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"brand":{"description":"Kurzname der Marke, von deren Anmeldung die Anfrage kommt (/anmelden/<slug>). Wirkt nur für Mitglieder dieser Organisation mit geprüfter App-Marke.","type":"string","maxLength":80},"captchaToken":{"description":"Token des doCaptcha-Widgets auf dem Formular. Pflicht, sobald die API mit doCaptcha läuft (sonst 400, details.reason captcha_required oder captcha_failed).","type":"string","minLength":1,"maxLength":4096}},"required":["email"]}}}},"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/password-reset/{token}":{"get":{"summary":"Link zum Zurücksetzen prüfen","tags":["auth"],"description":"Sagt, ob der Link aus der E-Mail noch gilt, bevor jemand ein neues Passwort setzt.","parameters":[{"schema":{"type":"string","minLength":8},"in":"path","name":"token","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/password-reset-complete":{"post":{"summary":"Neues Passwort setzen","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":8},"newPassword":{"type":"string","minLength":4}},"required":["token","newPassword"]}}}},"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/sessions/revoke-others":{"post":{"summary":"Alle anderen Sitzungen beenden","tags":["auth"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"revoked":{"type":"number"}},"required":["revoked"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/change-password":{"post":{"summary":"Passwort ändern","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1},"newPassword":{"type":"string","minLength":4}},"required":["currentPassword","newPassword"]}}}},"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/users/me":{"patch":{"summary":"Eigenes Profil ändern","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"locale":{"type":"string","enum":["de-DE","fr-FR","en-US"]},"tourCompleted":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"locale":{"type":"string"},"isPlatformAdmin":{"type":"boolean"},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","locale","isPlatformAdmin","tourCompletedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/users/me/notification-preferences":{"get":{"summary":"Eigene Team-Mails lesen","tags":["auth"],"description":"Je Art (approvals, credentialExpiry, codeStock) an oder aus.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"approvals":{"type":"boolean"},"credentialExpiry":{"type":"boolean"},"codeStock":{"type":"boolean"},"ownerTickets":{"type":"boolean"},"ownerModuleRequests":{"type":"boolean"},"ownerOverdueInvoices":{"type":"boolean"}},"required":["approvals","credentialExpiry","codeStock"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Eigene Team-Mails an- und abschalten","tags":["auth"],"description":"Nur die übergebenen Arten ändern sich; die Glocke zeigt die Hinweise weiter.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"approvals":{"type":"boolean"},"credentialExpiry":{"type":"boolean"},"codeStock":{"type":"boolean"},"ownerTickets":{"type":"boolean"},"ownerModuleRequests":{"type":"boolean"},"ownerOverdueInvoices":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"approvals":{"type":"boolean"},"credentialExpiry":{"type":"boolean"},"codeStock":{"type":"boolean"},"ownerTickets":{"type":"boolean"},"ownerModuleRequests":{"type":"boolean"},"ownerOverdueInvoices":{"type":"boolean"}},"required":["approvals","credentialExpiry","codeStock"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/me":{"get":{"summary":"Eigene Sitzung lesen","tags":["auth"],"description":"Nutzer, aktive Organisation mit ihrem Funktionsumfang (`activeOrg.capabilities`, dasselbe Objekt wie in `GET /v1/orgs/{id}`), Rolle, aktiver Workspace.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopes":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["id","scopes","orgId","workspaceId"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"isPlatformAdmin":{"type":"boolean"},"accessExpiresAt":{"type":["string","null"]},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","isPlatformAdmin"],"additionalProperties":false},"activeOrg":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"onboardingCase":{"type":["string","null"]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"capabilities":{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"activeOrgRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"activeOrgWideRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"mfaEnrolled":{"type":"boolean"},"activeWorkspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"availableWorkspaces":{"type":"array","items":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["customer","pitch","test","internal"]}},"required":["id","slug","name"],"additionalProperties":false},"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["org","workspaces"],"additionalProperties":false}},"impersonation":{"anyOf":[{"type":"object","properties":{"superAdminUserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["read_only","write_allowed"]}},"required":["superAdminUserId","expiresAt","mode"],"additionalProperties":false},{"type":"null"}]},"customerMode":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":"string"},"editUnlockedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"unlockMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","orgName","editUnlockedUntil","unlockMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["user","activeOrg","activeOrgRole","activeOrgWideRole","activeWorkspace","availableWorkspaces","impersonation"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/passkeys/register-options":{"post":{"summary":"Passkey registrieren: Optionen","tags":["auth"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/passkeys/register-verify":{"post":{"summary":"Passkey registrieren: Bestätigung","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"response":{},"deviceName":{"type":"string","maxLength":80}},"required":["response"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"id":{"type":"string"}},"required":["ok","id"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/passkeys":{"get":{"summary":"Passkeys auflisten","tags":["auth"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"deviceName":{"type":["string","null"]},"createdAt":{"type":"string"},"lastUsedAt":{"type":["string","null"]}},"required":["id","deviceName","createdAt","lastUsedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/passkeys/{id}":{"delete":{"summary":"Passkey entfernen","tags":["auth"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/mfa/status":{"get":{"summary":"Zwei-Faktor-Status","tags":["auth"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"enrolled":{"type":"boolean"},"verifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"recoveryCodesRemaining":{"type":"number"}},"required":["enrolled","verifiedAt","recoveryCodesRemaining"],"additionalProperties":false}}}}}}},"/v1/auth/mfa/setup":{"post":{"summary":"Zwei-Faktor einrichten","tags":["auth"],"description":"Liefert Secret und QR-Code für eine Authenticator-App.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"otpauth":{"type":"string"},"secret":{"type":"string"},"recoveryCodes":{"type":"array","items":{"type":"string"}}},"required":["otpauth","secret","recoveryCodes"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/mfa/verify":{"post":{"summary":"Zwei-Faktor bestätigen","tags":["auth"],"description":"Aktiviert 2FA und gibt die Wiederherstellungscodes einmalig zurück.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":6,"maxLength":8}},"required":["code"]}}}},"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/auth/mfa/disable":{"post":{"summary":"Zwei-Faktor deaktivieren","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":6,"maxLength":20}},"required":["code"]}}}},"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/leads":{"post":{"summary":"Demo-Anfrage senden","tags":["public"],"description":"Kontaktformular der Website. Einwilligung ist Pflicht.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"company":{"type":"string","maxLength":200},"planInterest":{"type":"string","enum":["free","growth","enterprise"]},"message":{"type":"string","maxLength":4000},"source":{"type":"string","maxLength":80},"consent":{"type":"boolean"},"website":{"type":"string"},"captchaToken":{"type":"string","minLength":1,"maxLength":4096}},"required":["name","email"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["ok","id"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/redemptions/import":{"post":{"summary":"Nutzungen aus CSV importieren","tags":["redemptions"],"description":"Accepts `multipart/form-data` with a `file` part (≤ 10 MB) or `application/json` `{ \"csv\": \"…\" }`. Delimiter (`,` `;` tab) and header names are detected; see docs/redemptions.md for the recognised columns. Writes `redemptionLogged` events through the same ingest as the bulk API (externalId idempotency, pass resolution by id / serial / code). Editor role or above; session or API token. Rate limit 10/min. Not on the free plan (402).","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duplicates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unmatched":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"row":{"type":"object","properties":{"pass":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200}},"additionalProperties":false},"redeemedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["redemption","checkin","stamp","points"]},"points":{"type":"integer","minimum":-100000,"maximum":100000},"reward":{"type":"boolean"},"rewardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountCents":{"type":"integer","minimum":0,"maximum":100000000},"currency":{"type":"string","minLength":3,"maxLength":3},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locationName":{"type":"string","minLength":1,"maxLength":200},"locationRef":{"type":"string","minLength":1,"maxLength":80},"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","minLength":1,"maxLength":200},"note":{"type":"string","maxLength":2000},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"additionalProperties":false},"reason":{"type":"string"},"lastRedemptionAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["index","row","reason"],"additionalProperties":false}},"errors":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"row":{"type":"object","properties":{"pass":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200}},"additionalProperties":false},"redeemedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["redemption","checkin","stamp","points"]},"points":{"type":"integer","minimum":-100000,"maximum":100000},"reward":{"type":"boolean"},"rewardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountCents":{"type":"integer","minimum":0,"maximum":100000000},"currency":{"type":"string","minLength":3,"maxLength":3},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locationName":{"type":"string","minLength":1,"maxLength":200},"locationRef":{"type":"string","minLength":1,"maxLength":80},"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","minLength":1,"maxLength":200},"note":{"type":"string","maxLength":2000},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"additionalProperties":false},"reason":{"type":"string"},"lastRedemptionAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["index","row","reason"],"additionalProperties":false}},"mapping":{"type":"object","properties":{"delimiter":{"type":"string","enum":[",",";","\t"]},"columns":{"type":"object","propertyNames":{"type":"string","enum":["pass_id","serial","code","redeemed_at","amount","currency","location","location_id","campaign_id","external_id","note","kind","location_ref","points","reward"]},"additionalProperties":{"type":["string","null"]},"required":["pass_id","serial","code","redeemed_at","amount","currency","location","location_id","campaign_id","external_id","note","kind","location_ref","points","reward"]},"ignoredHeaders":{"type":"array","items":{"type":"string"}}},"required":["delimiter","columns","ignoredHeaders"],"additionalProperties":false},"parseErrors":{"type":"array","items":{"type":"object","properties":{"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"type":"string"}},"required":["line","reason"],"additionalProperties":false}},"preview":{"type":"array","items":{"type":"object","properties":{"pass":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200}},"additionalProperties":false},"redeemedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["redemption","checkin","stamp","points"]},"points":{"type":"integer","minimum":-100000,"maximum":100000},"reward":{"type":"boolean"},"rewardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountCents":{"type":"integer","minimum":0,"maximum":100000000},"currency":{"type":"string","minLength":3,"maxLength":3},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locationName":{"type":"string","minLength":1,"maxLength":200},"locationRef":{"type":"string","minLength":1,"maxLength":80},"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","minLength":1,"maxLength":200},"note":{"type":"string","maxLength":2000},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"additionalProperties":false}}},"required":["total","accepted","duplicates","unmatched","errors","mapping","parseErrors","preview"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/redemptions/import/preview":{"post":{"summary":"Nutzungs-CSV prüfen, ohne zu schreiben","tags":["redemptions"],"description":"Gleiche Eingabe wie der Import. Liefert die erkannte Spaltenzuordnung, die ersten 20 gelesenen Zeilen und wie viele Zeilen ohne Treffer oder doppelt wären. Es wird nichts geschrieben. Wie der Import nicht im Free-Plan (402).","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mapping":{"type":"object","properties":{"delimiter":{"type":"string","enum":[",",";","\t"]},"columns":{"type":"object","propertyNames":{"type":"string","enum":["pass_id","serial","code","redeemed_at","amount","currency","location","location_id","campaign_id","external_id","note","kind","location_ref","points","reward"]},"additionalProperties":{"type":["string","null"]},"required":["pass_id","serial","code","redeemed_at","amount","currency","location","location_id","campaign_id","external_id","note","kind","location_ref","points","reward"]},"ignoredHeaders":{"type":"array","items":{"type":"string"}}},"required":["delimiter","columns","ignoredHeaders"],"additionalProperties":false},"rowCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rows":{"type":"array","items":{"type":"object","properties":{"pass":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200}},"additionalProperties":false},"redeemedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["redemption","checkin","stamp","points"]},"points":{"type":"integer","minimum":-100000,"maximum":100000},"reward":{"type":"boolean"},"rewardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountCents":{"type":"integer","minimum":0,"maximum":100000000},"currency":{"type":"string","minLength":3,"maxLength":3},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locationName":{"type":"string","minLength":1,"maxLength":200},"locationRef":{"type":"string","minLength":1,"maxLength":80},"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","minLength":1,"maxLength":200},"note":{"type":"string","maxLength":2000},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"additionalProperties":false}},"parseErrors":{"type":"array","items":{"type":"object","properties":{"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"type":"string"}},"required":["line","reason"],"additionalProperties":false}},"unmatched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duplicates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["mapping","rowCount","rows","parseErrors","unmatched","duplicates"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/redemptions":{"post":{"summary":"Nutzungen melden (Sammelaufruf)","tags":["redemptions"],"description":"Up to 5,000 redemptions per call. Each row names the pass by `pass.id`, `pass.serial` or `pass.code` (resolved in that order, within the workspace). `externalId` (e.g. the receipt number) is the idempotency key per workspace: resending the same externalId is reported under `duplicates`, never stored twice. Rows without externalId are deduped on (pass, redeemedAt) inside the batch. `redeemedAt` defaults to now. Editor role or above; session or API token (`Authorization: Bearer dwlt_…`). Rate limit 60/min. Not on the free plan (402).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"redemptions":{"minItems":1,"maxItems":5000,"type":"array","items":{"type":"object","properties":{"pass":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200}}},"redeemedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["redemption","checkin","stamp","points"]},"points":{"type":"integer","minimum":-100000,"maximum":100000},"reward":{"type":"boolean"},"rewardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountCents":{"type":"integer","minimum":0,"maximum":100000000},"currency":{"type":"string","minLength":3,"maxLength":3},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locationName":{"type":"string","minLength":1,"maxLength":200},"locationRef":{"type":"string","minLength":1,"maxLength":80},"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","minLength":1,"maxLength":200},"note":{"type":"string","maxLength":2000},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}}}}},"required":["redemptions"]},"example":{"redemptions":[{"pass":{"serial":"7F3K-2Q9M-A1B2"},"redeemedAt":"2026-09-14T10:32:00+02:00","amountCents":1250,"currency":"EUR","locationName":"Filiale Innenstadt","externalId":"BON-2026-000123"},{"pass":{"code":"SOMMER25-8841"},"amountCents":890,"campaignId":"6f1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d","externalId":"BON-2026-000124"},{"pass":{"id":"0b7d8c9e-1f2a-4b3c-9d4e-5f6a7b8c9d0e"},"redeemedAt":"2026-09-14T11:05:00Z","note":"Stempelkarte voll"}]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duplicates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unmatched":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"row":{"type":"object","properties":{"pass":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200}},"additionalProperties":false},"redeemedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["redemption","checkin","stamp","points"]},"points":{"type":"integer","minimum":-100000,"maximum":100000},"reward":{"type":"boolean"},"rewardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountCents":{"type":"integer","minimum":0,"maximum":100000000},"currency":{"type":"string","minLength":3,"maxLength":3},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locationName":{"type":"string","minLength":1,"maxLength":200},"locationRef":{"type":"string","minLength":1,"maxLength":80},"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","minLength":1,"maxLength":200},"note":{"type":"string","maxLength":2000},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"additionalProperties":false},"reason":{"type":"string"},"lastRedemptionAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["index","row","reason"],"additionalProperties":false}},"errors":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"row":{"type":"object","properties":{"pass":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200}},"additionalProperties":false},"redeemedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["redemption","checkin","stamp","points"]},"points":{"type":"integer","minimum":-100000,"maximum":100000},"reward":{"type":"boolean"},"rewardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountCents":{"type":"integer","minimum":0,"maximum":100000000},"currency":{"type":"string","minLength":3,"maxLength":3},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locationName":{"type":"string","minLength":1,"maxLength":200},"locationRef":{"type":"string","minLength":1,"maxLength":80},"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","minLength":1,"maxLength":200},"note":{"type":"string","maxLength":2000},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":200},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"additionalProperties":false},"reason":{"type":"string"},"lastRedemptionAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["index","row","reason"],"additionalProperties":false}}},"required":["total","accepted","duplicates","unmatched","errors"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Nutzungen auflisten (neueste zuerst)","tags":["redemptions"],"description":"Cursor-Paginierung über `pagination.nextCursor`. Filter: `templateId`, `source` (exakt, mehrere durch Komma), `locationName` (Filiale, ohne Groß-/Kleinschreibung), `kind` (redemption | checkin | stamp; Zeilen ohne Art zählen als redemption), `campaignId`, `passId`, `from`/`to`. Jede Rolle im Workspace, auch im Free-Plan. `pass` ist null, wenn das Ereignis keinen Pass (mehr) hat.","parameters":[{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string"},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"passId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"campaignId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":400},"in":"query","name":"source","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"locationName","required":false},{"schema":{"type":"string","enum":["redemption","checkin","stamp","points"]},"in":"query","name":"kind","required":false},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"from","required":false},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"to","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"kind":{"type":"string","enum":["redemption","checkin","stamp","points"]},"pass":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"templateName":{"type":["string","null"]}},"required":["id","serial","templateName"],"additionalProperties":false},{"type":"null"}]},"amountCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currency":{"type":["string","null"]},"locationName":{"type":["string","null"]},"campaignId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"source":{"type":"string"},"externalId":{"type":["string","null"]},"actor":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["user","device"]},"label":{"type":"string"}},"required":["kind","label"],"additionalProperties":false},{"type":"null"}]}},"required":["id","occurredAt","kind","pass","amountCents","currency","locationName","campaignId","source","externalId","actor"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/redemptions/totals":{"get":{"summary":"Nutzungen zählen (mit den Filtern der Liste)","tags":["redemptions"],"description":"Anzahl und Summe der Beträge in Cent über alle Zeilen, die die Liste mit denselben Filtern zeigt. Jede Rolle im Workspace.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"passId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"campaignId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":400},"in":"query","name":"source","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"locationName","required":false},{"schema":{"type":"string","enum":["redemption","checkin","stamp","points"]},"in":"query","name":"kind","required":false},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"from","required":false},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"to","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count","amountCents"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/redemptions/export.csv":{"get":{"summary":"Nutzungen als CSV (mit den Filtern der Liste)","tags":["redemptions"],"description":"Eine Zeile je Nutzung, neueste zuerst, höchstens 50.000: `zeitpunkt;seriennummer;vorlage;art;betrag_cent;waehrung;filiale;quelle;kampagne_id;externe_id` (Zeitpunkt ISO 8601 in UTC). Semikolon, UTF-8 mit BOM und CRLF; Zellen, die mit = + - @ beginnen, bleiben Text. Jede Rolle im Workspace, jeder Export steht im Audit-Log (`redemptions.export`).","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"passId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"campaignId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","minLength":1,"maxLength":400},"in":"query","name":"source","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"locationName","required":false},{"schema":{"type":"string","enum":["redemption","checkin","stamp","points"]},"in":"query","name":"kind","required":false},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"from","required":false},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"to","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"CSV-Datei (text/csv)","content":{"application/json":{"schema":{"type":"string","description":"CSV-Datei (text/csv)"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/redemptions/locations":{"get":{"summary":"Filialen, die in den Nutzungen vorkommen","tags":["redemptions"],"description":"Jede Filiale (payload.locationName, ältere Zeilen payload.location, sonst die Filialnummer payload.locationRef) einmal, ohne Groß-/Kleinschreibung zusammengefasst, mit der Zahl der Nutzungen; häufigste zuerst, höchstens 500. `from`/`to` begrenzen den Zeitraum (Vorgabe: alle). Der Name passt als `locationName` in die Liste. Jede Rolle im Workspace.","parameters":[{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"from","required":false},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"to","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"locationName":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["locationName","count"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/redemptions/summary":{"get":{"summary":"Nutzungen im Zeitraum: gesamt, Umsatz, je Tag, je Filiale, je Quelle, wiederkehrende Gäste, Top-Vorlagen","tags":["redemptions"],"description":"`from`/`to`: Zeitstempel oder Kalendertag (YYYY-MM-DD, in der Zeitzone des Workspace: `from` ab Tagesbeginn, `to` bis Tagesende). Vorgabe: die letzten 30 Kalendertage einschließlich heute; höchstens 366 Tage (sonst 422). Jede Zahl zählt Nutzungen jeder Art (Einlösung, Einlass, Stempel) im Zeitraum; `checkins` und `stamps` sagen, wie viele davon Einlass bzw. Stempel sind. `byDay` hat einen Eintrag je Kalendertag von `from` bis `to`, die Summe ist `total`. `byLocation` fasst Filialen wie der Filter im Protokoll zusammen, plus eine Zeile ohne Filiale. `returning`: Pässe mit mindestens einer Nutzung im Zeitraum und davon die mit mindestens zwei. Jede Rolle im Workspace, auch im Free-Plan.","parameters":[{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"from","required":false},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"to","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"range":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"to":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","to"],"additionalProperties":false},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bySource":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["source","count"],"additionalProperties":false}},"byDay":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"day":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checkins":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stamps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["date","day","count","checkins","stamps"],"additionalProperties":false}},"byLocation":{"type":"array","items":{"type":"object","properties":{"locationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"locationName":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checkins":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stamps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["locationId","locationName","count","amountCents","checkins","stamps"],"additionalProperties":false}},"returning":{"type":"object","properties":{"uniquePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"returningPasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"repeatRate":{"type":"number"}},"required":["uniquePasses","returningPasses","repeatRate"],"additionalProperties":false},"topTemplates":{"type":"array","items":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateName":{"type":["string","null"]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templateId","templateName","count"],"additionalProperties":false}}},"required":["range","total","amountCents","bySource","byDay","byLocation","returning","topTemplates"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{id}/customers/summary":{"get":{"summary":"Kontakte zählen","tags":["customers"],"description":"Gesamt, mit aktiver Einwilligung und widerrufen.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"consented":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revoked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCollectedAt":{"type":["string","null"]}},"required":["total","consented","revoked","lastCollectedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{id}/customers/export.csv":{"get":{"summary":"Kontakte als CSV exportieren","tags":["customers"],"description":"Nur Kontakte mit aktiver Einwilligung. Jeder Export wird mit Zweck und Anzahl im Audit-Log festgehalten. Org-Admin.","parameters":[{"schema":{"type":"string","maxLength":200},"in":"query","name":"purpose","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/onboarding":{"get":{"summary":"Onboarding-Fortschritt","tags":["orgs"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"steps":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"done":{"type":"boolean"},"hint":{"type":"string"}},"required":["key","label","done","hint"],"additionalProperties":false}}},"required":["completed","total","steps"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/invoices":{"get":{"summary":"Rechnungen auflisten","tags":["orgs"],"description":"Ohne Entwürfe. Enthält, ob PDF und E-Rechnung vorliegen.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"number":{"type":["string","null"]},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"status":{"type":"string"},"issuedAt":{"type":["string","null"]},"dueAt":{"type":["string","null"]},"paidAt":{"type":["string","null"]},"hasPdf":{"type":"boolean"},"hasEinvoice":{"type":"boolean"},"einvoiceFilename":{"type":["string","null"]},"hasProof":{"type":"boolean"},"proofUploadedAt":{"type":["string","null"]}},"required":["id","number","amountCents","currency","status","issuedAt","dueAt","paidAt","hasPdf","hasEinvoice","einvoiceFilename","hasProof","proofUploadedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/invoices/{invoiceId}/payment-proof":{"post":{"summary":"Zahlungsnachweis hochladen","tags":["orgs"],"description":"PDF, PNG oder JPEG bis 10 MB. Die Rechnung wechselt in die Prüfung.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"invoiceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"number":{"type":["string","null"]},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"status":{"type":"string"},"issuedAt":{"type":["string","null"]},"dueAt":{"type":["string","null"]},"paidAt":{"type":["string","null"]},"hasPdf":{"type":"boolean"},"hasEinvoice":{"type":"boolean"},"einvoiceFilename":{"type":["string","null"]},"hasProof":{"type":"boolean"},"proofUploadedAt":{"type":["string","null"]}},"required":["id","number","amountCents","currency","status","issuedAt","dueAt","paidAt","hasPdf","hasEinvoice","einvoiceFilename","hasProof","proofUploadedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Zahlungsnachweis herunterladen","tags":["orgs"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"invoiceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/invoices/{invoiceId}/pdf":{"get":{"summary":"Rechnungs-PDF herunterladen","tags":["orgs"],"description":"Liefert eine kurzlebige signierte URL.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"invoiceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/invoices/{invoiceId}/einvoice":{"get":{"summary":"E-Rechnung herunterladen","tags":["orgs"],"description":"XRechnung (XML) oder ZUGFeRD (PDF), als signierte URL.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"invoiceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"filename":{"type":"string"}},"required":["url","filename"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/onboarding-case":{"put":{"summary":"Anwendungsfall und Kundentyp festlegen","tags":["orgs"],"description":"Speichert die Wahl aus dem ersten Login (/welcome): `case` ist der Anwendungsfall (`loyalty`, `coupon`, `membership`, `eventTicket` oder `skipped`), das optionale `accountKind` der Kundentyp (`agency` Agentur mit Kunden, `brand` eigene Marke, `small` Verein, Café oder kleines Geschäft). Ohne `accountKind` bleibt der gespeicherte Typ unverändert. Erlaubt ab Admin der ganzen Organisation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"case":{"type":"string","enum":["loyalty","coupon","membership","eventTicket","skipped"]},"accountKind":{"type":"string","enum":["agency","brand","small"]}},"required":["case"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"case":{"type":"string"},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"modules":{"type":"object","properties":{"loyalty":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"required":["enabled","since","source","requestedAt"],"additionalProperties":false}},"required":["loyalty"],"additionalProperties":false,"description":"Stand der Module danach; Treue schaltet sich bei der ersten Wahl `loyalty` eines neuen Kontos ein."}},"required":["case","accountKind","modules"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/modules":{"get":{"summary":"Module der Organisation","tags":["orgs"],"description":"Jedes Modul mit Stand: eingeschaltet seit, Quelle, offene Anfrage. Module schaltet doWallet ein; die Organisation fragt sie mit `POST /v1/orgs/{id}/modules/{key}/request` an. `canRequest`: die aufrufende Person darf anfragen (Admin der ganzen Organisation). Lesen darf jedes Mitglied der Organisation.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]},"key":{"type":"string","enum":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"description":"Modul: `loyalty` Treue, `landingPages` Landing-Seiten, `campaigns` Kampagnen, `flows` Automatisierungen, `audiences` Zielgruppen, `locations` Standorte, `codePools` Code-Listen, `api` Entwickler (API-Schlüssel, Webhooks, Anbindung)."},"label":{"type":"string"},"description":{"type":"string"}},"required":["enabled","since","source","requestedAt","key","label","description"],"additionalProperties":false}},"canRequest":{"type":"boolean"}},"required":["data","canRequest"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/modules/{key}/request":{"post":{"summary":"Modul anfragen","tags":["orgs"],"description":"Fragt ein Modul für die Organisation an (`loyalty` Treue, `landingPages` Landing-Seiten, `campaigns` Kampagnen, `flows` Automatisierungen, `audiences` Zielgruppen, `locations` Standorte, `codePools` Code-Listen, `api` Entwickler). doWallet schaltet es nach Absprache ein; die Anfrage erscheint dort in der Mitteilungszentrale. Erlaubt ab Admin der ganzen Organisation, nur mit Browser-Sitzung. Eine offene Anfrage bleibt bestehen (`created` false). Ist das Modul schon eingeschaltet: 409 mit `details.reason` `module_active`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","enum":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"]},"in":"path","name":"key","required":true,"description":"Modul: `loyalty` Treue, `landingPages` Landing-Seiten, `campaigns` Kampagnen, `flows` Automatisierungen, `audiences` Zielgruppen, `locations` Standorte, `codePools` Code-Listen, `api` Entwickler (API-Schlüssel, Webhooks, Anbindung)."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"module":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"required":["enabled","since","source","requestedAt"],"additionalProperties":false},"created":{"type":"boolean"}},"required":["module","created"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/usage":{"get":{"summary":"Verbrauch und Kontingente","tags":["orgs"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"passesThisMonth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pushesThisMonth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quotas":{"type":"object","properties":{"passesPerMonth":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"pushesPerMonth":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"storageBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"workspaces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"teamMembers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["passesPerMonth","pushesPerMonth","storageBytes","workspaces","teamMembers"],"additionalProperties":false}},"required":["passesThisMonth","pushesThisMonth","quotas"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs":{"get":{"summary":"Organisationen des Nutzers","tags":["orgs"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["active","trial","suspended","cancelled"]},"billingProfile":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"quotas":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"brandingLogoUrl":{"type":["string","null"]},"branding":{"default":{},"type":"object","properties":{"logoUrl":{"type":"string","format":"uri"},"logoWhiteUrl":{"type":"string","format":"uri"},"primaryColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"surfaceColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"textColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"mutedColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"fontFamily":{"type":"string","maxLength":80},"fontCssSrc":{"type":"string","format":"uri"},"poweredByDoWallet":{"type":"boolean"},"supportEmail":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"embedOrigins":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":200}},"appName":{"description":"Name der App statt „doWallet“ (App, Anmeldung, Team-Mails). Wirkt erst als geprüfte Marke.","type":"string","maxLength":80},"iconUrl":{"description":"Quadratisches App-Icon (Favicon, eingeklappte Seitenleiste, Home-Bildschirm).","type":"string","format":"uri"}},"additionalProperties":false},"entitlements":{"default":{"whiteLabel":false,"embedSdk":false,"scanner":false,"modules":{"loyalty":{"enabled":false,"since":null,"source":null,"requestedAt":null},"landingPages":{"enabled":false,"since":null,"source":null,"requestedAt":null},"campaigns":{"enabled":false,"since":null,"source":null,"requestedAt":null},"flows":{"enabled":false,"since":null,"source":null,"requestedAt":null},"audiences":{"enabled":false,"since":null,"source":null,"requestedAt":null},"locations":{"enabled":false,"since":null,"source":null,"requestedAt":null},"codePools":{"enabled":false,"since":null,"source":null,"requestedAt":null},"api":{"enabled":false,"since":null,"source":null,"requestedAt":null}}},"type":"object","properties":{"whiteLabel":{"default":false,"type":"boolean"},"embedSdk":{"default":false,"type":"boolean"},"scanner":{"default":false,"description":"Scanner für diese Organisation eingeschaltet (nur im Backoffice schaltbar).","type":"boolean"},"plan":{"type":"string","enum":["free","full"]},"platformDefaults":{"type":"object","properties":{"enabled":{"type":"boolean"},"blessedAt":{"type":"string"},"blessedByEmail":{"type":"string"}},"required":["enabled"],"additionalProperties":false},"whiteLabelAddon":{"type":"object","properties":{"booked":{"description":"Add-on White-Label gebucht.","type":"boolean"},"since":{"description":"Seit wann gebucht (ISO), null solange nicht gebucht.","type":["string","null"]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"whiteLabelLegacy":{"description":"Intern, nie in der Antwort.","type":"boolean"},"modules":{"description":"Module der Organisation; in der Antwort immer mit allen Modulen.","type":"object","properties":{"loyalty":{"description":"Treue: Stempelkarten, Mitglieder, Prämien und Automatik.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"landingPages":{"description":"Landing-Seiten: Gestaltete Landing-Seiten: eigene Texte, Stil, Bausteine und Bilder.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"campaigns":{"description":"Kampagnen: Mitteilungen und neue Inhalte an viele Pässe, mit Plan und Freigabe.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"flows":{"description":"Automatisierungen: Abläufe, die auf Ereignisse reagieren und Pässe von selbst aktualisieren.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"audiences":{"description":"Zielgruppen: Gespeicherte Zielgruppen für Kampagnen und Automatisierungen.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"locations":{"description":"Standorte: Filialen und Orte, Standort-Hinweise auf dem Pass.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"codePools":{"description":"Code-Listen: Codes importieren oder erzeugen und an Pässe vergeben.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"api":{"description":"Entwickler: API-Schlüssel, Webhooks und Anbindung.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}}},"additionalProperties":{}}},"required":["whiteLabel","embedSdk","scanner"],"additionalProperties":false},"capabilities":{"default":null,"anyOf":[{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."},{"type":"null"}]},"subdomain":{"default":null,"type":["string","null"]},"appBrand":{"default":null,"anyOf":[{"type":"object","properties":{"live":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string","description":"Kurzname der Organisation, Teil der Anmelde-Adresse /anmelden/<slug>."},"appName":{"type":"string"},"logoUrl":{"type":"string"},"logoWhiteUrl":{"type":["string","null"]},"iconUrl":{"type":["string","null"]},"primaryColor":{"type":"string","description":"Akzentfarbe als #rrggbb."},"poweredByDoWallet":{"type":"boolean"},"verifiedAt":{"type":"string"}},"required":["slug","appName","logoUrl","logoWhiteUrl","iconUrl","primaryColor","poweredByDoWallet","verifiedAt"],"additionalProperties":false},{"type":"null"}],"description":"Die wirksame App-Marke, null = doWallet."},"state":{"type":"string","enum":["notEntitled","incomplete","inReview","live","liveChangesPending"],"description":"notEntitled = ohne White-Label, incomplete = es fehlt etwas, inReview = wartet auf die Prüfung, live = geprüft, liveChangesPending = geprüft, Änderungen warten auf Prüfung."},"missing":{"type":"array","items":{"type":"string","enum":["appName","logoUrl","primaryColor"]},"description":"Was für eine Prüfung noch fehlt."},"verifiedAt":{"type":["string","null"]}},"required":["live","state","missing","verifiedAt"],"additionalProperties":false},{"type":"null"}]},"frozen":{"default":false,"type":"boolean"},"frozenReason":{"default":null,"type":["string","null"]},"paymentReminder":{"default":null,"anyOf":[{"type":"object","properties":{"active":{"type":"boolean"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":"string"},"since":{"type":"string"}},"additionalProperties":false},{"type":"null"}]},"auditRetentionDays":{"type":"string"},"accountKind":{"default":null,"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"overdue":{"default":null,"anyOf":[{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count","totalCents"],"additionalProperties":false},{"type":"null"}]},"billingSummary":{"default":null,"anyOf":[{"type":"object","properties":{"packageName":{"type":"string"},"tagline":{"type":["string","null"]},"badges":{"type":"array","items":{"type":"string"}},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"period":{"type":"string"},"durationMonths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"perMessageFeeMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":["string","null"]}},"required":["packageName","tagline","badges","priceCents","currency","period","durationMonths","perMessageFeeMicros","status"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","slug","name","status","billingProfile","quotas","brandingLogoUrl","branding","entitlements","capabilities","subdomain","appBrand","frozen","frozenReason","paymentReminder","auditRetentionDays","accountKind","overdue","billingSummary","createdAt","updatedAt","deletedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/me":{"get":{"summary":"Aktive Organisation","tags":["orgs"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["active","trial","suspended","cancelled"]},"billingProfile":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"quotas":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"brandingLogoUrl":{"type":["string","null"]},"branding":{"default":{},"type":"object","properties":{"logoUrl":{"type":"string","format":"uri"},"logoWhiteUrl":{"type":"string","format":"uri"},"primaryColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"surfaceColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"textColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"mutedColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"fontFamily":{"type":"string","maxLength":80},"fontCssSrc":{"type":"string","format":"uri"},"poweredByDoWallet":{"type":"boolean"},"supportEmail":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"embedOrigins":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":200}},"appName":{"description":"Name der App statt „doWallet“ (App, Anmeldung, Team-Mails). Wirkt erst als geprüfte Marke.","type":"string","maxLength":80},"iconUrl":{"description":"Quadratisches App-Icon (Favicon, eingeklappte Seitenleiste, Home-Bildschirm).","type":"string","format":"uri"}},"additionalProperties":false},"entitlements":{"default":{"whiteLabel":false,"embedSdk":false,"scanner":false,"modules":{"loyalty":{"enabled":false,"since":null,"source":null,"requestedAt":null},"landingPages":{"enabled":false,"since":null,"source":null,"requestedAt":null},"campaigns":{"enabled":false,"since":null,"source":null,"requestedAt":null},"flows":{"enabled":false,"since":null,"source":null,"requestedAt":null},"audiences":{"enabled":false,"since":null,"source":null,"requestedAt":null},"locations":{"enabled":false,"since":null,"source":null,"requestedAt":null},"codePools":{"enabled":false,"since":null,"source":null,"requestedAt":null},"api":{"enabled":false,"since":null,"source":null,"requestedAt":null}}},"type":"object","properties":{"whiteLabel":{"default":false,"type":"boolean"},"embedSdk":{"default":false,"type":"boolean"},"scanner":{"default":false,"description":"Scanner für diese Organisation eingeschaltet (nur im Backoffice schaltbar).","type":"boolean"},"plan":{"type":"string","enum":["free","full"]},"platformDefaults":{"type":"object","properties":{"enabled":{"type":"boolean"},"blessedAt":{"type":"string"},"blessedByEmail":{"type":"string"}},"required":["enabled"],"additionalProperties":false},"whiteLabelAddon":{"type":"object","properties":{"booked":{"description":"Add-on White-Label gebucht.","type":"boolean"},"since":{"description":"Seit wann gebucht (ISO), null solange nicht gebucht.","type":["string","null"]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"whiteLabelLegacy":{"description":"Intern, nie in der Antwort.","type":"boolean"},"modules":{"description":"Module der Organisation; in der Antwort immer mit allen Modulen.","type":"object","properties":{"loyalty":{"description":"Treue: Stempelkarten, Mitglieder, Prämien und Automatik.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"landingPages":{"description":"Landing-Seiten: Gestaltete Landing-Seiten: eigene Texte, Stil, Bausteine und Bilder.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"campaigns":{"description":"Kampagnen: Mitteilungen und neue Inhalte an viele Pässe, mit Plan und Freigabe.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"flows":{"description":"Automatisierungen: Abläufe, die auf Ereignisse reagieren und Pässe von selbst aktualisieren.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"audiences":{"description":"Zielgruppen: Gespeicherte Zielgruppen für Kampagnen und Automatisierungen.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"locations":{"description":"Standorte: Filialen und Orte, Standort-Hinweise auf dem Pass.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"codePools":{"description":"Code-Listen: Codes importieren oder erzeugen und an Pässe vergeben.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"api":{"description":"Entwickler: API-Schlüssel, Webhooks und Anbindung.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}}},"additionalProperties":{}}},"required":["whiteLabel","embedSdk","scanner"],"additionalProperties":false},"capabilities":{"default":null,"anyOf":[{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."},{"type":"null"}]},"subdomain":{"default":null,"type":["string","null"]},"appBrand":{"default":null,"anyOf":[{"type":"object","properties":{"live":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string","description":"Kurzname der Organisation, Teil der Anmelde-Adresse /anmelden/<slug>."},"appName":{"type":"string"},"logoUrl":{"type":"string"},"logoWhiteUrl":{"type":["string","null"]},"iconUrl":{"type":["string","null"]},"primaryColor":{"type":"string","description":"Akzentfarbe als #rrggbb."},"poweredByDoWallet":{"type":"boolean"},"verifiedAt":{"type":"string"}},"required":["slug","appName","logoUrl","logoWhiteUrl","iconUrl","primaryColor","poweredByDoWallet","verifiedAt"],"additionalProperties":false},{"type":"null"}],"description":"Die wirksame App-Marke, null = doWallet."},"state":{"type":"string","enum":["notEntitled","incomplete","inReview","live","liveChangesPending"],"description":"notEntitled = ohne White-Label, incomplete = es fehlt etwas, inReview = wartet auf die Prüfung, live = geprüft, liveChangesPending = geprüft, Änderungen warten auf Prüfung."},"missing":{"type":"array","items":{"type":"string","enum":["appName","logoUrl","primaryColor"]},"description":"Was für eine Prüfung noch fehlt."},"verifiedAt":{"type":["string","null"]}},"required":["live","state","missing","verifiedAt"],"additionalProperties":false},{"type":"null"}]},"frozen":{"default":false,"type":"boolean"},"frozenReason":{"default":null,"type":["string","null"]},"paymentReminder":{"default":null,"anyOf":[{"type":"object","properties":{"active":{"type":"boolean"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":"string"},"since":{"type":"string"}},"additionalProperties":false},{"type":"null"}]},"auditRetentionDays":{"type":"string"},"accountKind":{"default":null,"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"overdue":{"default":null,"anyOf":[{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count","totalCents"],"additionalProperties":false},{"type":"null"}]},"billingSummary":{"default":null,"anyOf":[{"type":"object","properties":{"packageName":{"type":"string"},"tagline":{"type":["string","null"]},"badges":{"type":"array","items":{"type":"string"}},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"period":{"type":"string"},"durationMonths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"perMessageFeeMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":["string","null"]}},"required":["packageName","tagline","badges","priceCents","currency","period","durationMonths","perMessageFeeMicros","status"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","slug","name","status","billingProfile","quotas","brandingLogoUrl","branding","entitlements","capabilities","subdomain","appBrand","frozen","frozenReason","paymentReminder","auditRetentionDays","accountKind","overdue","billingSummary","createdAt","updatedAt","deletedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}":{"get":{"summary":"Organisation lesen","tags":["orgs"],"description":"Name, Status, Branding, Freigaben und `capabilities`, der Funktionsumfang: Branche (`industry`), erlaubte Pass-Typen (`passTypes`, nie leer, in der Reihenfolge der Branche), Module (`modules`: loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api, je an oder aus), `scanner`, `whiteLabel`, `plan` und `accountKind`. Ist ein Modul aus, antworten seine Routen 403 `module_disabled`; eine neue Vorlage eines nicht erlaubten Pass-Typs 403 `pass_type_not_allowed`. Rechnungsdaten nur für Mitglieder der ganzen Organisation.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["active","trial","suspended","cancelled"]},"billingProfile":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"quotas":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"brandingLogoUrl":{"type":["string","null"]},"branding":{"default":{},"type":"object","properties":{"logoUrl":{"type":"string","format":"uri"},"logoWhiteUrl":{"type":"string","format":"uri"},"primaryColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"surfaceColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"textColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"mutedColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"fontFamily":{"type":"string","maxLength":80},"fontCssSrc":{"type":"string","format":"uri"},"poweredByDoWallet":{"type":"boolean"},"supportEmail":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"embedOrigins":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":200}},"appName":{"description":"Name der App statt „doWallet“ (App, Anmeldung, Team-Mails). Wirkt erst als geprüfte Marke.","type":"string","maxLength":80},"iconUrl":{"description":"Quadratisches App-Icon (Favicon, eingeklappte Seitenleiste, Home-Bildschirm).","type":"string","format":"uri"}},"additionalProperties":false},"entitlements":{"default":{"whiteLabel":false,"embedSdk":false,"scanner":false,"modules":{"loyalty":{"enabled":false,"since":null,"source":null,"requestedAt":null},"landingPages":{"enabled":false,"since":null,"source":null,"requestedAt":null},"campaigns":{"enabled":false,"since":null,"source":null,"requestedAt":null},"flows":{"enabled":false,"since":null,"source":null,"requestedAt":null},"audiences":{"enabled":false,"since":null,"source":null,"requestedAt":null},"locations":{"enabled":false,"since":null,"source":null,"requestedAt":null},"codePools":{"enabled":false,"since":null,"source":null,"requestedAt":null},"api":{"enabled":false,"since":null,"source":null,"requestedAt":null}}},"type":"object","properties":{"whiteLabel":{"default":false,"type":"boolean"},"embedSdk":{"default":false,"type":"boolean"},"scanner":{"default":false,"description":"Scanner für diese Organisation eingeschaltet (nur im Backoffice schaltbar).","type":"boolean"},"plan":{"type":"string","enum":["free","full"]},"platformDefaults":{"type":"object","properties":{"enabled":{"type":"boolean"},"blessedAt":{"type":"string"},"blessedByEmail":{"type":"string"}},"required":["enabled"],"additionalProperties":false},"whiteLabelAddon":{"type":"object","properties":{"booked":{"description":"Add-on White-Label gebucht.","type":"boolean"},"since":{"description":"Seit wann gebucht (ISO), null solange nicht gebucht.","type":["string","null"]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"whiteLabelLegacy":{"description":"Intern, nie in der Antwort.","type":"boolean"},"modules":{"description":"Module der Organisation; in der Antwort immer mit allen Modulen.","type":"object","properties":{"loyalty":{"description":"Treue: Stempelkarten, Mitglieder, Prämien und Automatik.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"landingPages":{"description":"Landing-Seiten: Gestaltete Landing-Seiten: eigene Texte, Stil, Bausteine und Bilder.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"campaigns":{"description":"Kampagnen: Mitteilungen und neue Inhalte an viele Pässe, mit Plan und Freigabe.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"flows":{"description":"Automatisierungen: Abläufe, die auf Ereignisse reagieren und Pässe von selbst aktualisieren.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"audiences":{"description":"Zielgruppen: Gespeicherte Zielgruppen für Kampagnen und Automatisierungen.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"locations":{"description":"Standorte: Filialen und Orte, Standort-Hinweise auf dem Pass.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"codePools":{"description":"Code-Listen: Codes importieren oder erzeugen und an Pässe vergeben.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"api":{"description":"Entwickler: API-Schlüssel, Webhooks und Anbindung.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}}},"additionalProperties":{}}},"required":["whiteLabel","embedSdk","scanner"],"additionalProperties":false},"capabilities":{"default":null,"anyOf":[{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."},{"type":"null"}]},"subdomain":{"default":null,"type":["string","null"]},"appBrand":{"default":null,"anyOf":[{"type":"object","properties":{"live":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string","description":"Kurzname der Organisation, Teil der Anmelde-Adresse /anmelden/<slug>."},"appName":{"type":"string"},"logoUrl":{"type":"string"},"logoWhiteUrl":{"type":["string","null"]},"iconUrl":{"type":["string","null"]},"primaryColor":{"type":"string","description":"Akzentfarbe als #rrggbb."},"poweredByDoWallet":{"type":"boolean"},"verifiedAt":{"type":"string"}},"required":["slug","appName","logoUrl","logoWhiteUrl","iconUrl","primaryColor","poweredByDoWallet","verifiedAt"],"additionalProperties":false},{"type":"null"}],"description":"Die wirksame App-Marke, null = doWallet."},"state":{"type":"string","enum":["notEntitled","incomplete","inReview","live","liveChangesPending"],"description":"notEntitled = ohne White-Label, incomplete = es fehlt etwas, inReview = wartet auf die Prüfung, live = geprüft, liveChangesPending = geprüft, Änderungen warten auf Prüfung."},"missing":{"type":"array","items":{"type":"string","enum":["appName","logoUrl","primaryColor"]},"description":"Was für eine Prüfung noch fehlt."},"verifiedAt":{"type":["string","null"]}},"required":["live","state","missing","verifiedAt"],"additionalProperties":false},{"type":"null"}]},"frozen":{"default":false,"type":"boolean"},"frozenReason":{"default":null,"type":["string","null"]},"paymentReminder":{"default":null,"anyOf":[{"type":"object","properties":{"active":{"type":"boolean"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":"string"},"since":{"type":"string"}},"additionalProperties":false},{"type":"null"}]},"auditRetentionDays":{"type":"string"},"accountKind":{"default":null,"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"overdue":{"default":null,"anyOf":[{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count","totalCents"],"additionalProperties":false},{"type":"null"}]},"billingSummary":{"default":null,"anyOf":[{"type":"object","properties":{"packageName":{"type":"string"},"tagline":{"type":["string","null"]},"badges":{"type":"array","items":{"type":"string"}},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"period":{"type":"string"},"durationMonths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"perMessageFeeMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":["string","null"]}},"required":["packageName","tagline","badges","priceCents","currency","period","durationMonths","perMessageFeeMicros","status"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","slug","name","status","billingProfile","quotas","brandingLogoUrl","branding","entitlements","capabilities","subdomain","appBrand","frozen","frozenReason","paymentReminder","auditRetentionDays","accountKind","overdue","billingSummary","createdAt","updatedAt","deletedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Organisation ändern","tags":["orgs"],"description":"Name, Rechnungsprofil (USt-ID, Adresse, Rechnungs-E-Mail; feldweise gemergt, ein leerer Text entfernt ein Feld) und Kundentyp `accountKind` (`agency`, `brand`, `small`; `null` = unbekannt). Erlaubt ab Admin der ganzen Organisation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"billingProfile":{"type":"object","properties":{"vatId":{"type":"string","maxLength":40},"address":{"type":"string","maxLength":500},"contactEmail":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"string","enum":[""]}]}}},"brandingLogoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["active","trial","suspended","cancelled"]},"billingProfile":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"quotas":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"brandingLogoUrl":{"type":["string","null"]},"branding":{"default":{},"type":"object","properties":{"logoUrl":{"type":"string","format":"uri"},"logoWhiteUrl":{"type":"string","format":"uri"},"primaryColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"surfaceColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"textColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"mutedColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"fontFamily":{"type":"string","maxLength":80},"fontCssSrc":{"type":"string","format":"uri"},"poweredByDoWallet":{"type":"boolean"},"supportEmail":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"embedOrigins":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":200}},"appName":{"description":"Name der App statt „doWallet“ (App, Anmeldung, Team-Mails). Wirkt erst als geprüfte Marke.","type":"string","maxLength":80},"iconUrl":{"description":"Quadratisches App-Icon (Favicon, eingeklappte Seitenleiste, Home-Bildschirm).","type":"string","format":"uri"}},"additionalProperties":false},"entitlements":{"default":{"whiteLabel":false,"embedSdk":false,"scanner":false,"modules":{"loyalty":{"enabled":false,"since":null,"source":null,"requestedAt":null},"landingPages":{"enabled":false,"since":null,"source":null,"requestedAt":null},"campaigns":{"enabled":false,"since":null,"source":null,"requestedAt":null},"flows":{"enabled":false,"since":null,"source":null,"requestedAt":null},"audiences":{"enabled":false,"since":null,"source":null,"requestedAt":null},"locations":{"enabled":false,"since":null,"source":null,"requestedAt":null},"codePools":{"enabled":false,"since":null,"source":null,"requestedAt":null},"api":{"enabled":false,"since":null,"source":null,"requestedAt":null}}},"type":"object","properties":{"whiteLabel":{"default":false,"type":"boolean"},"embedSdk":{"default":false,"type":"boolean"},"scanner":{"default":false,"description":"Scanner für diese Organisation eingeschaltet (nur im Backoffice schaltbar).","type":"boolean"},"plan":{"type":"string","enum":["free","full"]},"platformDefaults":{"type":"object","properties":{"enabled":{"type":"boolean"},"blessedAt":{"type":"string"},"blessedByEmail":{"type":"string"}},"required":["enabled"],"additionalProperties":false},"whiteLabelAddon":{"type":"object","properties":{"booked":{"description":"Add-on White-Label gebucht.","type":"boolean"},"since":{"description":"Seit wann gebucht (ISO), null solange nicht gebucht.","type":["string","null"]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"whiteLabelLegacy":{"description":"Intern, nie in der Antwort.","type":"boolean"},"modules":{"description":"Module der Organisation; in der Antwort immer mit allen Modulen.","type":"object","properties":{"loyalty":{"description":"Treue: Stempelkarten, Mitglieder, Prämien und Automatik.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"landingPages":{"description":"Landing-Seiten: Gestaltete Landing-Seiten: eigene Texte, Stil, Bausteine und Bilder.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"campaigns":{"description":"Kampagnen: Mitteilungen und neue Inhalte an viele Pässe, mit Plan und Freigabe.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"flows":{"description":"Automatisierungen: Abläufe, die auf Ereignisse reagieren und Pässe von selbst aktualisieren.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"audiences":{"description":"Zielgruppen: Gespeicherte Zielgruppen für Kampagnen und Automatisierungen.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"locations":{"description":"Standorte: Filialen und Orte, Standort-Hinweise auf dem Pass.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"codePools":{"description":"Code-Listen: Codes importieren oder erzeugen und an Pässe vergeben.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}},"api":{"description":"Entwickler: API-Schlüssel, Webhooks und Anbindung.","type":"object","properties":{"enabled":{"type":"boolean","description":"Modul eingeschaltet."},"since":{"description":"Seit wann eingeschaltet (ISO), null solange aus.","type":["string","null"]},"source":{"anyOf":[{"type":"string","enum":["backoffice","bestand","signup","paket"],"description":"Wie das Modul eingeschaltet wurde: `backoffice` von doWallet, `bestand` beim Einführen der Module übernommen, `signup` bei der Anmeldung mit dem Anwendungsfall Treue, `paket` mit dem zugewiesenen Paket."},{"type":"null"}]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":{}}},"additionalProperties":{}}},"required":["whiteLabel","embedSdk","scanner"],"additionalProperties":false},"capabilities":{"default":null,"anyOf":[{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."},{"type":"null"}]},"subdomain":{"default":null,"type":["string","null"]},"appBrand":{"default":null,"anyOf":[{"type":"object","properties":{"live":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string","description":"Kurzname der Organisation, Teil der Anmelde-Adresse /anmelden/<slug>."},"appName":{"type":"string"},"logoUrl":{"type":"string"},"logoWhiteUrl":{"type":["string","null"]},"iconUrl":{"type":["string","null"]},"primaryColor":{"type":"string","description":"Akzentfarbe als #rrggbb."},"poweredByDoWallet":{"type":"boolean"},"verifiedAt":{"type":"string"}},"required":["slug","appName","logoUrl","logoWhiteUrl","iconUrl","primaryColor","poweredByDoWallet","verifiedAt"],"additionalProperties":false},{"type":"null"}],"description":"Die wirksame App-Marke, null = doWallet."},"state":{"type":"string","enum":["notEntitled","incomplete","inReview","live","liveChangesPending"],"description":"notEntitled = ohne White-Label, incomplete = es fehlt etwas, inReview = wartet auf die Prüfung, live = geprüft, liveChangesPending = geprüft, Änderungen warten auf Prüfung."},"missing":{"type":"array","items":{"type":"string","enum":["appName","logoUrl","primaryColor"]},"description":"Was für eine Prüfung noch fehlt."},"verifiedAt":{"type":["string","null"]}},"required":["live","state","missing","verifiedAt"],"additionalProperties":false},{"type":"null"}]},"frozen":{"default":false,"type":"boolean"},"frozenReason":{"default":null,"type":["string","null"]},"paymentReminder":{"default":null,"anyOf":[{"type":"object","properties":{"active":{"type":"boolean"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":"string"},"since":{"type":"string"}},"additionalProperties":false},{"type":"null"}]},"auditRetentionDays":{"type":"string"},"accountKind":{"default":null,"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"overdue":{"default":null,"anyOf":[{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count","totalCents"],"additionalProperties":false},{"type":"null"}]},"billingSummary":{"default":null,"anyOf":[{"type":"object","properties":{"packageName":{"type":"string"},"tagline":{"type":["string","null"]},"badges":{"type":"array","items":{"type":"string"}},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"period":{"type":"string"},"durationMonths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"perMessageFeeMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":["string","null"]}},"required":["packageName","tagline","badges","priceCents","currency","period","durationMonths","perMessageFeeMicros","status"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","slug","name","status","billingProfile","quotas","brandingLogoUrl","branding","entitlements","capabilities","subdomain","appBrand","frozen","frozenReason","paymentReminder","auditRetentionDays","accountKind","overdue","billingSummary","createdAt","updatedAt","deletedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/branding":{"patch":{"summary":"Marke ändern","tags":["orgs"],"description":"Logo, Farben, Schrift, Support-E-Mail, App-Name und App-Icon der Organisation, als Merge-Patch: nur gesendete Felder ändern sich, `null` entfernt ein Feld. Erlaubt ab Admin der ganzen Organisation. `poweredByDoWallet: false` blendet „Powered by doWallet“ auf Landing-Seiten und in der App aus und braucht die White-Label-Freigabe (sonst 403). App-Name, Logos, Icon und Primärfarbe wirken in App, Anmeldung und Team-Mails erst, wenn doWallet die Marke geprüft hat (`appBrand` in der Org-Antwort).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"logoWhiteUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"primaryColor":{"anyOf":[{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},{"type":"null"}]},"surfaceColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"textColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"mutedColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"fontFamily":{"type":"string","maxLength":80},"fontCssSrc":{"type":"string","format":"uri"},"poweredByDoWallet":{"type":"boolean"},"supportEmail":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"embedOrigins":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":200}},"appName":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"iconUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"type":"string","format":"uri"},"logoWhiteUrl":{"type":"string","format":"uri"},"primaryColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"surfaceColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"textColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"mutedColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"fontFamily":{"type":"string","maxLength":80},"fontCssSrc":{"type":"string","format":"uri"},"poweredByDoWallet":{"type":"boolean"},"supportEmail":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"embedOrigins":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":200}},"appName":{"description":"Name der App statt „doWallet“ (App, Anmeldung, Team-Mails). Wirkt erst als geprüfte Marke.","type":"string","maxLength":80},"iconUrl":{"description":"Quadratisches App-Icon (Favicon, eingeklappte Seitenleiste, Home-Bildschirm).","type":"string","format":"uri"}},"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/white-label/request":{"post":{"summary":"White-Label anfragen","tags":["orgs"],"description":"Fragt das Add-on White-Label für die Organisation an. doWallet bucht es nach Absprache; bis dahin bleibt „Powered by doWallet“ stehen. Erlaubt ab Admin der ganzen Organisation, auch Plattform-Admins nur mit Mitgliedschaft oder in einer übernommenen Sitzung (ohne bucht das Backoffice direkt). Eine offene Anfrage bleibt bestehen (`created` false). Ist White-Label schon gebucht oder im Paket enthalten: 409 mit `details.reason` `white_label_active`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"whiteLabelAddon":{"type":"object","properties":{"booked":{"description":"Add-on White-Label gebucht.","type":"boolean"},"since":{"description":"Seit wann gebucht (ISO), null solange nicht gebucht.","type":["string","null"]},"requestedAt":{"description":"Offene Anfrage der Organisation (ISO), null = keine.","type":["string","null"]}},"additionalProperties":false},"created":{"type":"boolean"}},"required":["whiteLabelAddon","created"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/branding/logo":{"post":{"summary":"Logo der Marke hochladen","tags":["orgs"],"description":"Multipart mit `file` (SVG, PNG, WebP oder JPEG, höchstens 1 MB) und `slot`: `light` (Standard, für helle Flächen, setzt `logoUrl`), `white` (weißes Logo für dunkle Flächen, setzt `logoWhiteUrl`) oder `icon` (quadratisches App-Icon, als Rastergrafik ab 180 × 180 Pixel, setzt `iconUrl`; sonst 422). Erlaubt ab Admin der ganzen Organisation.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"branding":{"type":"object","properties":{"logoUrl":{"type":"string","format":"uri"},"logoWhiteUrl":{"type":"string","format":"uri"},"primaryColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"surfaceColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"textColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"mutedColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"fontFamily":{"type":"string","maxLength":80},"fontCssSrc":{"type":"string","format":"uri"},"poweredByDoWallet":{"type":"boolean"},"supportEmail":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"embedOrigins":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":200}},"appName":{"description":"Name der App statt „doWallet“ (App, Anmeldung, Team-Mails). Wirkt erst als geprüfte Marke.","type":"string","maxLength":80},"iconUrl":{"description":"Quadratisches App-Icon (Favicon, eingeklappte Seitenleiste, Home-Bildschirm).","type":"string","format":"uri"}},"additionalProperties":false}},"required":["url","branding"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/public/branding-assets/{orgId}/{file}":{"get":{"summary":"Branding-Datei","tags":["public"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true},{"schema":{"type":"string","pattern":"^(light|white|icon)-[a-z0-9]+\\.(svg|png|webp|jpg)$"},"in":"path","name":"file","required":true}],"responses":{"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/public/orgs/{id}/branding":{"get":{"summary":"Marke einer Organisation (öffentlich)","tags":["public"],"description":"Logo, weißes Logo, Farben und Schrift der Organisation, dazu `poweredByDoWallet` (false nur mit White-Label-Freigabe). Eingefroren oder gelöscht 404.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"type":"string","format":"uri"},"logoWhiteUrl":{"type":"string","format":"uri"},"primaryColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"surfaceColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"textColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"mutedColor":{"type":"string","pattern":"^#[0-9a-fA-F]{3,8}$"},"fontFamily":{"type":"string","maxLength":80},"fontCssSrc":{"type":"string","format":"uri"},"appName":{"description":"Name der App statt „doWallet“ (App, Anmeldung, Team-Mails). Wirkt erst als geprüfte Marke.","type":"string","maxLength":80},"iconUrl":{"description":"Quadratisches App-Icon (Favicon, eingeklappte Seitenleiste, Home-Bildschirm).","type":"string","format":"uri"},"name":{"type":"string"},"poweredByDoWallet":{"type":"boolean"}},"required":["name","poweredByDoWallet"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/public/app-brand/{slug}":{"get":{"summary":"App-Marke zu einem Kurznamen (öffentlich)","tags":["public"],"description":"Die geprüfte App-Marke einer Organisation mit White-Label: App-Name, Logos, App-Icon, Akzentfarbe und `poweredByDoWallet`. Unbekannt, ohne White-Label, nicht von doWallet geprüft, eingefroren, gesperrt oder gelöscht: 404. Nie Support-E-Mail, Texte oder Links.","parameters":[{"schema":{"type":"string","maxLength":80},"in":"path","name":"slug","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","description":"Kurzname der Organisation, Teil der Anmelde-Adresse /anmelden/<slug>."},"appName":{"type":"string"},"logoUrl":{"type":"string"},"logoWhiteUrl":{"type":["string","null"]},"iconUrl":{"type":["string","null"]},"primaryColor":{"type":"string","description":"Akzentfarbe als #rrggbb."},"poweredByDoWallet":{"type":"boolean"}},"required":["slug","appName","logoUrl","logoWhiteUrl","iconUrl","primaryColor","poweredByDoWallet"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/public/app-brand/by-subdomain/{sub}":{"get":{"summary":"App-Marke zu einer Subdomain (öffentlich)","tags":["public"],"description":"Die geprüfte App-Marke einer Organisation mit White-Label: App-Name, Logos, App-Icon, Akzentfarbe und `poweredByDoWallet`. Unbekannt, ohne White-Label, nicht von doWallet geprüft, eingefroren, gesperrt oder gelöscht: 404. Nie Support-E-Mail, Texte oder Links. Die Subdomain muss vergeben und aktiv sein.","parameters":[{"schema":{"type":"string","maxLength":63},"in":"path","name":"sub","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","description":"Kurzname der Organisation, Teil der Anmelde-Adresse /anmelden/<slug>."},"appName":{"type":"string"},"logoUrl":{"type":"string"},"logoWhiteUrl":{"type":["string","null"]},"iconUrl":{"type":["string","null"]},"primaryColor":{"type":"string","description":"Akzentfarbe als #rrggbb."},"poweredByDoWallet":{"type":"boolean"}},"required":["slug","appName","logoUrl","logoWhiteUrl","iconUrl","primaryColor","poweredByDoWallet"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/workspaces":{"get":{"summary":"Workspaces auflisten","tags":["workspaces"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"type":["string","null"]},"environment":{"type":"string","enum":["production","sandbox"]},"logoUrl":{"default":null,"type":["string","null"]},"stage":{"type":"string","enum":["test","live"]},"liveAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"credentialMode":{"type":"string","enum":["inherit","own"]},"pinnedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastOpenedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","slug","name","timezone","defaultLocale","brandColor","environment","logoUrl","stage","liveAt","archivedAt","credentialMode","createdAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Workspace anlegen","tags":["workspaces"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","minLength":2,"maxLength":60,"pattern":"^[a-z0-9-]+$"},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"credentialMode":{"type":"string","enum":["inherit","own"]}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"type":["string","null"]},"environment":{"type":"string","enum":["production","sandbox"]},"logoUrl":{"default":null,"type":["string","null"]},"stage":{"type":"string","enum":["test","live"]},"liveAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"credentialMode":{"type":"string","enum":["inherit","own"]},"pinnedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastOpenedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","slug","name","timezone","defaultLocale","brandColor","environment","logoUrl","stage","liveAt","archivedAt","credentialMode","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{id}":{"get":{"summary":"Workspace lesen","tags":["workspaces"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"type":["string","null"]},"environment":{"type":"string","enum":["production","sandbox"]},"logoUrl":{"default":null,"type":["string","null"]},"stage":{"type":"string","enum":["test","live"]},"liveAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"credentialMode":{"type":"string","enum":["inherit","own"]},"pinnedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastOpenedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","slug","name","timezone","defaultLocale","brandColor","environment","logoUrl","stage","liveAt","archivedAt","credentialMode","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Workspace ändern","tags":["workspaces"],"description":"Name, Zeitzone, Standardsprache, Sandbox oder Production.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"anyOf":[{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},{"type":"null"}]},"environment":{"type":"string","enum":["production","sandbox"]},"stage":{"type":"string","enum":["test","live"]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"type":["string","null"]},"environment":{"type":"string","enum":["production","sandbox"]},"logoUrl":{"default":null,"type":["string","null"]},"stage":{"type":"string","enum":["test","live"]},"liveAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"credentialMode":{"type":"string","enum":["inherit","own"]},"pinnedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastOpenedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","slug","name","timezone","defaultLocale","brandColor","environment","logoUrl","stage","liveAt","archivedAt","credentialMode","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{id}/pin":{"put":{"summary":"Workspace anpinnen","tags":["workspaces"],"description":"Pinnt den Workspace für die angemeldete Person im Menü an. Höchstens drei je Organisation, sonst 409 pin_limit.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"type":["string","null"]},"environment":{"type":"string","enum":["production","sandbox"]},"logoUrl":{"default":null,"type":["string","null"]},"stage":{"type":"string","enum":["test","live"]},"liveAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"credentialMode":{"type":"string","enum":["inherit","own"]},"pinnedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastOpenedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","slug","name","timezone","defaultLocale","brandColor","environment","logoUrl","stage","liveAt","archivedAt","credentialMode","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Workspace lösen","tags":["workspaces"],"description":"Nimmt den Workspace für die angemeldete Person aus „Angepinnt“. Idempotent.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"type":["string","null"]},"environment":{"type":"string","enum":["production","sandbox"]},"logoUrl":{"default":null,"type":["string","null"]},"stage":{"type":"string","enum":["test","live"]},"liveAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"credentialMode":{"type":"string","enum":["inherit","own"]},"pinnedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastOpenedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","slug","name","timezone","defaultLocale","brandColor","environment","logoUrl","stage","liveAt","archivedAt","credentialMode","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{id}/archive":{"post":{"summary":"Workspace archivieren","tags":["workspaces"],"description":"Setzt den Workspace auf archiviert. Seine aktiven Pässe laufen sofort ab (Wallet zeigt „Abgelaufen“), nichts wird entwertet oder gelöscht. Geplante Kampagnen gehen zurück in den Entwurf, aktive Automatisierungen werden pausiert. Ein archivierter Workspace stellt keine Pässe aus (409 `workspace_archived`) und zählt nicht gegen die Workspace-Grenze. Der letzte offene Workspace einer Organisation lässt sich nicht archivieren (409). Wiederholt ohne Wirkung. Nur Admins der ganzen Organisation.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"type":["string","null"]},"environment":{"type":"string","enum":["production","sandbox"]},"logoUrl":{"default":null,"type":["string","null"]},"stage":{"type":"string","enum":["test","live"]},"liveAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"credentialMode":{"type":"string","enum":["inherit","own"]},"pinnedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastOpenedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiredPasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","orgId","slug","name","timezone","defaultLocale","brandColor","environment","logoUrl","stage","liveAt","archivedAt","credentialMode","createdAt","expiredPasses"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{id}/unarchive":{"post":{"summary":"Workspace reaktivieren","tags":["workspaces"],"description":"Öffnet einen archivierten Workspace wieder. Die Workspace-Grenze des Pakets gilt (402 `workspace_limit_reached`). Seine Pässe bleiben abgelaufen, Kampagnen und Automatisierungen bleiben, wie sie sind. Nur Admins der ganzen Organisation.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"defaultLocale":{"type":"string"},"brandColor":{"type":["string","null"]},"environment":{"type":"string","enum":["production","sandbox"]},"logoUrl":{"default":null,"type":["string","null"]},"stage":{"type":"string","enum":["test","live"]},"liveAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"credentialMode":{"type":"string","enum":["inherit","own"]},"pinnedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastOpenedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","slug","name","timezone","defaultLocale","brandColor","environment","logoUrl","stage","liveAt","archivedAt","credentialMode","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{id}/branding/logo":{"post":{"summary":"Logo des Arbeitsbereichs hochladen","tags":["workspaces"],"description":"Multipart mit `file` (SVG, PNG, WebP oder JPEG, höchstens 1 MB). Das Logo gehört zu diesem Arbeitsbereich (bei Agenturen: dem Kunden) und steht auf seinen Landing-Seiten vor dem Logo der Organisation. Erlaubt für Admins der ganzen Organisation und Admins dieses Arbeitsbereichs.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"type":"string"}},"required":["logoUrl"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Logo des Arbeitsbereichs entfernen","tags":["workspaces"],"description":"Entfernt das Logo dieses Arbeitsbereichs; seine Landing-Seiten zeigen danach wieder das Logo der Organisation. Erlaubt für Admins der ganzen Organisation und Admins dieses Arbeitsbereichs.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/public/branding-assets/workspaces/{workspaceId}/{file}":{"get":{"summary":"Logo eines Arbeitsbereichs","tags":["public"],"description":"Öffentliche Bilddatei des Logos, das `POST /v1/workspaces/{id}/branding/logo` hochgeladen hat. Unveränderlich, lange zwischenspeicherbar.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true},{"schema":{"type":"string","pattern":"^light-[a-z0-9]+\\.(svg|png|webp|jpg)$"},"in":"path","name":"file","required":true}],"responses":{"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/public/branding/by-subdomain/{sub}":{"get":{"summary":"Marke zu einer Subdomain (öffentlich)","tags":["public"],"description":"Löst eine vergebene Subdomain zur Marke der Organisation auf (Logo, weißes Logo, Farben, Schrift, `poweredByDoWallet`, false nur mit White-Label-Freigabe). Unbekannt, reserviert, eingefroren oder gelöscht 404.","parameters":[{"schema":{"type":"string","maxLength":63},"in":"path","name":"sub","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"name":{"type":"string"},"logoUrl":{"type":"string"},"logoWhiteUrl":{"type":"string"},"primaryColor":{"type":"string"},"surfaceColor":{"type":"string"},"textColor":{"type":"string"},"mutedColor":{"type":"string"},"fontFamily":{"type":"string"},"fontCssSrc":{"type":"string"},"poweredByDoWallet":{"type":"boolean"}},"required":["orgId","name","poweredByDoWallet"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/memberships":{"get":{"summary":"Team auflisten","tags":["memberships"],"description":"Mitgliedschaften der Organisation für jede org-weite Rolle. Mit `workspaceId` nur die Mitgliedschaften dieses Arbeitsbereichs; Admins eines einzelnen Arbeitsbereichs brauchen diesen Filter und sehen nur ihren Arbeitsbereich. `canApprove` sagt, ob die Person Kampagnen freigeben darf.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"workspaceId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"role":{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},"canApprove":{"type":"boolean"},"invitedBy":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]}},"required":["id","email","name"],"additionalProperties":false}},"required":["id","userId","orgId","workspaceId","role","canApprove","invitedBy","createdAt","user"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Mitglied hinzufügen","tags":["memberships"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"role":{"type":"string","enum":["org_owner","org_admin","editor","support","viewer"]}},"required":["userId","role"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"role":{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},"canApprove":{"type":"boolean"},"invitedBy":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]}},"required":["id","email","name"],"additionalProperties":false}},"required":["id","userId","orgId","workspaceId","role","canApprove","invitedBy","createdAt","user"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/memberships/{id}":{"patch":{"summary":"Rolle oder Freigabe ändern","tags":["memberships"],"description":"Ändert die Rolle (`role`) und/oder das Freigabe-Recht (`canApprove`: darf Kampagnen freigeben) einer Mitgliedschaft; mindestens eines der Felder, sonst 422. Org-weite Admins ändern jede Mitgliedschaft, Inhaber-Mitgliedschaften und die Rolle Inhaber nur Inhaber. Admins eines einzelnen Arbeitsbereichs ändern nur Mitgliedschaften dieses Arbeitsbereichs mit niedrigerer Rolle als ihrer, höchstens bis zur eigenen Rolle und nie auf Inhaber. Nur mit angemeldeter Sitzung.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["org_owner","org_admin","editor","support","viewer"]},"canApprove":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"role":{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},"canApprove":{"type":"boolean"},"invitedBy":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]}},"required":["id","email","name"],"additionalProperties":false}},"required":["id","userId","orgId","workspaceId","role","canApprove","invitedBy","createdAt","user"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Mitglied entfernen","tags":["memberships"],"description":"Entfernt eine Mitgliedschaft. Org-weite Inhaber entfernen jede; Admins eines Arbeitsbereichs (auch org-weite Admins) entfernen Mitgliedschaften dieses Arbeitsbereichs mit niedrigerer Rolle als ihrer. Nur mit angemeldeter Sitzung.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/invitations":{"get":{"summary":"Einladungen auflisten","tags":["invitations"],"description":"Alle Einladungen der Organisation für org-weite Admins. Mit `workspaceId` nur die Einladungen dieses Arbeitsbereichs; Admins eines einzelnen Arbeitsbereichs brauchen diesen Filter und sehen nur ihren Arbeitsbereich.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"workspaceId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"role":{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},"canApprove":{"type":"boolean"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"invitedBy":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"acceptedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","orgId","workspaceId","email","name","role","canApprove","status","invitedBy","createdAt","expiresAt","acceptedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Person einladen","tags":["invitations"],"description":"Lädt eine Person per E-Mail ein, org-weit oder in einen Arbeitsbereich (`workspaceId`), optional mit Namen (`name`, Anrede in der Mail) und als Freigeber (`canApprove`: darf Kampagnen freigeben). Org-weite Admins laden überall ein, Inhaber nur durch Inhaber. Admins eines einzelnen Arbeitsbereichs laden nur dorthin ein, höchstens mit der eigenen Rolle und nie als Inhaber; ohne `workspaceId` 403. Nur mit angemeldeter Sitzung.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","minLength":1,"maxLength":120},"role":{"type":"string","enum":["org_owner","org_admin","editor","support","viewer"]},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"canApprove":{"type":"boolean"}},"required":["email","role"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"role":{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},"canApprove":{"type":"boolean"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"invitedBy":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"acceptedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","orgId","workspaceId","email","name","role","canApprove","status","invitedBy","createdAt","expiresAt","acceptedAt"],"additionalProperties":false},"acceptUrl":{"type":"string"},"emailQueued":{"type":"boolean"},"emailProblem":{"type":"string"}},"required":["invitation","acceptUrl"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/invitations/by-token/{token}":{"get":{"summary":"Einladung per Token lesen","tags":["invitations"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"role":{"type":"string"},"canApprove":{"type":"boolean"},"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"workspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"existingUser":{"type":"boolean"}},"required":["email","name","role","canApprove","org","workspace","existingUser"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/invitations/accept":{"post":{"summary":"Einladung annehmen","tags":["invitations"],"description":"Setzt Passwort und legt die Mitgliedschaft an; AGB-Zustimmung ist Pflicht.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"password":{"type":"string","minLength":10},"name":{"type":"string","minLength":1,"maxLength":120},"acceptTerms":{"type":"boolean"}},"required":["token"]}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopes":{"type":"array","items":{"type":"string"}},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["id","scopes","orgId","workspaceId"],"additionalProperties":false},{"type":"null"}]},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":["string","null"]},"isPlatformAdmin":{"type":"boolean"},"accessExpiresAt":{"type":["string","null"]},"tourCompletedAt":{"type":["string","null"]}},"required":["id","email","name","isPlatformAdmin"],"additionalProperties":false},"activeOrg":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"onboardingCase":{"type":["string","null"]},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}]},"capabilities":{"type":"object","properties":{"industry":{"type":"string","enum":["retail","food","events","mobility","fitness","insurance","general"],"description":"Branche der Organisation; ohne Angabe `general`."},"passTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["coupon","loyalty","event","giftcard","generic","boarding"],"description":"Pass-Typ: `coupon`, `loyalty` (Kundenkarte), `event` (Ticket), `giftcard` (Gutscheinkarte), `generic` (Ausweis, Mitgliedskarte), `boarding` (Bordkarte, Fahrkarte)."},"description":"Pass-Typen, von denen die Organisation Vorlagen anlegen darf, in fester Reihenfolge. Immer mindestens einer; ohne Einschränkung alle sechs."},"modules":{"type":"object","properties":{"loyalty":{"type":"boolean"},"landingPages":{"type":"boolean"},"campaigns":{"type":"boolean"},"flows":{"type":"boolean"},"audiences":{"type":"boolean"},"locations":{"type":"boolean"},"codePools":{"type":"boolean"},"api":{"type":"boolean"}},"required":["loyalty","landingPages","campaigns","flows","audiences","locations","codePools","api"],"additionalProperties":false,"description":"Jedes Modul an (true) oder aus (false): loyalty, landingPages, campaigns, flows, audiences, locations, codePools, api."},"scanner":{"type":"boolean","description":"Scanner eingeschaltet."},"whiteLabel":{"type":"boolean","description":"White-Label wirksam (im Paket oder als Add-on)."},"plan":{"type":"string","enum":["free","full"],"description":"Plan: `free` = eingeschränkt, `full` = Vollzugang."},"accountKind":{"anyOf":[{"type":"string","enum":["agency","brand","small"]},{"type":"null"}],"description":"Kundentyp (`agency`, `brand`, `small`), null = unbekannt."}},"required":["industry","passTypes","modules","scanner","whiteLabel","plan","accountKind"],"additionalProperties":false,"description":"Funktionsumfang der Organisation: was die App zeigt und was die API erlaubt."}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"activeOrgRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"activeOrgWideRole":{"anyOf":[{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},{"type":"null"}]},"mfaEnrolled":{"type":"boolean"},"activeWorkspace":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"availableWorkspaces":{"type":"array","items":{"type":"object","properties":{"org":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["customer","pitch","test","internal"]}},"required":["id","slug","name"],"additionalProperties":false},"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["org","workspaces"],"additionalProperties":false}},"impersonation":{"anyOf":[{"type":"object","properties":{"superAdminUserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["read_only","write_allowed"]}},"required":["superAdminUserId","expiresAt","mode"],"additionalProperties":false},{"type":"null"}]},"customerMode":{"anyOf":[{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":"string"},"editUnlockedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"unlockMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","orgName","editUnlockedUntil","unlockMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["user","activeOrg","activeOrgRole","activeOrgWideRole","activeWorkspace","availableWorkspaces","impersonation"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/invitations/{id}":{"delete":{"summary":"Einladung zurückziehen","tags":["invitations"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/api-tokens":{"get":{"summary":"API-Tokens auflisten","tags":["api-tokens"],"description":"Alle API-Tokens der Organisation ohne Geheimnis (nur Präfix, Scopes, Daten, Ersteller). Inhaber und org-weite Admins; Admins sehen die Liste nur lesend (`canManage: false`) und in `owners`, wer Tokens anlegen und widerrufen darf.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"tokenPrefix":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastUsedRoute":{"type":["string","null"]},"lastUsedIpClass":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"createdBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]}},"required":["id","orgId","workspaceId","name","tokenPrefix","scopes","lastUsedAt","lastUsedRoute","lastUsedIpClass","expiresAt","revokedAt","createdAt","createdBy"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false},"canManage":{"type":"boolean"},"owners":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false}}},"required":["data","pagination","canManage","owners"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"API-Token anlegen","tags":["api-tokens"],"description":"Erzeugt einen Bearer-Token (`dwlt_…`) mit Scopes (`scopes`, z. B. `passes:issue`, `templates:read`, `events:write`; die Tabelle je Routenfamilie steht unter „Authentifizierung“), optional an einen Workspace gebunden (`workspaceId`) und mit Ablauf (`expiresAt`). Der Token handelt mit der Rolle der Person, die ihn anlegt, nur in dieser Organisation und Bindung, nie mit Plattform-Admin-Rechten. Die Antwort enthält den Klartext genau einmal; gespeichert wird nur der Hash. Org-Owner, nur mit Anmeldung im Browser: ein Token legt keine Tokens an (403).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"scopes":{"minItems":1,"type":"array","items":{"type":"string"}},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["name","scopes"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"tokenPrefix":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastUsedRoute":{"type":["string","null"]},"lastUsedIpClass":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","workspaceId","name","tokenPrefix","scopes","lastUsedAt","lastUsedRoute","lastUsedIpClass","expiresAt","revokedAt","createdAt"],"additionalProperties":false},"plaintext":{"type":"string"}},"required":["token","plaintext"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/api-tokens/{id}/rotate":{"post":{"summary":"API-Token rotieren","tags":["api-tokens"],"description":"Erzeugt einen neuen Token mit Name, Scopes, Bindung und Ablauf des alten und liefert den Klartext einmal. Der alte Token arbeitet noch `graceMinutes` (0 bis 1440, Standard 0) weiter, dann 401; so wechselt ein Deployment ohne Lücke. Org-Owner, nur mit Anmeldung im Browser.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"graceMinutes":{"default":0,"type":"integer","minimum":0,"maximum":1440}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"tokenPrefix":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastUsedRoute":{"type":["string","null"]},"lastUsedIpClass":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","workspaceId","name","tokenPrefix","scopes","lastUsedAt","lastUsedRoute","lastUsedIpClass","expiresAt","revokedAt","createdAt"],"additionalProperties":false},"plaintext":{"type":"string"},"previousValidUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["token","plaintext","previousValidUntil"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/api-tokens/{id}":{"patch":{"summary":"API-Token ändern","tags":["api-tokens"],"description":"Name, Scopes oder Ablauf eines aktiven Tokens. Org-Owner, nur mit Anmeldung im Browser; ein widerrufener oder rotierter Token ist 409.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"scopes":{"minItems":1,"type":"array","items":{"type":"string"}},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"tokenPrefix":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastUsedRoute":{"type":["string","null"]},"lastUsedIpClass":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orgId","workspaceId","name","tokenPrefix","scopes","lastUsedAt","lastUsedRoute","lastUsedIpClass","expiresAt","revokedAt","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"API-Token widerrufen","tags":["api-tokens"],"description":"Sofort wirksam. Aufrufe mit diesem Token bekommen ab jetzt 401. Org-Owner, nur mit Anmeldung im Browser.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/api-tokens/{id}/requests":{"get":{"summary":"Aufrufe eines Tokens","tags":["api-tokens"],"description":"Die letzten Aufrufe (bis 200) mit Methode, Routenmuster, Status, Dauer und ob der Scope der Route fehlte (`scopeMissing`, `requiredScopes`). Nie Körper oder Adresse; 30 Tage. Org-Admin.","parameters":[{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"method":{"type":"string"},"route":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"latencyMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scopeMissing":{"type":"boolean"},"requiredScopes":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"requestId":{"type":["string","null"]},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","method","route","status","latencyMs","scopeMissing","requiredScopes","requestId","occurredAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/api-requests/summary":{"get":{"summary":"Aufrufe je Token","tags":["api-tokens"],"description":"Aufrufe und fehlende Scopes je Token der letzten `days` Tage (Standard 7) mit letzter Route und Zeitpunkt. Org-Admin.","parameters":[{"schema":{"default":7,"type":"integer","minimum":1,"maximum":30},"in":"query","name":"days","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"calls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scopeMissing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tokens":{"type":"array","items":{"type":"object","properties":{"tokenId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"calls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scopeMissing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastRoute":{"type":["string","null"]},"lastAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["tokenId","calls","scopeMissing","lastRoute","lastAt"],"additionalProperties":false}}},"required":["days","calls","scopeMissing","tokens"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/token-scopes":{"get":{"summary":"Scope-Durchsetzung lesen","tags":["api-tokens"],"description":"Ob fehlende Scopes für die Tokens dieser Organisation 403 `missing_scope` bedeuten (`enforce`), der Modus der Plattform (`globalMode`) und wie viele Aufrufe der letzten 7 Tage einen Scope vermissten. Org-Admin.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"enforce":{"type":"boolean"},"enforcedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"globalMode":{"type":"string","enum":["monitor","enforce"]},"missingLast7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["enforce","enforcedAt","globalMode","missingLast7d"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Scope-Durchsetzung schalten","tags":["api-tokens"],"description":"`enforce: true` schaltet die Prüfung für die eigenen Tokens scharf (bis dahin nur Protokoll); `false` nimmt sie zurück, solange die Plattform nicht selbst durchsetzt. Org-Owner, nur mit Anmeldung im Browser.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enforce":{"type":"boolean"}},"required":["enforce"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"enforce":{"type":"boolean"},"enforcedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"globalMode":{"type":"string","enum":["monitor","enforce"]},"missingLast7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["enforce","enforcedAt","globalMode","missingLast7d"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/templates":{"get":{"summary":"Vorlagen auflisten","tags":["templates"],"parameters":[{"schema":{"type":"string","enum":["draft","published","archived"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"in":"query","name":"passType","required":false},{"schema":{"type":"string","enum":["head"]},"in":"query","name":"include","required":false},{"schema":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"string","enum":["none"]}]},"in":"query","name":"promotionId","required":false,"description":"Nur Teile dieser Aktion; `none` = ohne Aktion."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClassType":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"status":{"type":"string","enum":["draft","published","archived"]},"folderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"currentVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentDraftVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"valueSource":{"anyOf":[{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["mode","value"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["lists"]},"lists":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sharePct":{"type":"integer","minimum":0,"maximum":100},"utmSource":{"description":"Nur für Pässe mit dieser utm_source (Kanal der Landing-Seite). Ohne Angabe gilt die Liste für alle Quellen. Beim Ausstellen ziehen zuerst die Listen der Quelle des Passes, solange sie Codes haben, sonst die Listen ohne Quelle; Listen einer anderen Quelle nie.","type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"}},"required":["poolId","sharePct"],"additionalProperties":false}},"onExhausted":{"default":"block","type":"string","enum":["block","pattern"]},"fallbackPattern":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["mode","lists","onExhausted"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["api"]},"url":{"type":"string","maxLength":500,"format":"uri"},"method":{"default":"POST","type":"string","enum":["GET","POST"]},"headers":{"default":[],"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","maxLength":500}},"required":["name","value"],"additionalProperties":false}},"bodyTemplate":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]},"valuePath":{"default":"value","type":"string","maxLength":120},"timeoutMs":{"default":4000,"type":"integer","minimum":500,"maximum":8000},"fallback":{"default":{"kind":"block"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["block"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["list"]},"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind","poolId"],"additionalProperties":false}]}},"required":["mode","url","method","headers","valuePath","timeoutMs","fallback"],"additionalProperties":false}]},{"type":"null"}]},"attributeSchema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"label":{"type":"string","minLength":1,"maxLength":60},"type":{"type":"string","enum":["text","number","date"]},"required":{"default":false,"type":"boolean"},"fromPublicClaim":{"default":false,"type":"boolean"},"role":{"type":"string","enum":["eventStart"]}},"required":["key","label","type","required","fromPublicClaim"],"additionalProperties":false}},"organizationName":{"type":"string"},"logoText":{"type":["string","null"]},"description":{"type":["string","null"]},"eventStartsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"eventEndsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"head":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"walletDocument":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"locales":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","templateId","version","walletDocument","locales","createdById","createdAt","updatedAt"],"additionalProperties":false},{"type":"null"}]},"published":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"walletDocument":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"locales":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","templateId","version","walletDocument","locales","createdById","createdAt","updatedAt"],"additionalProperties":false},{"type":"null"}]},"assetUrls":{"anyOf":[{"type":"object","properties":{"logo":{"type":["string","null"]},"icon":{"type":["string","null"]},"strip":{"type":["string","null"]},"googleLogo":{"type":["string","null"]},"background":{"type":["string","null"]},"thumbnail":{"type":["string","null"]},"hero":{"type":["string","null"]}},"required":["logo","icon","strip","googleLogo"],"additionalProperties":false},{"type":"null"}]}},"required":["id","workspaceId","name","useCase","passType","googleClassType","status","folderId","promotionId","currentVersion","currentDraftVersion","valueSource","attributeSchema","organizationName","logoText","description","eventStartsAt","eventEndsAt","createdById","createdAt","updatedAt","publishedAt","archivedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Vorlage anlegen","tags":["templates"],"description":"Startet als Entwurf mit einem Start-Design. Änderungen am Design (Felder, Farben, Barcode, Bilder) kommen als neue Version (`POST /v1/templates/{id}/versions`) und gelten ab dem Veröffentlichen. `preset` legt eine fertige Vorlage an: `stamp_card` (Stempelkarte mit Treue-Regel 10 Stempel = 1 Kaffee), `membership_card` (Mitgliedsausweis, Feldliste name, mitgliedsnr, gueltig_bis), `product_pass` (Produktpass: produkt, seriennr, kaufdatum) oder `insurance_card` (Versicherungskarte: name, vertragsnr, tarif). Ein Preset bringt Zweck, Apple-Stil und Google-Klasse mit (`useCase`, `passType`, `googleClassType` dürfen dann fehlen und müssen sonst passen), das Design in der Sprache des Workspace, die Feldliste und die Einlöse-Regel unbegrenzt; alles in einer Transaktion. Ohne eigenen `logoText` trägt jede neue Vorlage den `organizationName` als Logo-Text (höchstens 40 Zeichen). Ohne `preset` sind `useCase`, `passType` und `googleClassType` Pflicht. Ab der Rolle editor. `stamp_card` braucht das Modul Treue der Organisation, sonst 403 `module_disabled` (ohne Treue-Regel zeigte die Karte „0 / “). Der Pass-Typ (aus `useCase`: coupon, loyalty, eventTicket = event, giftCard = giftcard, boardingPass und transit = boarding, sonst generic) muss für die Organisation freigeschaltet sein (`capabilities.passTypes` in `GET /v1/orgs/{id}`), sonst 403 `pass_type_not_allowed` mit `details.passType` und `details.allowed`. Bestehende Vorlagen eines nicht mehr freigeschalteten Typs bleiben nutzbar.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClassType":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"preset":{"type":"string","enum":["stamp_card","membership_card","product_pass","insurance_card"]},"organizationName":{"type":"string","minLength":1,"maxLength":120},"logoText":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"folderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"description":"Aktion, zu der das Teil gehört (`GET /v1/workspaces/{id}/promotions`); null = ohne Aktion. Fremde Aktion 404 `promotion_not_found`, archivierte 409 `promotion_archived`.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"walletDocument":{"type":"object","properties":{"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"identity":{"type":"object","properties":{"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClass":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"serial":{"type":"string"},"transitType":{"type":"string","enum":["PKTransitTypeAir","PKTransitTypeBus","PKTransitTypeTrain","PKTransitTypeBoat","PKTransitTypeGeneric"]}},"required":["passType","googleClass"]},"branding":{"type":"object","properties":{"backgroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"foregroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"labelHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"stripLabelHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"logoText":{"type":"string","maxLength":40},"suppressStripShine":{"type":"boolean"},"groupingIdentifier":{"type":"string"},"landingStyle":{"type":"string","enum":["classic","spotlight","card"]}},"required":["backgroundHex","foregroundHex","labelHex"]},"fields":{"type":"object","properties":{"header":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"primary":{"minItems":0,"maxItems":2,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"secondary":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"auxiliary":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"back":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}}},"required":["primary"]},"loyalty":{"type":"object","properties":{"pointsLabel":{"type":"string","minLength":1,"maxLength":40},"pointsBalance":{"type":["number","string"]},"secondaryPointsLabel":{"type":"string","minLength":1,"maxLength":40},"secondaryPointsBalance":{"type":["number","string"]},"accountId":{"type":"string"},"accountName":{"type":"string"},"tier":{"type":"string"}},"required":["pointsLabel","pointsBalance"]},"giftCard":{"type":"object","properties":{"balance":{"type":"number","minimum":0},"currencyCode":{"type":"string","minLength":3,"maxLength":3}},"required":["balance","currencyCode"]},"barcodes":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"format":{"type":"string","enum":["PKBarcodeFormatQR","PKBarcodeFormatPDF417","PKBarcodeFormatAztec","PKBarcodeFormatCode128","PKBarcodeFormatEAN13","PKBarcodeFormatCode39","PKBarcodeFormatCodabar","PKBarcodeFormatI2of5"]},"message":{"type":"string"},"messageEncoding":{"default":"iso-8859-1","type":"string"},"altText":{"type":"string"}},"required":["format","message"]}},"rotatingBarcode":{"type":"object","properties":{"totpKey":{"type":"string","minLength":16},"period":{"default":60,"type":"number","enum":[60]},"type":{"default":"QR_CODE","type":"string","enum":["QR_CODE","PDF_417"]}},"required":["totpKey"]},"images":{"type":"object","properties":{"logoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"iconAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"thumbnailAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backgroundAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"footerAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"heroAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"googleLogoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"altitude":{"type":"number"},"relevantText":{"type":"string","maxLength":120}},"required":["latitude","longitude"]}},"maxDistance":{"type":"integer","minimum":10,"maximum":50000},"beacons":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"proximityUuid":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"major":{"type":"integer","minimum":0,"maximum":65535},"minor":{"type":"integer","minimum":0,"maximum":65535},"relevantText":{"type":"string","maxLength":120}},"required":["proximityUuid"]}},"nfc":{"type":"object","properties":{"message":{"type":"string"},"encryptionPublicKey":{"type":"string"},"requiresAuthentication":{"type":"boolean"},"smartTapValue":{"type":"string"}},"required":["message"]},"validity":{"type":"object","properties":{"expirationDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"relevantDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"relevantDates":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"startDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["startDate"]}},"voided":{"type":"boolean"},"sharingProhibited":{"type":"boolean"}}},"featuredActions":{"maxItems":2,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","format":"uri"},"placeIdentifier":{"type":"string","pattern":"^[A-Za-z0-9]{8,40}$"},"type":{"default":"membershipBenefits","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9]{1,40}$"},"identifier":{"type":"string","minLength":1,"maxLength":60}},"required":["label"]}},"poster":{"type":"object","properties":{"enabled":{"default":false,"type":"boolean"},"footerLabel":{"type":"string","maxLength":40},"footerValue":{"type":"string","maxLength":80},"fallbackStyle":{"type":"string","enum":["generic","storeCard","coupon","eventTicket"]},"suppressHeaderDarkening":{"type":"boolean"}}},"googleAction":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":30},"url":{"type":"string","minLength":1,"maxLength":2048}},"required":["label","url"]},"coverHint":{"type":"object","properties":{"enabled":{"default":false,"type":"boolean"},"text":{"default":"","type":"string","maxLength":48},"backgroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"textHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}}},"personalImages":{"type":"object","properties":{"strip":{"type":"object","properties":{"attribute":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$"}},"required":["attribute"]},"logo":{"type":"object","properties":{"attribute":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$"}},"required":["attribute"]}}},"appLink":{"type":"object","properties":{"appStoreIds":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"launchUrl":{"type":"string","format":"uri"}}},"back":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["label","url"]}},"texts":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}}},"semantics":{"type":"object","properties":{},"additionalProperties":{}},"localizations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2}(-[A-Z]{2})?$"},"additionalProperties":{"type":"object","properties":{"fields":{"type":"object","properties":{"header":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"primary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"secondary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"auxiliary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"back":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}}}},"texts":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}}}}},"required":["useCase","identity","branding","fields","barcodes","images","validity"]},"stampCard":{"type":"object","properties":{"goal":{"type":"integer","minimum":2,"maximum":50},"reward":{"type":"string","minLength":1,"maxLength":60}},"required":["goal","reward"]}},"required":["name","organizationName"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClassType":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"status":{"type":"string","enum":["draft","published","archived"]},"folderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"currentVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentDraftVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"valueSource":{"anyOf":[{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["mode","value"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["lists"]},"lists":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sharePct":{"type":"integer","minimum":0,"maximum":100},"utmSource":{"description":"Nur für Pässe mit dieser utm_source (Kanal der Landing-Seite). Ohne Angabe gilt die Liste für alle Quellen. Beim Ausstellen ziehen zuerst die Listen der Quelle des Passes, solange sie Codes haben, sonst die Listen ohne Quelle; Listen einer anderen Quelle nie.","type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"}},"required":["poolId","sharePct"],"additionalProperties":false}},"onExhausted":{"default":"block","type":"string","enum":["block","pattern"]},"fallbackPattern":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["mode","lists","onExhausted"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["api"]},"url":{"type":"string","maxLength":500,"format":"uri"},"method":{"default":"POST","type":"string","enum":["GET","POST"]},"headers":{"default":[],"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","maxLength":500}},"required":["name","value"],"additionalProperties":false}},"bodyTemplate":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]},"valuePath":{"default":"value","type":"string","maxLength":120},"timeoutMs":{"default":4000,"type":"integer","minimum":500,"maximum":8000},"fallback":{"default":{"kind":"block"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["block"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["list"]},"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind","poolId"],"additionalProperties":false}]}},"required":["mode","url","method","headers","valuePath","timeoutMs","fallback"],"additionalProperties":false}]},{"type":"null"}]},"attributeSchema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"label":{"type":"string","minLength":1,"maxLength":60},"type":{"type":"string","enum":["text","number","date"]},"required":{"default":false,"type":"boolean"},"fromPublicClaim":{"default":false,"type":"boolean"},"role":{"type":"string","enum":["eventStart"]}},"required":["key","label","type","required","fromPublicClaim"],"additionalProperties":false}},"organizationName":{"type":"string"},"logoText":{"type":["string","null"]},"description":{"type":["string","null"]},"eventStartsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"eventEndsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["id","workspaceId","name","useCase","passType","googleClassType","status","folderId","promotionId","currentVersion","currentDraftVersion","valueSource","attributeSchema","organizationName","logoText","description","eventStartsAt","eventEndsAt","createdById","createdAt","updatedAt","publishedAt","archivedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}":{"get":{"summary":"Vorlage lesen","tags":["templates"],"description":"Mit Feldliste (`attributeSchema`) und Wertquelle (`valueSource`).","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClassType":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"status":{"type":"string","enum":["draft","published","archived"]},"folderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"currentVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentDraftVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"valueSource":{"anyOf":[{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["mode","value"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["lists"]},"lists":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sharePct":{"type":"integer","minimum":0,"maximum":100},"utmSource":{"description":"Nur für Pässe mit dieser utm_source (Kanal der Landing-Seite). Ohne Angabe gilt die Liste für alle Quellen. Beim Ausstellen ziehen zuerst die Listen der Quelle des Passes, solange sie Codes haben, sonst die Listen ohne Quelle; Listen einer anderen Quelle nie.","type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"}},"required":["poolId","sharePct"],"additionalProperties":false}},"onExhausted":{"default":"block","type":"string","enum":["block","pattern"]},"fallbackPattern":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["mode","lists","onExhausted"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["api"]},"url":{"type":"string","maxLength":500,"format":"uri"},"method":{"default":"POST","type":"string","enum":["GET","POST"]},"headers":{"default":[],"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","maxLength":500}},"required":["name","value"],"additionalProperties":false}},"bodyTemplate":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]},"valuePath":{"default":"value","type":"string","maxLength":120},"timeoutMs":{"default":4000,"type":"integer","minimum":500,"maximum":8000},"fallback":{"default":{"kind":"block"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["block"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["list"]},"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind","poolId"],"additionalProperties":false}]}},"required":["mode","url","method","headers","valuePath","timeoutMs","fallback"],"additionalProperties":false}]},{"type":"null"}]},"attributeSchema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"label":{"type":"string","minLength":1,"maxLength":60},"type":{"type":"string","enum":["text","number","date"]},"required":{"default":false,"type":"boolean"},"fromPublicClaim":{"default":false,"type":"boolean"},"role":{"type":"string","enum":["eventStart"]}},"required":["key","label","type","required","fromPublicClaim"],"additionalProperties":false}},"organizationName":{"type":"string"},"logoText":{"type":["string","null"]},"description":{"type":["string","null"]},"eventStartsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"eventEndsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["id","workspaceId","name","useCase","passType","googleClassType","status","folderId","promotionId","currentVersion","currentDraftVersion","valueSource","attributeSchema","organizationName","logoText","description","eventStartsAt","eventEndsAt","createdById","createdAt","updatedAt","publishedAt","archivedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Vorlage bearbeiten","tags":["templates"],"description":"Name, Organisation, Ordner, Event-Zeitraum, Feldliste (`attributeSchema`: Schlüssel, Bezeichnung, Typ, Pflicht, über öffentlichen Link setzbar) und Wertquelle (`valueSource`: fester Wert, Code-Listen oder API deines Systems). Feldliste und Wertquelle gelten sofort für neue Pässe; das Design ändert sich erst mit einer neuen veröffentlichten Version. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"organizationName":{"type":"string","minLength":1,"maxLength":120},"logoText":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"eventStartsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"eventEndsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"valueSource":{"anyOf":[{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["mode","value"]},{"type":"object","properties":{"mode":{"type":"string","enum":["lists"]},"lists":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sharePct":{"type":"integer","minimum":0,"maximum":100},"utmSource":{"description":"Nur für Pässe mit dieser utm_source (Kanal der Landing-Seite). Ohne Angabe gilt die Liste für alle Quellen. Beim Ausstellen ziehen zuerst die Listen der Quelle des Passes, solange sie Codes haben, sonst die Listen ohne Quelle; Listen einer anderen Quelle nie.","type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"}},"required":["poolId","sharePct"]}},"onExhausted":{"default":"block","type":"string","enum":["block","pattern"]},"fallbackPattern":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["mode","lists"]},{"type":"object","properties":{"mode":{"type":"string","enum":["api"]},"url":{"type":"string","maxLength":500,"format":"uri"},"method":{"default":"POST","type":"string","enum":["GET","POST"]},"headers":{"default":[],"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","maxLength":500}},"required":["name","value"]}},"bodyTemplate":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]},"valuePath":{"default":"value","type":"string","maxLength":120},"timeoutMs":{"default":4000,"type":"integer","minimum":500,"maximum":8000},"fallback":{"default":{"kind":"block"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["block"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["list"]},"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind","poolId"]}]}},"required":["mode","url"]}]},{"type":"null"}]},"attributeSchema":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"label":{"type":"string","minLength":1,"maxLength":60},"type":{"type":"string","enum":["text","number","date"]},"required":{"default":false,"type":"boolean"},"fromPublicClaim":{"default":false,"type":"boolean"},"role":{"type":"string","enum":["eventStart"]}},"required":["key","label","type"]}},"folderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"description":"Aktion, zu der das Teil gehört (`GET /v1/workspaces/{id}/promotions`); null = ohne Aktion. Fremde Aktion 404 `promotion_not_found`, archivierte 409 `promotion_archived`.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClassType":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"status":{"type":"string","enum":["draft","published","archived"]},"folderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"currentVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentDraftVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"valueSource":{"anyOf":[{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["mode","value"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["lists"]},"lists":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sharePct":{"type":"integer","minimum":0,"maximum":100},"utmSource":{"description":"Nur für Pässe mit dieser utm_source (Kanal der Landing-Seite). Ohne Angabe gilt die Liste für alle Quellen. Beim Ausstellen ziehen zuerst die Listen der Quelle des Passes, solange sie Codes haben, sonst die Listen ohne Quelle; Listen einer anderen Quelle nie.","type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"}},"required":["poolId","sharePct"],"additionalProperties":false}},"onExhausted":{"default":"block","type":"string","enum":["block","pattern"]},"fallbackPattern":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["mode","lists","onExhausted"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["api"]},"url":{"type":"string","maxLength":500,"format":"uri"},"method":{"default":"POST","type":"string","enum":["GET","POST"]},"headers":{"default":[],"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","maxLength":500}},"required":["name","value"],"additionalProperties":false}},"bodyTemplate":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]},"valuePath":{"default":"value","type":"string","maxLength":120},"timeoutMs":{"default":4000,"type":"integer","minimum":500,"maximum":8000},"fallback":{"default":{"kind":"block"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["block"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["list"]},"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind","poolId"],"additionalProperties":false}]}},"required":["mode","url","method","headers","valuePath","timeoutMs","fallback"],"additionalProperties":false}]},{"type":"null"}]},"attributeSchema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"label":{"type":"string","minLength":1,"maxLength":60},"type":{"type":"string","enum":["text","number","date"]},"required":{"default":false,"type":"boolean"},"fromPublicClaim":{"default":false,"type":"boolean"},"role":{"type":"string","enum":["eventStart"]}},"required":["key","label","type","required","fromPublicClaim"],"additionalProperties":false}},"organizationName":{"type":"string"},"logoText":{"type":["string","null"]},"description":{"type":["string","null"]},"eventStartsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"eventEndsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["id","workspaceId","name","useCase","passType","googleClassType","status","folderId","promotionId","currentVersion","currentDraftVersion","valueSource","attributeSchema","organizationName","logoText","description","eventStartsAt","eventEndsAt","createdById","createdAt","updatedAt","publishedAt","archivedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Vorlage archivieren","tags":["templates"],"description":"Setzt die Vorlage auf archiviert; ausgestellte Pässe bleiben gültig. Ab der Rolle org_admin.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/unarchive":{"post":{"summary":"Archivierte Vorlage wiederherstellen","tags":["templates"],"description":"Holt eine archivierte Vorlage zurück: veröffentlicht, wenn sie eine veröffentlichte Version hat, sonst als Entwurf. 409 `conflict`, wenn sie nicht archiviert ist. Ab der Rolle org_admin.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClassType":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"status":{"type":"string","enum":["draft","published","archived"]},"folderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"currentVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentDraftVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"valueSource":{"anyOf":[{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["mode","value"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["lists"]},"lists":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sharePct":{"type":"integer","minimum":0,"maximum":100},"utmSource":{"description":"Nur für Pässe mit dieser utm_source (Kanal der Landing-Seite). Ohne Angabe gilt die Liste für alle Quellen. Beim Ausstellen ziehen zuerst die Listen der Quelle des Passes, solange sie Codes haben, sonst die Listen ohne Quelle; Listen einer anderen Quelle nie.","type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"}},"required":["poolId","sharePct"],"additionalProperties":false}},"onExhausted":{"default":"block","type":"string","enum":["block","pattern"]},"fallbackPattern":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["mode","lists","onExhausted"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["api"]},"url":{"type":"string","maxLength":500,"format":"uri"},"method":{"default":"POST","type":"string","enum":["GET","POST"]},"headers":{"default":[],"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","maxLength":500}},"required":["name","value"],"additionalProperties":false}},"bodyTemplate":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]},"valuePath":{"default":"value","type":"string","maxLength":120},"timeoutMs":{"default":4000,"type":"integer","minimum":500,"maximum":8000},"fallback":{"default":{"kind":"block"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["block"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["list"]},"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind","poolId"],"additionalProperties":false}]}},"required":["mode","url","method","headers","valuePath","timeoutMs","fallback"],"additionalProperties":false}]},{"type":"null"}]},"attributeSchema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"label":{"type":"string","minLength":1,"maxLength":60},"type":{"type":"string","enum":["text","number","date"]},"required":{"default":false,"type":"boolean"},"fromPublicClaim":{"default":false,"type":"boolean"},"role":{"type":"string","enum":["eventStart"]}},"required":["key","label","type","required","fromPublicClaim"],"additionalProperties":false}},"organizationName":{"type":"string"},"logoText":{"type":["string","null"]},"description":{"type":["string","null"]},"eventStartsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"eventEndsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["id","workspaceId","name","useCase","passType","googleClassType","status","folderId","promotionId","currentVersion","currentDraftVersion","valueSource","attributeSchema","organizationName","logoText","description","eventStartsAt","eventEndsAt","createdById","createdAt","updatedAt","publishedAt","archivedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/versions":{"get":{"summary":"Versionen auflisten","tags":["templates"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"walletDocument":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"locales":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","templateId","version","walletDocument","locales","createdById","createdAt","updatedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Version anlegen","tags":["templates"],"description":"Legt mit dem übergebenen Design (`walletDocument`) eine neue Version an.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"walletDocument":{"type":"object","properties":{"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"identity":{"type":"object","properties":{"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClass":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"serial":{"type":"string"},"transitType":{"type":"string","enum":["PKTransitTypeAir","PKTransitTypeBus","PKTransitTypeTrain","PKTransitTypeBoat","PKTransitTypeGeneric"]}},"required":["passType","googleClass"]},"branding":{"type":"object","properties":{"backgroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"foregroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"labelHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"stripLabelHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"logoText":{"type":"string","maxLength":40},"suppressStripShine":{"type":"boolean"},"groupingIdentifier":{"type":"string"},"landingStyle":{"type":"string","enum":["classic","spotlight","card"]}},"required":["backgroundHex","foregroundHex","labelHex"]},"fields":{"type":"object","properties":{"header":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"primary":{"minItems":0,"maxItems":2,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"secondary":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"auxiliary":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"back":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}}},"required":["primary"]},"loyalty":{"type":"object","properties":{"pointsLabel":{"type":"string","minLength":1,"maxLength":40},"pointsBalance":{"type":["number","string"]},"secondaryPointsLabel":{"type":"string","minLength":1,"maxLength":40},"secondaryPointsBalance":{"type":["number","string"]},"accountId":{"type":"string"},"accountName":{"type":"string"},"tier":{"type":"string"}},"required":["pointsLabel","pointsBalance"]},"giftCard":{"type":"object","properties":{"balance":{"type":"number","minimum":0},"currencyCode":{"type":"string","minLength":3,"maxLength":3}},"required":["balance","currencyCode"]},"barcodes":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"format":{"type":"string","enum":["PKBarcodeFormatQR","PKBarcodeFormatPDF417","PKBarcodeFormatAztec","PKBarcodeFormatCode128","PKBarcodeFormatEAN13","PKBarcodeFormatCode39","PKBarcodeFormatCodabar","PKBarcodeFormatI2of5"]},"message":{"type":"string"},"messageEncoding":{"default":"iso-8859-1","type":"string"},"altText":{"type":"string"}},"required":["format","message"]}},"rotatingBarcode":{"type":"object","properties":{"totpKey":{"type":"string","minLength":16},"period":{"default":60,"type":"number","enum":[60]},"type":{"default":"QR_CODE","type":"string","enum":["QR_CODE","PDF_417"]}},"required":["totpKey"]},"images":{"type":"object","properties":{"logoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"iconAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"thumbnailAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backgroundAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"footerAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"heroAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"googleLogoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"altitude":{"type":"number"},"relevantText":{"type":"string","maxLength":120}},"required":["latitude","longitude"]}},"maxDistance":{"type":"integer","minimum":10,"maximum":50000},"beacons":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"proximityUuid":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"major":{"type":"integer","minimum":0,"maximum":65535},"minor":{"type":"integer","minimum":0,"maximum":65535},"relevantText":{"type":"string","maxLength":120}},"required":["proximityUuid"]}},"nfc":{"type":"object","properties":{"message":{"type":"string"},"encryptionPublicKey":{"type":"string"},"requiresAuthentication":{"type":"boolean"},"smartTapValue":{"type":"string"}},"required":["message"]},"validity":{"type":"object","properties":{"expirationDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"relevantDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"relevantDates":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"startDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["startDate"]}},"voided":{"type":"boolean"},"sharingProhibited":{"type":"boolean"}}},"featuredActions":{"maxItems":2,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","format":"uri"},"placeIdentifier":{"type":"string","pattern":"^[A-Za-z0-9]{8,40}$"},"type":{"default":"membershipBenefits","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9]{1,40}$"},"identifier":{"type":"string","minLength":1,"maxLength":60}},"required":["label"]}},"poster":{"type":"object","properties":{"enabled":{"default":false,"type":"boolean"},"footerLabel":{"type":"string","maxLength":40},"footerValue":{"type":"string","maxLength":80},"fallbackStyle":{"type":"string","enum":["generic","storeCard","coupon","eventTicket"]},"suppressHeaderDarkening":{"type":"boolean"}}},"googleAction":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":30},"url":{"type":"string","minLength":1,"maxLength":2048}},"required":["label","url"]},"coverHint":{"type":"object","properties":{"enabled":{"default":false,"type":"boolean"},"text":{"default":"","type":"string","maxLength":48},"backgroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"textHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}}},"personalImages":{"type":"object","properties":{"strip":{"type":"object","properties":{"attribute":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$"}},"required":["attribute"]},"logo":{"type":"object","properties":{"attribute":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$"}},"required":["attribute"]}}},"appLink":{"type":"object","properties":{"appStoreIds":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"launchUrl":{"type":"string","format":"uri"}}},"back":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["label","url"]}},"texts":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}}},"semantics":{"type":"object","properties":{},"additionalProperties":{}},"localizations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2}(-[A-Z]{2})?$"},"additionalProperties":{"type":"object","properties":{"fields":{"type":"object","properties":{"header":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"primary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"secondary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"auxiliary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"back":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}}}},"texts":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}}}}},"required":["useCase","identity","branding","fields","barcodes","images","validity"]},"locales":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"baseVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["walletDocument"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"walletDocument":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"locales":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","templateId","version","walletDocument","locales","createdById","createdAt","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/versions/draft":{"put":{"summary":"Entwurf speichern","tags":["templates"],"description":"Speichert das Design (`walletDocument`) als Entwurfsversion der Vorlage. `baseVersion` und `baseRevision` verhindern, dass eine andere Sitzung überschrieben wird: passen sie nicht mehr, antwortet die Route mit 409 und dem aktuellen Stand. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"walletDocument":{"type":"object","properties":{"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"identity":{"type":"object","properties":{"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClass":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"serial":{"type":"string"},"transitType":{"type":"string","enum":["PKTransitTypeAir","PKTransitTypeBus","PKTransitTypeTrain","PKTransitTypeBoat","PKTransitTypeGeneric"]}},"required":["passType","googleClass"]},"branding":{"type":"object","properties":{"backgroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"foregroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"labelHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"stripLabelHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"logoText":{"type":"string","maxLength":40},"suppressStripShine":{"type":"boolean"},"groupingIdentifier":{"type":"string"},"landingStyle":{"type":"string","enum":["classic","spotlight","card"]}},"required":["backgroundHex","foregroundHex","labelHex"]},"fields":{"type":"object","properties":{"header":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"primary":{"minItems":0,"maxItems":2,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"secondary":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"auxiliary":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"back":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}}},"required":["primary"]},"loyalty":{"type":"object","properties":{"pointsLabel":{"type":"string","minLength":1,"maxLength":40},"pointsBalance":{"type":["number","string"]},"secondaryPointsLabel":{"type":"string","minLength":1,"maxLength":40},"secondaryPointsBalance":{"type":["number","string"]},"accountId":{"type":"string"},"accountName":{"type":"string"},"tier":{"type":"string"}},"required":["pointsLabel","pointsBalance"]},"giftCard":{"type":"object","properties":{"balance":{"type":"number","minimum":0},"currencyCode":{"type":"string","minLength":3,"maxLength":3}},"required":["balance","currencyCode"]},"barcodes":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"format":{"type":"string","enum":["PKBarcodeFormatQR","PKBarcodeFormatPDF417","PKBarcodeFormatAztec","PKBarcodeFormatCode128","PKBarcodeFormatEAN13","PKBarcodeFormatCode39","PKBarcodeFormatCodabar","PKBarcodeFormatI2of5"]},"message":{"type":"string"},"messageEncoding":{"default":"iso-8859-1","type":"string"},"altText":{"type":"string"}},"required":["format","message"]}},"rotatingBarcode":{"type":"object","properties":{"totpKey":{"type":"string","minLength":16},"period":{"default":60,"type":"number","enum":[60]},"type":{"default":"QR_CODE","type":"string","enum":["QR_CODE","PDF_417"]}},"required":["totpKey"]},"images":{"type":"object","properties":{"logoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"iconAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"thumbnailAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backgroundAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"footerAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"heroAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"googleLogoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"altitude":{"type":"number"},"relevantText":{"type":"string","maxLength":120}},"required":["latitude","longitude"]}},"maxDistance":{"type":"integer","minimum":10,"maximum":50000},"beacons":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"proximityUuid":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"major":{"type":"integer","minimum":0,"maximum":65535},"minor":{"type":"integer","minimum":0,"maximum":65535},"relevantText":{"type":"string","maxLength":120}},"required":["proximityUuid"]}},"nfc":{"type":"object","properties":{"message":{"type":"string"},"encryptionPublicKey":{"type":"string"},"requiresAuthentication":{"type":"boolean"},"smartTapValue":{"type":"string"}},"required":["message"]},"validity":{"type":"object","properties":{"expirationDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"relevantDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"relevantDates":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"startDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["startDate"]}},"voided":{"type":"boolean"},"sharingProhibited":{"type":"boolean"}}},"featuredActions":{"maxItems":2,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","format":"uri"},"placeIdentifier":{"type":"string","pattern":"^[A-Za-z0-9]{8,40}$"},"type":{"default":"membershipBenefits","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9]{1,40}$"},"identifier":{"type":"string","minLength":1,"maxLength":60}},"required":["label"]}},"poster":{"type":"object","properties":{"enabled":{"default":false,"type":"boolean"},"footerLabel":{"type":"string","maxLength":40},"footerValue":{"type":"string","maxLength":80},"fallbackStyle":{"type":"string","enum":["generic","storeCard","coupon","eventTicket"]},"suppressHeaderDarkening":{"type":"boolean"}}},"googleAction":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":30},"url":{"type":"string","minLength":1,"maxLength":2048}},"required":["label","url"]},"coverHint":{"type":"object","properties":{"enabled":{"default":false,"type":"boolean"},"text":{"default":"","type":"string","maxLength":48},"backgroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"textHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}}},"personalImages":{"type":"object","properties":{"strip":{"type":"object","properties":{"attribute":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$"}},"required":["attribute"]},"logo":{"type":"object","properties":{"attribute":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$"}},"required":["attribute"]}}},"appLink":{"type":"object","properties":{"appStoreIds":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"launchUrl":{"type":"string","format":"uri"}}},"back":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["label","url"]}},"texts":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}}},"semantics":{"type":"object","properties":{},"additionalProperties":{}},"localizations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2}(-[A-Z]{2})?$"},"additionalProperties":{"type":"object","properties":{"fields":{"type":"object","properties":{"header":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"primary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"secondary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"auxiliary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"back":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}}}},"texts":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}}}}},"required":["useCase","identity","branding","fields","barcodes","images","validity"]},"locales":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"baseVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"baseRevision":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["walletDocument"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"walletDocument":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"locales":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","templateId","version","walletDocument","locales","createdById","createdAt","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/preflight":{"post":{"summary":"Veröffentlichung prüfen","tags":["templates"],"description":"Prüft das Design vor dem Veröffentlichen: Icon, Barcode mit `{{code}}`, Platzhalter gegen die Feldliste, Kontraste von Text und Logo auf Apple und Google, Zahl der Felder je Stil, Ablaufdatum. Liefert Fehler und Hinweise.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"walletDocument":{"type":"object","properties":{"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"identity":{"type":"object","properties":{"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClass":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"serial":{"type":"string"},"transitType":{"type":"string","enum":["PKTransitTypeAir","PKTransitTypeBus","PKTransitTypeTrain","PKTransitTypeBoat","PKTransitTypeGeneric"]}},"required":["passType","googleClass"]},"branding":{"type":"object","properties":{"backgroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"foregroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"labelHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"stripLabelHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"logoText":{"type":"string","maxLength":40},"suppressStripShine":{"type":"boolean"},"groupingIdentifier":{"type":"string"},"landingStyle":{"type":"string","enum":["classic","spotlight","card"]}},"required":["backgroundHex","foregroundHex","labelHex"]},"fields":{"type":"object","properties":{"header":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"primary":{"minItems":0,"maxItems":2,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"secondary":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"auxiliary":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"back":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}}},"required":["primary"]},"loyalty":{"type":"object","properties":{"pointsLabel":{"type":"string","minLength":1,"maxLength":40},"pointsBalance":{"type":["number","string"]},"secondaryPointsLabel":{"type":"string","minLength":1,"maxLength":40},"secondaryPointsBalance":{"type":["number","string"]},"accountId":{"type":"string"},"accountName":{"type":"string"},"tier":{"type":"string"}},"required":["pointsLabel","pointsBalance"]},"giftCard":{"type":"object","properties":{"balance":{"type":"number","minimum":0},"currencyCode":{"type":"string","minLength":3,"maxLength":3}},"required":["balance","currencyCode"]},"barcodes":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"format":{"type":"string","enum":["PKBarcodeFormatQR","PKBarcodeFormatPDF417","PKBarcodeFormatAztec","PKBarcodeFormatCode128","PKBarcodeFormatEAN13","PKBarcodeFormatCode39","PKBarcodeFormatCodabar","PKBarcodeFormatI2of5"]},"message":{"type":"string"},"messageEncoding":{"default":"iso-8859-1","type":"string"},"altText":{"type":"string"}},"required":["format","message"]}},"rotatingBarcode":{"type":"object","properties":{"totpKey":{"type":"string","minLength":16},"period":{"default":60,"type":"number","enum":[60]},"type":{"default":"QR_CODE","type":"string","enum":["QR_CODE","PDF_417"]}},"required":["totpKey"]},"images":{"type":"object","properties":{"logoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"iconAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"thumbnailAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backgroundAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"footerAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"heroAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"googleLogoAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"altitude":{"type":"number"},"relevantText":{"type":"string","maxLength":120}},"required":["latitude","longitude"]}},"maxDistance":{"type":"integer","minimum":10,"maximum":50000},"beacons":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"proximityUuid":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"major":{"type":"integer","minimum":0,"maximum":65535},"minor":{"type":"integer","minimum":0,"maximum":65535},"relevantText":{"type":"string","maxLength":120}},"required":["proximityUuid"]}},"nfc":{"type":"object","properties":{"message":{"type":"string"},"encryptionPublicKey":{"type":"string"},"requiresAuthentication":{"type":"boolean"},"smartTapValue":{"type":"string"}},"required":["message"]},"validity":{"type":"object","properties":{"expirationDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"relevantDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"relevantDates":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"startDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["startDate"]}},"voided":{"type":"boolean"},"sharingProhibited":{"type":"boolean"}}},"featuredActions":{"maxItems":2,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","format":"uri"},"placeIdentifier":{"type":"string","pattern":"^[A-Za-z0-9]{8,40}$"},"type":{"default":"membershipBenefits","type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9]{1,40}$"},"identifier":{"type":"string","minLength":1,"maxLength":60}},"required":["label"]}},"poster":{"type":"object","properties":{"enabled":{"default":false,"type":"boolean"},"footerLabel":{"type":"string","maxLength":40},"footerValue":{"type":"string","maxLength":80},"fallbackStyle":{"type":"string","enum":["generic","storeCard","coupon","eventTicket"]},"suppressHeaderDarkening":{"type":"boolean"}}},"googleAction":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":30},"url":{"type":"string","minLength":1,"maxLength":2048}},"required":["label","url"]},"coverHint":{"type":"object","properties":{"enabled":{"default":false,"type":"boolean"},"text":{"default":"","type":"string","maxLength":48},"backgroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"textHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}}},"personalImages":{"type":"object","properties":{"strip":{"type":"object","properties":{"attribute":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$"}},"required":["attribute"]},"logo":{"type":"object","properties":{"attribute":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$"}},"required":["attribute"]}}},"appLink":{"type":"object","properties":{"appStoreIds":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"launchUrl":{"type":"string","format":"uri"}}},"back":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["label","url"]}},"texts":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}}},"semantics":{"type":"object","properties":{},"additionalProperties":{}},"localizations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2}(-[A-Z]{2})?$"},"additionalProperties":{"type":"object","properties":{"fields":{"type":"object","properties":{"header":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"primary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"secondary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"auxiliary":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}},"back":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","maxLength":120},"value":{"type":"string"},"changeMessage":{"type":"string"},"textAlignment":{"type":"string","enum":["PKTextAlignmentLeft","PKTextAlignmentCenter","PKTextAlignmentRight","PKTextAlignmentNatural"]},"numberStyle":{"type":"string","enum":["PKNumberStyleDecimal","PKNumberStylePercent","PKNumberStyleScientific","PKNumberStyleSpellOut"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3},"dateStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"timeStyle":{"type":"string","enum":["PKDateStyleNone","PKDateStyleShort","PKDateStyleMedium","PKDateStyleLong","PKDateStyleFull"]},"isRelative":{"type":"boolean"},"ignoresTimeZone":{"type":"boolean"},"attributedValue":{"type":"string"}},"required":["key","value"]}}}},"texts":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}}}}},"required":["useCase","identity","branding","fields","barcodes","images","validity"]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"contrastRatio":{"type":"number"},"issues":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"message":{"type":"string"},"path":{"type":"string"}},"required":["severity","code","message"],"additionalProperties":false}}},"required":["ok","contrastRatio","issues"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/contrast":{"post":{"summary":"Kontrast messen","tags":["templates"],"description":"Misst für Farben und Bilder, wie beide Wallets sie zeichnen: Vorder- und Beschriftungsfarbe auf der Hintergrundfarbe (Apple, ≥ 4,5:1 und ≥ 3:1), die Textfarbe, die Google Wallet auf dieser Kartenfarbe wählt, und das Logo (Apple-Kopfzeile, Google-Kreis) gegen die Kartenfarbe (≥ 3:1), samt Hinweis auf einen gefüllten Kasten um das Logo. Dieselben Hinweise wie die Prüfung vor dem Veröffentlichen.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"backgroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"foregroundHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"labelHex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"logoAssetId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"googleLogoAssetId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"iconAssetId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["backgroundHex","foregroundHex","labelHex"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"object","properties":{"apple":{"type":"object","properties":{"foreground":{"type":"number","description":"Contrast of the foreground colour on the background (recommend ≥ 4.5)."},"label":{"type":"number","description":"Contrast of the label colour on the background (recommend ≥ 3)."}},"required":["foreground","label"],"additionalProperties":false},"google":{"type":"object","properties":{"color":{"type":"string","enum":["light","dark"],"description":"The text colour Google Wallet draws on this card colour."},"hex":{"type":"string"},"ratio":{"type":"number"},"weak":{"type":"boolean","description":"The card colour sits in the band where neither text colour reaches 4.5:1."}},"required":["color","hex","ratio","weak"],"additionalProperties":false}},"required":["apple","google"],"additionalProperties":false},"logo":{"type":"object","properties":{"apple":{"anyOf":[{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"analysis":{"type":"object","properties":{"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"transparentShare":{"type":"number"},"dominant":{"type":"array","items":{"type":"object","properties":{"hex":{"type":"string"},"share":{"type":"number"}},"required":["hex","share"],"additionalProperties":false}},"boxHex":{"type":["string","null"]}},"required":["width","height","transparentShare","dominant","boxHex"],"additionalProperties":false},"apple":{"type":"object","properties":{"backgroundHex":{"type":"string"},"ratio":{"type":"number"},"ok":{"type":"boolean"}},"required":["backgroundHex","ratio","ok"],"additionalProperties":false},"google":{"type":"object","properties":{"backgroundHex":{"type":"string"},"ratio":{"type":"number"},"ok":{"type":"boolean"}},"required":["backgroundHex","ratio","ok"],"additionalProperties":false},"opaqueBox":{"anyOf":[{"type":"object","properties":{"hex":{"type":"string"},"ratioToBackground":{"type":"number"}},"required":["hex","ratioToBackground"],"additionalProperties":false},{"type":"null"}]}},"required":["assetId","analysis","apple","google","opaqueBox"],"additionalProperties":false},{"type":"null"}]},"google":{"anyOf":[{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"analysis":{"type":"object","properties":{"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"transparentShare":{"type":"number"},"dominant":{"type":"array","items":{"type":"object","properties":{"hex":{"type":"string"},"share":{"type":"number"}},"required":["hex","share"],"additionalProperties":false}},"boxHex":{"type":["string","null"]}},"required":["width","height","transparentShare","dominant","boxHex"],"additionalProperties":false},"apple":{"type":"object","properties":{"backgroundHex":{"type":"string"},"ratio":{"type":"number"},"ok":{"type":"boolean"}},"required":["backgroundHex","ratio","ok"],"additionalProperties":false},"google":{"type":"object","properties":{"backgroundHex":{"type":"string"},"ratio":{"type":"number"},"ok":{"type":"boolean"}},"required":["backgroundHex","ratio","ok"],"additionalProperties":false},"opaqueBox":{"anyOf":[{"type":"object","properties":{"hex":{"type":"string"},"ratioToBackground":{"type":"number"}},"required":["hex","ratioToBackground"],"additionalProperties":false},{"type":"null"}]}},"required":["assetId","analysis","apple","google","opaqueBox"],"additionalProperties":false},{"type":"null"}]}},"required":["apple","google"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","enum":["warning"]},"code":{"type":"string"},"message":{"type":"string"},"path":{"type":"string"}},"required":["severity","code","message","path"],"additionalProperties":false}}},"required":["text","logo","issues"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/versions/{version}/publish":{"post":{"summary":"Version veröffentlichen","tags":["templates"],"description":"Macht die Version zur aktiven; alle Pässe der Vorlage bekommen das neue Design und werden still an die Wallets gepusht.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"in":"path","name":"version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"useCase":{"type":"string","enum":["coupon","loyalty","giftCard","membership","eventTicket","boardingPass","transit","generic"]},"passType":{"type":"string","enum":["boardingPass","coupon","eventTicket","generic","storeCard"]},"googleClassType":{"type":"string","enum":["loyalty","offer","eventTicket","flight","transit","generic","giftCard"]},"status":{"type":"string","enum":["draft","published","archived"]},"folderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"currentVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentDraftVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"valueSource":{"anyOf":[{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["mode","value"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["lists"]},"lists":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sharePct":{"type":"integer","minimum":0,"maximum":100},"utmSource":{"description":"Nur für Pässe mit dieser utm_source (Kanal der Landing-Seite). Ohne Angabe gilt die Liste für alle Quellen. Beim Ausstellen ziehen zuerst die Listen der Quelle des Passes, solange sie Codes haben, sonst die Listen ohne Quelle; Listen einer anderen Quelle nie.","type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"}},"required":["poolId","sharePct"],"additionalProperties":false}},"onExhausted":{"default":"block","type":"string","enum":["block","pattern"]},"fallbackPattern":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["mode","lists","onExhausted"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["api"]},"url":{"type":"string","maxLength":500,"format":"uri"},"method":{"default":"POST","type":"string","enum":["GET","POST"]},"headers":{"default":[],"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","maxLength":500}},"required":["name","value"],"additionalProperties":false}},"bodyTemplate":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]},"valuePath":{"default":"value","type":"string","maxLength":120},"timeoutMs":{"default":4000,"type":"integer","minimum":500,"maximum":8000},"fallback":{"default":{"kind":"block"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["block"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["list"]},"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind","poolId"],"additionalProperties":false}]}},"required":["mode","url","method","headers","valuePath","timeoutMs","fallback"],"additionalProperties":false}]},{"type":"null"}]},"attributeSchema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"label":{"type":"string","minLength":1,"maxLength":60},"type":{"type":"string","enum":["text","number","date"]},"required":{"default":false,"type":"boolean"},"fromPublicClaim":{"default":false,"type":"boolean"},"role":{"type":"string","enum":["eventStart"]}},"required":["key","label","type","required","fromPublicClaim"],"additionalProperties":false}},"organizationName":{"type":"string"},"logoText":{"type":["string","null"]},"description":{"type":["string","null"]},"eventStartsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"eventEndsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["id","workspaceId","name","useCase","passType","googleClassType","status","folderId","promotionId","currentVersion","currentDraftVersion","valueSource","attributeSchema","organizationName","logoText","description","eventStartsAt","eventEndsAt","createdById","createdAt","updatedAt","publishedAt","archivedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/promotions":{"get":{"summary":"Aktionen eines Workspace","tags":["promotions"],"description":"Alle Aktionen des Workspace mit Zustand (`draft` ohne Start, `scheduled` Start nach heute, `running`, `ended` Ende vor heute, `archived`), heute in der Zeitzone des Workspace, und Zählern je Art der Teile. `passesIssued` und `activePasses` zählen die Pässe, deren aktuelle Vorlage zur Aktion gehört. `year` filtert auf Aktionen, deren Zeitraum das Jahr berührt (ohne Start: das Jahr der Anlage; ohne Ende: bis heute). `years` nennt alle Jahre aller Aktionen, absteigend. `q` sucht im Namen. Neueste zuerst (Start, ohne Start die Anlage). Jede Rolle im Workspace.","parameters":[{"schema":{"type":"integer","minimum":2000,"maximum":2100},"in":"query","name":"year","required":false},{"schema":{"type":"string","maxLength":120},"in":"query","name":"q","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"state":{"type":"string","enum":["draft","scheduled","running","ended","archived"]},"archivedAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"counts":{"type":"object","properties":{"templates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"landingPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codeLists":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"campaigns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passesIssued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templates","landingPages","codeLists","campaigns","passesIssued","activePasses"],"additionalProperties":false}},"required":["id","workspaceId","name","startsOn","endsOn","state","archivedAt","createdAt","updatedAt","counts"],"additionalProperties":false}},"years":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["data","years"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Aktion anlegen","tags":["promotions"],"description":"Name (höchstens 120 Zeichen) und optional Zeitraum als Kalendertage; Ende vor Start ist 422 `ends_before_start`. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]}},"required":["name"]},"example":{"name":"Milka Ostern 2026","startsOn":"2026-03-15","endsOn":"2026-04-30"}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"state":{"type":"string","enum":["draft","scheduled","running","ended","archived"]},"archivedAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"counts":{"type":"object","properties":{"templates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"landingPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codeLists":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"campaigns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passesIssued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templates","landingPages","codeLists","campaigns","passesIssued","activePasses"],"additionalProperties":false}},"required":["id","workspaceId","name","startsOn","endsOn","state","archivedAt","createdAt","updatedAt","counts"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/promotions/{id}":{"get":{"summary":"Aktion mit ihren Teilen","tags":["promotions"],"description":"Die Aktion wie in der Liste und `parts`: ihre Pass-Vorlagen, Landing-Seiten, Code-Listen (ohne gelöschte) und Kampagnen. Ohne Zugang zum Workspace 404 `promotion_not_found`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"state":{"type":"string","enum":["draft","scheduled","running","ended","archived"]},"archivedAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"counts":{"type":"object","properties":{"templates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"landingPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codeLists":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"campaigns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passesIssued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templates","landingPages","codeLists","campaigns","passesIssued","activePasses"],"additionalProperties":false},"parts":{"type":"object","properties":{"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"status":{"type":"string"},"archivedAt":{"type":["string","null"]}},"required":["id","name","status","archivedAt"],"additionalProperties":false}},"landingPages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"active":{"type":"boolean"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"isTest":{"type":"boolean"}},"required":["id","slug","active","templateId","isTest"],"additionalProperties":false}},"codeLists":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"templateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"totalCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assignedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","templateId","totalCount","assignedCount"],"additionalProperties":false}},"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"status":{"type":"string"},"scheduleAt":{"type":["string","null"]}},"required":["id","name","status","scheduleAt"],"additionalProperties":false}}},"required":["templates","landingPages","codeLists","campaigns"],"additionalProperties":false}},"required":["id","workspaceId","name","startsOn","endsOn","state","archivedAt","createdAt","updatedAt","counts","parts"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Aktion ändern","tags":["promotions"],"description":"Name und Zeitraum; `null` leert ein Datum. Ende vor Start 422 `ends_before_start`, eine archivierte Aktion 409 `promotion_archived`. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"state":{"type":"string","enum":["draft","scheduled","running","ended","archived"]},"archivedAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"counts":{"type":"object","properties":{"templates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"landingPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codeLists":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"campaigns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passesIssued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templates","landingPages","codeLists","campaigns","passesIssued","activePasses"],"additionalProperties":false}},"required":["id","workspaceId","name","startsOn","endsOn","state","archivedAt","createdAt","updatedAt","counts"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Aktion löschen","tags":["promotions"],"description":"Nur eine Aktion ohne Teile (sonst 409 `promotion_not_empty`), etwa nach einem Tippfehler; sonst archivieren. Ab der Rolle editor.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/promotions/{id}/duplicate":{"post":{"summary":"Aktion kopieren (aus Vorjahr)","tags":["promotions"],"description":"Legt eine neue Aktion im selben Workspace an, mit Name und optional Zeitraum aus dem Body (ohne Zeitraum ein Entwurf; Ende vor Start 422 `ends_before_start`). Kopiert werden die nicht archivierten Pass-Vorlagen der Aktion als neuer Entwurf (Version 1 aus dem Stand des Editors, mit Treue- und Einlöse-Regel und Standorten) und ihre Landing-Seiten ohne Test-Seiten (neuer Slug, inaktiv, auf die kopierte Vorlage zeigend, sonst auf dieselbe Vorlage, ohne Code-Liste, Ablauf und Kanäle). Mit `templateIds` und `landingPageIds` nur die gewählten (ein Teil, das nicht zur Aktion gehört, 422 `part_not_in_promotion`, dann entsteht nichts); eine gewählte Seite ohne gewählte Vorlage zeigt weiter auf die alte Vorlage. Nie kopiert: Code-Listen, Kampagnen, Zielgruppen, Treue-Automatik; eine Wertquelle aus Code-Listen wird null. Die Quelle bleibt unverändert, auch eine archivierte. `copied` nennt, wie viele Vorlagen und Landing-Seiten entstanden. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"templateIds":{"description":"Nur diese Pass-Vorlagen der Aktion kopieren; fehlt = alle nicht archivierten, [] = keine.","maxItems":500,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"landingPageIds":{"description":"Nur diese Landing-Seiten der Aktion kopieren; fehlt = alle ohne Test-Seiten, [] = keine.","maxItems":500,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["name"]},"examples":{"example1":{"value":{"name":"Milka Ostern 2026"}},"example2":{"value":{"name":"Milka Ostern 2026","templateIds":[],"landingPageIds":[]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"state":{"type":"string","enum":["draft","scheduled","running","ended","archived"]},"archivedAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"counts":{"type":"object","properties":{"templates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"landingPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codeLists":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"campaigns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passesIssued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templates","landingPages","codeLists","campaigns","passesIssued","activePasses"],"additionalProperties":false},"copied":{"type":"object","properties":{"templates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"landingPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templates","landingPages"],"additionalProperties":false}},"required":["id","workspaceId","name","startsOn","endsOn","state","archivedAt","createdAt","updatedAt","counts","copied"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/promotions/{id}/archive":{"post":{"summary":"Aktion archivieren","tags":["promotions"],"description":"Archiviert die Aktion: ihre Pässe (aktuelle Vorlage in der Aktion, Test- und Demo-Pässe eingeschlossen) laufen sofort ab, wie beim Archivieren eines Workspace (valid_until = jetzt, Status bleibt active, nichts wird entwertet, Push an Apple und Google). Landing-Seiten der Aktion gehen aus, geplante Kampagnen in den Entwurf, aktive Automatisierungen ihrer Vorlagen auf pausiert. Danach stellen ihre Vorlagen nichts aus (409 `promotion_archived`), und ihre Teile lassen sich nicht zuordnen oder herausnehmen. `expiredPasses` zählt die Pässe, die jetzt abgelaufen sind; wiederholt ohne Wirkung (0). Ab org_admin im Workspace, nur mit Browser-Sitzung.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"state":{"type":"string","enum":["draft","scheduled","running","ended","archived"]},"archivedAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"counts":{"type":"object","properties":{"templates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"landingPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codeLists":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"campaigns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passesIssued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templates","landingPages","codeLists","campaigns","passesIssued","activePasses"],"additionalProperties":false},"expiredPasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","workspaceId","name","startsOn","endsOn","state","archivedAt","createdAt","updatedAt","counts","expiredPasses"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/promotions/{id}/unarchive":{"post":{"summary":"Aktion reaktivieren","tags":["promotions"],"description":"Öffnet eine archivierte Aktion wieder: ihre Vorlagen stellen wieder aus, ihre Teile lassen sich wieder ändern. Abgelaufene Pässe bleiben abgelaufen, Landing-Seiten bleiben aus, Kampagnen und Automatisierungen bleiben, wie sie sind. Ab org_admin im Workspace, nur mit Browser-Sitzung.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"endsOn":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"state":{"type":"string","enum":["draft","scheduled","running","ended","archived"]},"archivedAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"counts":{"type":"object","properties":{"templates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"landingPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codeLists":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"campaigns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passesIssued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templates","landingPages","codeLists","campaigns","passesIssued","activePasses"],"additionalProperties":false}},"required":["id","workspaceId","name","startsOn","endsOn","state","archivedAt","createdAt","updatedAt","counts"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/preview-pass":{"post":{"summary":"Vorschau-Pass aus dem Entwurf","tags":["templates"],"description":"Baut aus dem Entwurf der Vorlage (der Stand, den der Editor speichert, `PUT /v1/templates/{id}/versions/draft`; ohne Entwurf die neueste Version) einen signierten Apple-Pass zum Ansehen auf dem iPhone. Der Pass ist live: er trägt `webServiceURL` (das Apple-Wallet-Web-Service dieser API) und ein eigenes `authenticationToken`, Wallet registriert ihn, und 48 Stunden lang bringt jedes Speichern des Entwurfs (`PUT …/versions/draft` und jede andere Änderung an Entwurf oder Vorlage) ihn binnen etwa fünf Sekunden per Push auf den aktuellen Stand, mit den Beispielwerten vom Bau. Er läuft durch denselben Bau wie ein ausgestellter Pass (Farben, Bilder, Felder, Standorte, Zertifikat der Organisation oder der Plattform), ist aber kein Pass: keine Zeile, kein Kontingent, keine Webhooks und Ereignisse, Seriennummer `preview-…`, spätestens 48 Stunden nach dem Bau abgelaufen, nicht teilbar. Jeder Barcode behält Format und Platz, trägt aber einen festen Beispielwert (`VORSCHAU-…`, bei EAN-13, ITF und Codabar Nullen) mit Hinweis, NFC entfällt, und die Rückseite sagt in der Sprache des Arbeitsbereichs, dass es eine Vorschau ist. `sampleValues` füllt `{{platzhalter}}` wie die Beispielwerte im Editor (Schlüssel wie `customerName` oder `attr.stadt`, unbekannte werden ignoriert, Werte nach 500 Zeichen gekürzt; `code`, `serial` und `passId` gehören dem Vorschau-Pass). Fehlende Platzhalter wie bei einem neuen Pass. `baseVersion` und `baseRevision` wie bei `PUT …/versions/draft` (was das letzte Speichern geantwortet hat): passt der gespeicherte Stand nicht mehr, 409 `conflict` mit `details.currentRevision`. Der Editor speichert vorher, was noch aussteht. Antwort: die `.pkpass`-Datei als Anhang, dazu Kopfzeilen `x-preview-serial` (Seriennummer dieser Vorschau, wie in `GET …/preview-passes`) und `x-preview-expires-at` (Ende der Vorschau, ISO 8601). Nur mit Anmeldung im Browser (ein API-Token bekommt 403 `session_required`), ab der Rolle editor, nicht in einer Übernahme nur zum Lesen (403 `impersonation_read_only`); pausierte Organisation 423; 409 `apple_credential_missing` ohne nutzbares Apple-Zertifikat (`details.reason`), 422 `preview_invalid` mit `details.issues` (die Fehler der Prüfung vor dem Veröffentlichen), Ratenklasse `preview_pass` (30 je Stunde und Person) und höchstens 100 Vorschauen je Stunde und Organisation (429 `rate_limited`). Audit `template.preview_pass`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"sampleValues":{"description":"Beispielwerte für Platzhalter, Schlüssel ohne Klammern (`customerName`, `attr.stadt`).","type":"object","propertyNames":{"type":"string","maxLength":100},"additionalProperties":{"type":"string","maxLength":2000}},"baseVersion":{"description":"currentDraftVersion, die der Editor zuletzt gespeichert hat.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"baseRevision":{"description":"updatedAt der Version, die das letzte Speichern geantwortet hat.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}}},{"type":"null"}]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Signierte .pkpass-Datei (application/vnd.apple.pkpass)","content":{"application/json":{"schema":{"type":"string","format":"binary","description":"Signierte .pkpass-Datei (application/vnd.apple.pkpass)"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/preview-pass/link":{"post":{"summary":"Link zum Vorschau-Pass fürs Handy","tags":["templates"],"description":"Baut wie `POST /v1/templates/{id}/preview-pass` einen Live-Vorschau-Pass aus dem Entwurf und gibt statt der Datei einen Link zurück, den das Handy ohne Anmeldung öffnet (`GET /v1/preview-pass/{token}`, etwa als QR-Code im Editor). Der Link gilt 15 Minuten und für höchstens 5 Downloads; jeder Download liefert denselben Vorschau-Pass (dieselbe `serial`), zweimal scannen ergibt also keinen zweiten Pass. Der Pass ist live: er trägt `webServiceURL` (das Apple-Wallet-Web-Service dieser API) und ein eigenes `authenticationToken`, Wallet registriert ihn, und 48 Stunden lang bringt jedes Speichern des Entwurfs (`PUT …/versions/draft` und jede andere Änderung an Entwurf oder Vorlage) ihn binnen etwa fünf Sekunden per Push auf den aktuellen Stand, mit den Beispielwerten vom Bau. 201: `url` (absolut), `expiresAt` (Ende des Links), `passExpiresAt` (Ende der Vorschau, 48 Stunden), `serial`. Body und Fehler wie beim Vorschau-Pass. Nur mit Anmeldung im Browser (ein API-Token bekommt 403 `session_required`), ab der Rolle editor, nicht in einer Übernahme nur zum Lesen (403 `impersonation_read_only`); pausierte Organisation 423; 409 `apple_credential_missing` ohne nutzbares Apple-Zertifikat (`details.reason`), 422 `preview_invalid` mit `details.issues` (die Fehler der Prüfung vor dem Veröffentlichen), Ratenklasse `preview_pass` (30 je Stunde und Person) und höchstens 100 Vorschauen je Stunde und Organisation (429 `rate_limited`). Audit `template.preview_pass.link`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"sampleValues":{"description":"Beispielwerte für Platzhalter, Schlüssel ohne Klammern (`customerName`, `attr.stadt`).","type":"object","propertyNames":{"type":"string","maxLength":100},"additionalProperties":{"type":"string","maxLength":2000}},"baseVersion":{"description":"currentDraftVersion, die der Editor zuletzt gespeichert hat.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"baseRevision":{"description":"updatedAt der Version, die das letzte Speichern geantwortet hat.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}}},{"type":"null"}]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Öffnet den Vorschau-Pass auf dem Handy, ohne Anmeldung."},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"Bis dahin gilt der Link."},"passExpiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"Bis dahin ist die Vorschau live."},"serial":{"type":"string"}},"required":["url","expiresAt","passExpiresAt","serial"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/preview-pass/{token}":{"get":{"summary":"Vorschau-Pass über den Link öffnen","tags":["templates"],"description":"Ohne Anmeldung: der Live-Vorschau-Pass hinter einem Link aus `POST /v1/templates/{id}/preview-pass/link`, neu gebaut aus dem aktuellen Entwurf, als `.pkpass` (Safari auf dem iPhone bietet „Zu Wallet hinzufügen“ an). Jeder Download desselben Links liefert denselben Pass (dieselbe Seriennummer). 404 `not_found` für einen unbekannten Token und sobald die Vorschau vorzeitig beendet, mit der Vorlage archiviert oder aufgeräumt ist (der Link geht mit ihr), 410 `gone`, wenn der Link abgelaufen oder aufgebraucht ist oder die Vorschau abgelaufen, aber noch nicht aufgeräumt, 429 `rate_limited` (Ratenklasse `preview_link`: je Link und je IP). Lässt sich der Entwurf gerade nicht bauen, kommen die Fehler des Baus (422 `preview_invalid`, 409 `apple_credential_missing`, 423) und der Download zählt nicht. `HEAD` prüft nur (dieselben Codes ohne Bau), baut nichts und zählt keinen Download. Bevorzugt `Accept` `text/html` vor `application/json` (Safari nach dem Scan des QR-Codes), kommen 404, 410 und 429 als kleine HTML-Seite mit demselben Status (ein Satz, was zu tun ist; Deutsch, Englisch oder Französisch nach `Accept-Language`, sonst Deutsch; `Cache-Control: no-store`, `noindex`, CSP ohne Skripte); API-Clients (`application/json`, `*/*` oder ohne `Accept`) bekommen weiter den JSON-Umschlag.","parameters":[{"schema":{"type":"string","maxLength":100},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Signierte .pkpass-Datei (application/vnd.apple.pkpass)","content":{"application/json":{"schema":{"type":"string","format":"binary","description":"Signierte .pkpass-Datei (application/vnd.apple.pkpass)"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/preview-passes":{"get":{"summary":"Aktive Vorschau-Pässe einer Vorlage","tags":["templates"],"description":"Die Live-Vorschauen dieser Vorlage, die die angemeldete Person gebaut hat und die noch nicht abgelaufen sind (auch für Plattform-Admins nur die eigenen), neueste zuerst: `serial`, `createdAt`, `expiresAt`, `devices` (Geräte, die Wallet registriert hat) und `lastUpdatedAt` (letzter Push nach dem Speichern, sonst null). Der Editor zeigt daraus „Live auf 1 Gerät“. Nur mit Anmeldung im Browser (403 `session_required` für API-Tokens), ab der Rolle editor.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"serial":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"devices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["serial","createdAt","expiresAt","devices","lastUpdatedAt"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/preview-passes/{serial}":{"delete":{"summary":"Vorschau-Pass beenden","tags":["templates"],"description":"Beendet eine Live-Vorschau vor Ablauf der 48 Stunden: keine Updates mehr, registrierte Geräte und Links fallen weg (Wallet behält den letzten Stand, bis er abläuft). Nur wer sie gebaut hat oder ein Plattform-Admin (sonst 403 `permission_denied`); unbekannt oder schon abgelaufen 404. Nur mit Anmeldung im Browser (403 `session_required` für API-Tokens), ab der Rolle editor. Audit `template.preview_pass.end`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","maxLength":100},"in":"path","name":"serial","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/template-folders":{"get":{"summary":"Ordner der Vorlagen auflisten","tags":["templates"],"description":"Flache Liste mit `parentId`; den Baum baut dein Client.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"color":{"type":["string","null"]},"sortOrder":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","parentId","name","color","sortOrder","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Ordner anlegen","tags":["templates"],"description":"Name, Farbe und optional ein Eltern-Ordner (`parentId`). Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"color":{"anyOf":[{"anyOf":[{"type":"string","enum":["brand"]},{"type":"string","pattern":"^#[0-9a-f]{6}$"}]},{"type":"null"}]}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"color":{"type":["string","null"]},"sortOrder":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","parentId","name","color","sortOrder","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/template-folders/{id}":{"patch":{"summary":"Ordner ändern","tags":["templates"],"description":"Name, Farbe, Reihenfolge oder Eltern-Ordner; `parentId: null` verschiebt ihn nach oben. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"color":{"anyOf":[{"anyOf":[{"type":"string","enum":["brand"]},{"type":"string","pattern":"^#[0-9a-f]{6}$"}]},{"type":"null"}]},"sortOrder":{"type":"integer","minimum":-2147483648,"maximum":2147483647}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"color":{"type":["string","null"]},"sortOrder":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","parentId","name","color","sortOrder","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Ordner löschen","tags":["templates"],"description":"Vorlagen und Unterordner rücken eine Ebene nach oben. Ab der Rolle editor.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/assets":{"get":{"summary":"Bilder auflisten","tags":["assets"],"parameters":[{"schema":{"type":"string","enum":["logo","icon","strip","thumbnail","background","footer","hero","cover","landing"]},"in":"query","name":"kind","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["logo","icon","strip","thumbnail","background","footer","hero","cover","landing"]},"originalKey":{"type":"string"},"derivatives":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"mime":{"type":"string"},"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"originalFilename":{"type":["string","null"]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"signedUrl":{"type":["string","null"]}},"required":["id","workspaceId","kind","originalKey","derivatives","mime","width","height","sizeBytes","originalFilename","createdById","createdAt","signedUrl"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Bild hochladen","tags":["assets"],"description":"Multipart. Logo, Icon, Strip oder Hero; doWallet erzeugt die Wallet-Varianten (1x/2x/3x) selbst.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["logo","icon","strip","thumbnail","background","footer","hero","cover","landing"]},"originalKey":{"type":"string"},"derivatives":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"mime":{"type":"string"},"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"originalFilename":{"type":["string","null"]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"signedUrl":{"type":["string","null"]}},"required":["id","workspaceId","kind","originalKey","derivatives","mime","width","height","sizeBytes","originalFilename","createdById","createdAt","signedUrl"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"415":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/assets/{id}":{"get":{"summary":"Bild lesen","tags":["assets"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["logo","icon","strip","thumbnail","background","footer","hero","cover","landing"]},"originalKey":{"type":"string"},"derivatives":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"mime":{"type":"string"},"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"originalFilename":{"type":["string","null"]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"signedUrl":{"type":["string","null"]}},"required":["id","workspaceId","kind","originalKey","derivatives","mime","width","height","sizeBytes","originalFilename","createdById","createdAt","signedUrl"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Bild löschen","tags":["assets"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/wallet-credentials":{"get":{"summary":"Zertifikate auflisten","tags":["wallet-credentials"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"kind":{"type":"string","enum":["apple","google"]},"environment":{"type":"string","enum":["development","production"]},"metadata":{"type":"object","properties":{"passTypeId":{"type":"string"},"teamId":{"type":"string"},"certExpiresAt":{"type":"string"},"organizationName":{"type":"string"},"issuerId":{"type":"string"},"serviceAccountEmail":{"type":"string"},"projectId":{"type":"string"}},"additionalProperties":false},"certExpiresAt":{"type":["string","null"]},"certStatus":{"anyOf":[{"type":"string","enum":["ok","expiring","expired"]},{"type":"null"}]},"isPlatformDefault":{"type":"boolean"},"pushable":{"type":"boolean"},"warnings":{"type":"array","items":{"type":"string","enum":["sandbox_environment"]}},"uploadedById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","orgId","kind","environment","metadata","certExpiresAt","certStatus","isPlatformDefault","pushable","warnings","uploadedById","createdAt","revokedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Zertifikat hochladen","tags":["wallet-credentials"],"description":"Apple: Pass-Type-ID-Zertifikat plus Schlüssel; Google: Service-Account-JSON mit Issuer-ID. Verschlüsselt gespeichert.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"kind":{"type":"string","enum":["apple","google"]},"environment":{"type":"string","enum":["development","production"]},"metadata":{"type":"object","properties":{"passTypeId":{"type":"string"},"teamId":{"type":"string"},"certExpiresAt":{"type":"string"},"organizationName":{"type":"string"},"issuerId":{"type":"string"},"serviceAccountEmail":{"type":"string"},"projectId":{"type":"string"}},"additionalProperties":false},"certExpiresAt":{"type":["string","null"]},"certStatus":{"anyOf":[{"type":"string","enum":["ok","expiring","expired"]},{"type":"null"}]},"isPlatformDefault":{"type":"boolean"},"pushable":{"type":"boolean"},"warnings":{"type":"array","items":{"type":"string","enum":["sandbox_environment"]}},"uploadedById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","orgId","kind","environment","metadata","certExpiresAt","certStatus","isPlatformDefault","pushable","warnings","uploadedById","createdAt","revokedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/wallet-config":{"get":{"summary":"Wallet-Konfiguration lesen","tags":["wallet-credentials"],"description":"Was für Apple und Google aktiv ist: eigene Zertifikate oder die doWallet-Standardkonfiguration.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"apple":{"type":"object","properties":{"own":{"type":"boolean"},"platformDefault":{"type":"boolean"}},"required":["own","platformDefault"],"additionalProperties":false},"google":{"type":"object","properties":{"own":{"type":"boolean"},"platformDefault":{"type":"boolean"}},"required":["own","platformDefault"],"additionalProperties":false},"blessed":{"type":"boolean"},"blessedAt":{"type":["string","null"]}},"required":["apple","google","blessed","blessedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/apple-csr":{"post":{"summary":"Apple-CSR erzeugen","tags":["wallet-credentials"],"description":"doWallet erzeugt Schlüssel und Zertifikatsanforderung; du lädst die CSR im Apple-Developer-Portal hoch.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"commonName":{"type":"string","maxLength":120},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"csrPem":{"type":"string"}},"required":["csrPem"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/apple-csr/complete":{"post":{"summary":"Apple-Zertifikat einspielen","tags":["wallet-credentials"],"description":"Das von Apple ausgestellte Zertifikat zur vorher erzeugten CSR.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"kind":{"type":"string","enum":["apple","google"]},"environment":{"type":"string","enum":["development","production"]},"metadata":{"type":"object","properties":{"passTypeId":{"type":"string"},"teamId":{"type":"string"},"certExpiresAt":{"type":"string"},"organizationName":{"type":"string"},"issuerId":{"type":"string"},"serviceAccountEmail":{"type":"string"},"projectId":{"type":"string"}},"additionalProperties":false},"certExpiresAt":{"type":["string","null"]},"certStatus":{"anyOf":[{"type":"string","enum":["ok","expiring","expired"]},{"type":"null"}]},"isPlatformDefault":{"type":"boolean"},"pushable":{"type":"boolean"},"warnings":{"type":"array","items":{"type":"string","enum":["sandbox_environment"]}},"uploadedById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","orgId","kind","environment","metadata","certExpiresAt","certStatus","isPlatformDefault","pushable","warnings","uploadedById","createdAt","revokedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/wallet-credentials/{id}":{"delete":{"summary":"Zertifikat entfernen","tags":["wallet-credentials"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/code-pools/stats":{"get":{"summary":"Code-Listen mit Verfügbarkeit","tags":["code-pools"],"description":"Je Liste: produktive Codes (gesamt, frei, vergeben), Testcodes getrennt, Warnschwelle `lowThreshold` (null = Standardregel unter 10 % Rest), `promotionId` (Aktion, null = ohne) und `low` (mit Schwelle: frei ≤ lowThreshold). Gelöschte Listen fehlen.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"exhaustionPolicy":{"type":"string","enum":["fallback","fail","block"]},"fallbackPattern":{"type":["string","null"]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"available":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assigned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inActivePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inInactivePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assigned7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastAssignedAt":{"type":["string","null"]},"lowThreshold":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"low":{"type":"boolean"},"lowNotifiedAt":{"type":["string","null"]},"test":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"available":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assigned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","available","assigned"],"additionalProperties":false},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"onExhausted":{"type":"string","enum":["block","pattern","api_fallback"]}},"required":["id","name","onExhausted"],"additionalProperties":false}},"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"landingPages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"additionalProperties":false}},"createdAt":{"type":"string"}},"required":["id","name","promotionId","exhaustionPolicy","fallbackPattern","total","available","assigned","inActivePasses","inInactivePasses","assigned7d","lastAssignedAt","lowThreshold","low","lowNotifiedAt","test","templates","campaigns","landingPages","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/code-pools/{id}":{"patch":{"summary":"Code-Liste umbenennen, Warnschwelle oder Erschöpfungsregel ändern","tags":["code-pools"],"description":"`lowThreshold`: ab wie vielen freien Codes die Liste als knapp gilt (null = Standardregel, unter 10 % Rest). Liegt die Liste danach über der Schwelle, gilt eine spätere Unterschreitung wieder als neu und bekommt wieder eine Mail.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"exhaustionPolicy":{"type":"string","enum":["fallback","fail","block"]},"fallbackPattern":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"lowThreshold":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000000},{"type":"null"}]},"promotionId":{"description":"Aktion, zu der das Teil gehört (`GET /v1/workspaces/{id}/promotions`); null = ohne Aktion. Fremde Aktion 404 `promotion_not_found`, archivierte 409 `promotion_archived`.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"allocationStrategy":{"type":"string","enum":["round_robin","random","sequential"]},"utmSourceFilter":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"exhaustionPolicy":{"type":"string","enum":["fallback","fail","block"]},"fallbackPattern":{"type":["string","null"]},"totalCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assignedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lowThreshold":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","templateId","promotionId","name","allocationStrategy","utmSourceFilter","exhaustionPolicy","fallbackPattern","totalCount","assignedCount","lowThreshold","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Code-Liste löschen","tags":["code-pools"],"description":"Ab der Rolle org_admin. Wird die Liste noch genutzt (Vorlage, offene Kampagne „Pass ersetzen“, aktive Landing-Seite), antwortet die Route mit 409 `in_use` und nennt die Nutzer in `details` (`templates`, `campaigns`, `landingPages`). Sonst werden die freien Codes entfernt und die Liste archiviert; vergebene Codes bleiben in den Pässen und im Zuteilungs-Protokoll.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/value-source/variables":{"get":{"summary":"Platzhalter für API-Wertquellen","tags":["code-pools"],"description":"Alle Variablen, die in URL und Request-Body einer API-Wertquelle als `{{name}}` verwendet werden können, z. B. `{{pass.serial}}`, `{{utm.source}}`, `{{attr.<key>}}`.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"}},"required":["name","description"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/value-source/test":{"post":{"summary":"API-Wertquelle testen","tags":["code-pools"],"description":"Ruft deinen Endpunkt mit Testdaten auf und zeigt Wert oder Fehler samt Antwortzeit. Nichts wird gespeichert.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["mode","value"]},{"type":"object","properties":{"mode":{"type":"string","enum":["lists"]},"lists":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sharePct":{"type":"integer","minimum":0,"maximum":100},"utmSource":{"description":"Nur für Pässe mit dieser utm_source (Kanal der Landing-Seite). Ohne Angabe gilt die Liste für alle Quellen. Beim Ausstellen ziehen zuerst die Listen der Quelle des Passes, solange sie Codes haben, sonst die Listen ohne Quelle; Listen einer anderen Quelle nie.","type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"}},"required":["poolId","sharePct"]}},"onExhausted":{"default":"block","type":"string","enum":["block","pattern"]},"fallbackPattern":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["mode","lists"]},{"type":"object","properties":{"mode":{"type":"string","enum":["api"]},"url":{"type":"string","maxLength":500,"format":"uri"},"method":{"default":"POST","type":"string","enum":["GET","POST"]},"headers":{"default":[],"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","maxLength":500}},"required":["name","value"]}},"bodyTemplate":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]},"valuePath":{"default":"value","type":"string","maxLength":120},"timeoutMs":{"default":4000,"type":"integer","minimum":500,"maximum":8000},"fallback":{"default":{"kind":"block"},"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["block"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["static"]},"value":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["list"]},"poolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["kind","poolId"]}]}},"required":["mode","url"]}]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"value":{"type":"string"},"error":{"type":"string"},"ms":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ok","ms"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/code-pools":{"get":{"summary":"Code-Listen auflisten","tags":["code-pools"],"description":"Die Code-Listen des Workspace, ohne gelöschte.","parameters":[{"schema":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"string","enum":["none"]}]},"in":"query","name":"promotionId","required":false,"description":"Nur Teile dieser Aktion; `none` = ohne Aktion."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"allocationStrategy":{"type":"string","enum":["round_robin","random","sequential"]},"utmSourceFilter":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"exhaustionPolicy":{"type":"string","enum":["fallback","fail","block"]},"fallbackPattern":{"type":["string","null"]},"totalCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assignedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lowThreshold":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","templateId","promotionId","name","allocationStrategy","utmSourceFilter","exhaustionPolicy","fallbackPattern","totalCount","assignedCount","lowThreshold","createdAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Code-Liste anlegen","tags":["code-pools"],"description":"Legt eine Liste an, optional gleich mit dem ersten Block Codes (`values`, bis 50.000) oder mit erzeugten Codes (`generate`), in einer Transaktion: scheitert der Import, bleibt keine leere Liste zurück. Weitere Blöcke über `POST /v1/code-pools/{id}/bulk`. Nicht im Free-Plan (402).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"templateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"description":"Aktion, zu der das Teil gehört (`GET /v1/workspaces/{id}/promotions`); null = ohne Aktion. Fremde Aktion 404 `promotion_not_found`, archivierte 409 `promotion_archived`.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"allocationStrategy":{"default":"sequential","type":"string","enum":["round_robin","random","sequential"]},"utmSourceFilter":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"exhaustionPolicy":{"default":"fail","type":"string","enum":["fallback","fail","block"]},"fallbackPattern":{"type":["string","null"]},"lowThreshold":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000000},{"type":"null"}]},"values":{"minItems":1,"maxItems":50000,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"generate":{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":50000},"prefix":{"type":"string","maxLength":12,"pattern":"^[A-Za-z0-9_-]*$"},"length":{"default":8,"type":"integer","minimum":6,"maximum":16}},"required":["count"]}},"required":["name"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"name":{"type":"string"},"allocationStrategy":{"type":"string","enum":["round_robin","random","sequential"]},"utmSourceFilter":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"exhaustionPolicy":{"type":"string","enum":["fallback","fail","block"]},"fallbackPattern":{"type":["string","null"]},"totalCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assignedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lowThreshold":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","templateId","promotionId","name","allocationStrategy","utmSourceFilter","exhaustionPolicy","fallbackPattern","totalCount","assignedCount","lowThreshold","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/code-pools/{id}/bulk":{"post":{"summary":"Codes in eine Liste importieren","tags":["code-pools"],"description":"Bis 50.000 Codes je Aufruf; größere Importe in Blöcken nacheinander. Codes, die in der Liste schon stehen, werden übersprungen (`duplicates`). `test: true` importiert in den Testbereich der Liste. Nicht im Free-Plan (402).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"values":{"minItems":1,"maxItems":50000,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"test":{"default":false,"type":"boolean"}},"required":["values"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"inserted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duplicates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["inserted","duplicates"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/code-pools/{id}/generate":{"post":{"summary":"Codes für eine Liste erzeugen","tags":["code-pools"],"description":"Erzeugt `count` neue Codes (bis 50.000 je Aufruf) aus `prefix` und einem Zufallsteil der Länge `length` (6 bis 16 Zeichen, ohne 0/O und 1/I), eindeutig in der Liste. Antwort: `generated` neue Codes, `total` produktive Codes der Liste danach. Nicht im Free-Plan (402).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":50000},"prefix":{"type":"string","maxLength":12,"pattern":"^[A-Za-z0-9_-]*$"},"length":{"default":8,"type":"integer","minimum":6,"maximum":16}},"required":["count"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"generated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["generated","total"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/code-pools/{id}/test-codes/generate":{"post":{"summary":"Testcodes für eine Code-Liste erzeugen","tags":["code-pools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"default":20,"type":"integer","minimum":1,"maximum":500}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"inserted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"test":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"available":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assigned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","available","assigned"],"additionalProperties":false}},"required":["inserted","test"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/code-pools/{id}/test-codes":{"delete":{"summary":"Testcodes einer Code-Liste zurücksetzen","tags":["code-pools"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revoked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["deleted","revoked"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/code-pools/{id}/assignments.csv":{"get":{"summary":"Zuteilungen einer Code-Liste als CSV","tags":["code-pools"],"description":"Eine Zeile je vergebenem produktivem Code: `code;seriennummer;utm_source;zugeteilt_am;ersatz` (Zeitpunkt ISO 8601 in UTC, ersatz = ja, wenn die Liste als Ersatz für eine ausgefallene API diente). Semikolon, UTF-8 mit BOM und CRLF für ein deutsches Excel; Zellen, die mit = + - @ beginnen, bleiben Text. Ab der Rolle editor, jeder Export steht mit Anzahl im Audit-Log (`code_pool.assignments_export`). Auch für gelöschte Listen.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"CSV-Datei (text/csv)","content":{"application/json":{"schema":{"type":"string","description":"CSV-Datei (text/csv)"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/claim-links":{"get":{"summary":"Landing-Seiten auflisten","tags":["claim-links"],"parameters":[{"schema":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"string","enum":["none"]}]},"in":"query","name":"promotionId","required":false,"description":"Nur Teile dieser Aktion; `none` = ohne Aktion."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"utmRequired":{"type":"boolean"},"active":{"type":"boolean"},"uniquePerDevice":{"type":"boolean"},"requireIdentity":{"type":"boolean"},"deferCodeUntilAdded":{"type":"boolean"},"isTest":{"type":"boolean"},"landingConfig":{"anyOf":[{"type":"object","properties":{"eyebrow":{"type":"string","maxLength":120},"headline":{"type":"string","maxLength":160},"subtitle":{"type":"string","maxLength":400},"landingStyle":{"type":"string","enum":["classic","spotlight","card"]},"ctaLabel":{"type":"string","maxLength":60},"theme":{"type":"string","enum":["light","dark","brand"]},"showBenefits":{"maxItems":3,"type":"array","items":{"type":"string","maxLength":80}},"logoShape":{"type":"string","enum":["round","square"]},"privacyUrl":{"type":"string","maxLength":300},"imprintUrl":{"type":"string","maxLength":300},"layout":{"type":"string"},"preset":{"type":"string"},"sections":{"description":"Bausteine der Landing-Seite (layout v2), Form wie im Request","type":"array","items":{}}},"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deactivatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"stats":{"type":"object","properties":{"passes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["passes","redemptions"],"additionalProperties":false}},"required":["id","workspaceId","slug","templateId","codePoolId","promotionId","utmRequired","active","uniquePerDevice","requireIdentity","deferCodeUntilAdded","isTest","landingConfig","createdAt","deactivatedAt","stats"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Landing-Seite anlegen","tags":["claim-links"],"description":"Öffentliche Seite unter `/p/{slug}`, über die Kunden den Pass ins Wallet holen. Optional mit Identitätsabfrage, Limit und einer Code-Liste für Vorlagen ohne eigene Wertquelle. Eigene Gestaltung in `landingConfig` (Texte, Stil, Theme, Vorteile, Logo-Form, Preset außer `auto`, Bausteine `sections`) gehört zum Modul Landing-Seiten (`capabilities.modules.landingPages`): ohne das Modul legt die Route den Link trotzdem an und speichert nur `layout` und die Rechtslinks.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","minLength":3,"maxLength":60,"pattern":"^[a-z0-9-]+$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"description":"Aktion, zu der das Teil gehört (`GET /v1/workspaces/{id}/promotions`); null = ohne Aktion. Fremde Aktion 404 `promotion_not_found`, archivierte 409 `promotion_archived`.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"utmRequired":{"default":false,"type":"boolean"},"uniquePerDevice":{"default":false,"type":"boolean"},"requireIdentity":{"default":false,"type":"boolean"},"deferCodeUntilAdded":{"description":"Der Code wird erst vergeben, wenn ein Wallet den Pass gemeldet hat. Ohne Angabe: an bei einer Vorlage mit Code-Liste oder Wertquelle.","type":"boolean"},"isTest":{"default":false,"type":"boolean"},"landingConfig":{"type":"object","properties":{"eyebrow":{"type":"string","maxLength":120},"headline":{"type":"string","maxLength":160},"subtitle":{"type":"string","maxLength":400},"landingStyle":{"type":"string","enum":["classic","spotlight","card"]},"ctaLabel":{"type":"string","maxLength":60},"theme":{"type":"string","enum":["light","dark","brand"]},"showBenefits":{"maxItems":3,"type":"array","items":{"type":"string","maxLength":80}},"logoShape":{"type":"string","enum":["round","square"]},"privacyUrl":{"type":"string","maxLength":300},"imprintUrl":{"type":"string","maxLength":300},"layout":{"type":"string","enum":["v2"]},"preset":{"type":"string","enum":["auto","coupon","event","loyalty","membership","giftCard","simple"]},"sections":{"maxItems":16,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["menu"]},"links":{"maxItems":4,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["anchor"]},"target":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"label":{"type":"string","minLength":1,"maxLength":24}},"required":["kind","target"]},{"type":"object","properties":{"kind":{"type":"string","enum":["url"]},"url":{"type":"string","maxLength":300},"label":{"type":"string","minLength":1,"maxLength":24}},"required":["kind","url","label"]}]}},"cta":{"type":"boolean"}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["announcement"]},"text":{"type":"string","minLength":1,"maxLength":120},"link":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","maxLength":300}},"required":["label","url"]},"countdownTo":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["passExpiration"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["eventStart"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["kind","at"]}]},"tone":{"type":"string","enum":["accent","neutral"]}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["hero"]},"variant":{"type":"string","enum":["overlay","split","centered"]},"media":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["gradient"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["asset"]},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"alt":{"type":"string","minLength":1,"maxLength":140}},"required":["kind","assetId"]},{"type":"object","properties":{"kind":{"type":"string","enum":["templateImage"]},"slot":{"type":"string","enum":["strip","hero","background"]}},"required":["kind","slot"]}]},"size":{"type":"string","enum":["compact","tall"]},"showPass":{"type":"boolean"}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["slider"]},"title":{"type":"string","minLength":1,"maxLength":80},"slides":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"alt":{"type":"string","minLength":1,"maxLength":140},"title":{"type":"string","minLength":1,"maxLength":80},"text":{"type":"string","minLength":1,"maxLength":240},"link":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","maxLength":300}},"required":["label","url"]}},"required":["id","assetId"]}},"autoplay":{"type":"boolean"},"intervalSec":{"type":"integer","minimum":4,"maximum":12},"aspect":{"type":"string","enum":["wide","square","portrait"]}},"required":["id","type","slides"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["benefits"]},"title":{"type":"string","minLength":1,"maxLength":80},"layout":{"type":"string","enum":["bento","grid"]},"items":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","enum":["sparkles","gift","percent","star","heart","clock","calendar","map-pin","ticket","coffee","shopping-bag","truck","shield-check","bell","wallet","smartphone","badge-check","trophy","users","leaf"]},"title":{"type":"string","minLength":1,"maxLength":60},"text":{"type":"string","minLength":1,"maxLength":160}},"required":["icon","title"]}}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["steps"]},"title":{"type":"string","minLength":1,"maxLength":80},"lastStep":{"type":"string","enum":["checkout","entry","collect","show","board"]}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["countdown"]},"title":{"type":"string","minLength":1,"maxLength":80},"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["passExpiration"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["eventStart"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["kind","at"]}]},"endedText":{"type":"string","minLength":1,"maxLength":120},"hideWhenEnded":{"type":"boolean"}},"required":["id","type","target"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["promo"]},"title":{"type":"string","minLength":1,"maxLength":80},"text":{"type":"string","minLength":1,"maxLength":600},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"alt":{"type":"string","minLength":1,"maxLength":140},"link":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","maxLength":300}},"required":["label","url"]},"imageSide":{"type":"string","enum":["start","end"]}},"required":["id","type","title"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["faq"]},"title":{"type":"string","minLength":1,"maxLength":80},"items":{"minItems":1,"maxItems":10,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["custom"]},"q":{"type":"string","minLength":1,"maxLength":120},"a":{"type":"string","minLength":1,"maxLength":800}},"required":["kind","q","a"]},{"type":"object","properties":{"kind":{"type":"string","enum":["auto"]},"topic":{"type":"string","enum":["cost","wallets","noApp","validity","redeem","entry","privacy","remove","lost"]}},"required":["kind","topic"]},{"type":"object","properties":{"kind":{"type":"string","enum":["backField"]},"key":{"type":"string","minLength":1,"maxLength":64}},"required":["kind","key"]}]}}},"required":["id","type","items"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["locations"]},"title":{"type":"string","minLength":1,"maxLength":80},"max":{"type":"integer","minimum":1,"maximum":10}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["socialProof"]},"minCount":{"type":"integer","minimum":25,"maximum":100000}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["stickyCta"]}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["footer"]},"links":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","maxLength":300}},"required":["label","url"]}}},"required":["id","type"]}]}}}},"active":{"default":true,"type":"boolean"}},"required":["templateId"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"utmRequired":{"type":"boolean"},"active":{"type":"boolean"},"uniquePerDevice":{"type":"boolean"},"requireIdentity":{"type":"boolean"},"deferCodeUntilAdded":{"type":"boolean"},"isTest":{"type":"boolean"},"landingConfig":{"anyOf":[{"type":"object","properties":{"eyebrow":{"type":"string","maxLength":120},"headline":{"type":"string","maxLength":160},"subtitle":{"type":"string","maxLength":400},"landingStyle":{"type":"string","enum":["classic","spotlight","card"]},"ctaLabel":{"type":"string","maxLength":60},"theme":{"type":"string","enum":["light","dark","brand"]},"showBenefits":{"maxItems":3,"type":"array","items":{"type":"string","maxLength":80}},"logoShape":{"type":"string","enum":["round","square"]},"privacyUrl":{"type":"string","maxLength":300},"imprintUrl":{"type":"string","maxLength":300},"layout":{"type":"string"},"preset":{"type":"string"},"sections":{"description":"Bausteine der Landing-Seite (layout v2), Form wie im Request","type":"array","items":{}}},"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deactivatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","workspaceId","slug","templateId","codePoolId","promotionId","utmRequired","active","uniquePerDevice","requireIdentity","deferCodeUntilAdded","isTest","landingConfig","createdAt","deactivatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/claim-links/{id}":{"patch":{"summary":"Landing-Seite bearbeiten","tags":["claim-links"],"description":"Status, Regeln, Code-Liste und `landingConfig` (ersetzt die ganze Konfiguration). Eine geänderte Gestaltung in `landingConfig` (Texte, Stil, Theme, Vorteile, Logo-Form, Preset außer `auto`, Bausteine `sections`) braucht das Modul Landing-Seiten (`capabilities.modules.landingPages`), sonst 403 `module_disabled`; dieselbe Gestaltung erneut zu senden geht immer. Ohne das Modul bleibt eine gespeicherte Gestaltung erhalten, die öffentliche Seite zeigt dann die Standardseite.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"active":{"type":"boolean"},"utmRequired":{"type":"boolean"},"uniquePerDevice":{"type":"boolean"},"requireIdentity":{"type":"boolean"},"deferCodeUntilAdded":{"description":"Der Code wird erst vergeben, wenn ein Wallet den Pass gemeldet hat (Apple-Registrierung, Google-Speichern). Bis dahin zeigt der Barcode die Seriennummer.","type":"boolean"},"landingConfig":{"anyOf":[{"type":"object","properties":{"eyebrow":{"type":"string","maxLength":120},"headline":{"type":"string","maxLength":160},"subtitle":{"type":"string","maxLength":400},"landingStyle":{"type":"string","enum":["classic","spotlight","card"]},"ctaLabel":{"type":"string","maxLength":60},"theme":{"type":"string","enum":["light","dark","brand"]},"showBenefits":{"maxItems":3,"type":"array","items":{"type":"string","maxLength":80}},"logoShape":{"type":"string","enum":["round","square"]},"privacyUrl":{"type":"string","maxLength":300},"imprintUrl":{"type":"string","maxLength":300},"layout":{"type":"string","enum":["v2"]},"preset":{"type":"string","enum":["auto","coupon","event","loyalty","membership","giftCard","simple"]},"sections":{"maxItems":16,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["menu"]},"links":{"maxItems":4,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["anchor"]},"target":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"label":{"type":"string","minLength":1,"maxLength":24}},"required":["kind","target"]},{"type":"object","properties":{"kind":{"type":"string","enum":["url"]},"url":{"type":"string","maxLength":300},"label":{"type":"string","minLength":1,"maxLength":24}},"required":["kind","url","label"]}]}},"cta":{"type":"boolean"}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["announcement"]},"text":{"type":"string","minLength":1,"maxLength":120},"link":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","maxLength":300}},"required":["label","url"]},"countdownTo":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["passExpiration"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["eventStart"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["kind","at"]}]},"tone":{"type":"string","enum":["accent","neutral"]}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["hero"]},"variant":{"type":"string","enum":["overlay","split","centered"]},"media":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["gradient"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["asset"]},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"alt":{"type":"string","minLength":1,"maxLength":140}},"required":["kind","assetId"]},{"type":"object","properties":{"kind":{"type":"string","enum":["templateImage"]},"slot":{"type":"string","enum":["strip","hero","background"]}},"required":["kind","slot"]}]},"size":{"type":"string","enum":["compact","tall"]},"showPass":{"type":"boolean"}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["slider"]},"title":{"type":"string","minLength":1,"maxLength":80},"slides":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"alt":{"type":"string","minLength":1,"maxLength":140},"title":{"type":"string","minLength":1,"maxLength":80},"text":{"type":"string","minLength":1,"maxLength":240},"link":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","maxLength":300}},"required":["label","url"]}},"required":["id","assetId"]}},"autoplay":{"type":"boolean"},"intervalSec":{"type":"integer","minimum":4,"maximum":12},"aspect":{"type":"string","enum":["wide","square","portrait"]}},"required":["id","type","slides"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["benefits"]},"title":{"type":"string","minLength":1,"maxLength":80},"layout":{"type":"string","enum":["bento","grid"]},"items":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","enum":["sparkles","gift","percent","star","heart","clock","calendar","map-pin","ticket","coffee","shopping-bag","truck","shield-check","bell","wallet","smartphone","badge-check","trophy","users","leaf"]},"title":{"type":"string","minLength":1,"maxLength":60},"text":{"type":"string","minLength":1,"maxLength":160}},"required":["icon","title"]}}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["steps"]},"title":{"type":"string","minLength":1,"maxLength":80},"lastStep":{"type":"string","enum":["checkout","entry","collect","show","board"]}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["countdown"]},"title":{"type":"string","minLength":1,"maxLength":80},"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["passExpiration"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["eventStart"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["kind","at"]}]},"endedText":{"type":"string","minLength":1,"maxLength":120},"hideWhenEnded":{"type":"boolean"}},"required":["id","type","target"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["promo"]},"title":{"type":"string","minLength":1,"maxLength":80},"text":{"type":"string","minLength":1,"maxLength":600},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"alt":{"type":"string","minLength":1,"maxLength":140},"link":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","maxLength":300}},"required":["label","url"]},"imageSide":{"type":"string","enum":["start","end"]}},"required":["id","type","title"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["faq"]},"title":{"type":"string","minLength":1,"maxLength":80},"items":{"minItems":1,"maxItems":10,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["custom"]},"q":{"type":"string","minLength":1,"maxLength":120},"a":{"type":"string","minLength":1,"maxLength":800}},"required":["kind","q","a"]},{"type":"object","properties":{"kind":{"type":"string","enum":["auto"]},"topic":{"type":"string","enum":["cost","wallets","noApp","validity","redeem","entry","privacy","remove","lost"]}},"required":["kind","topic"]},{"type":"object","properties":{"kind":{"type":"string","enum":["backField"]},"key":{"type":"string","minLength":1,"maxLength":64}},"required":["kind","key"]}]}}},"required":["id","type","items"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["locations"]},"title":{"type":"string","minLength":1,"maxLength":80},"max":{"type":"integer","minimum":1,"maximum":10}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["socialProof"]},"minCount":{"type":"integer","minimum":25,"maximum":100000}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["stickyCta"]}},"required":["id","type"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,23}$"},"hidden":{"type":"boolean"},"type":{"type":"string","enum":["footer"]},"links":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"url":{"type":"string","maxLength":300}},"required":["label","url"]}}},"required":["id","type"]}]}}}},{"type":"null"}]},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"description":"Aktion, zu der das Teil gehört (`GET /v1/workspaces/{id}/promotions`); null = ohne Aktion. Fremde Aktion 404 `promotion_not_found`, archivierte 409 `promotion_archived`.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"utmRequired":{"type":"boolean"},"active":{"type":"boolean"},"uniquePerDevice":{"type":"boolean"},"requireIdentity":{"type":"boolean"},"deferCodeUntilAdded":{"type":"boolean"},"isTest":{"type":"boolean"},"landingConfig":{"anyOf":[{"type":"object","properties":{"eyebrow":{"type":"string","maxLength":120},"headline":{"type":"string","maxLength":160},"subtitle":{"type":"string","maxLength":400},"landingStyle":{"type":"string","enum":["classic","spotlight","card"]},"ctaLabel":{"type":"string","maxLength":60},"theme":{"type":"string","enum":["light","dark","brand"]},"showBenefits":{"maxItems":3,"type":"array","items":{"type":"string","maxLength":80}},"logoShape":{"type":"string","enum":["round","square"]},"privacyUrl":{"type":"string","maxLength":300},"imprintUrl":{"type":"string","maxLength":300},"layout":{"type":"string"},"preset":{"type":"string"},"sections":{"description":"Bausteine der Landing-Seite (layout v2), Form wie im Request","type":"array","items":{}}},"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deactivatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","workspaceId","slug","templateId","codePoolId","promotionId","utmRequired","active","uniquePerDevice","requireIdentity","deferCodeUntilAdded","isTest","landingConfig","createdAt","deactivatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Landing-Seite löschen","tags":["claim-links"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/claim-links/{id}/analytics":{"get":{"summary":"Landing-Seiten-Statistik","tags":["claim-links"],"description":"Ausgestellte Pässe und Nutzungen, gesamt und je UTM-Quelle.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"downloadsIssued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"byUtm":{"type":"array","items":{"type":"object","properties":{"utmSource":{"type":"string"},"downloads":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["utmSource","downloads","redemptions"],"additionalProperties":false}}},"required":["downloadsIssued","redemptions","byUtm"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/claim-links/{id}/channels":{"get":{"summary":"Kanäle einer Landing-Seite","tags":["claim-links"],"description":"Die aktiven Kanäle (ohne archivierte) in der Reihenfolge des Anlegens, je Kanal der Link mit seinen UTM-Werten, die Code-Liste aus der Wertquelle der Vorlage (`codePoolId`, abgeleitet aus `lists[].utmSource`, sonst null) und die Zahlen: Pässe dieser Landing-Seite mit der Quelle des Kanals und deren Nutzungen. Jede Rolle im Arbeitsbereich.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"claimLinkId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"label":{"type":"string"},"utm":{"type":"object","properties":{"source":{"type":"string"},"medium":{"type":["string","null"]},"campaign":{"type":["string","null"]}},"required":["source","medium","campaign"],"additionalProperties":false},"url":{"type":"string","description":"Link der Landing-Seite mit den UTM-Werten des Kanals, für Teilen und QR-Code."},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Code-Liste der Wertquelle der Vorlage mit utmSource = Quelle dieses Kanals, sonst null (dann gelten die Listen für alle Quellen)."},"stats":{"type":"object","properties":{"passes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pässe dieser Landing-Seite mit der Quelle des Kanals."},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Nutzungen dieser Pässe."}},"required":["passes","redemptions"],"additionalProperties":false},"costCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget des Kanals in Cent (Anzeigen, Druck); der Trichter rechnet daraus die Kosten je Wallet-Pass und je Nutzung. null = nicht angegeben."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","claimLinkId","label","utm","url","codePoolId","stats","costCents","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Kanal anlegen","tags":["claim-links"],"description":"Ein Kanal der Landing-Seite mit Name (1–40 Zeichen) und UTM-Werten: `utm.source` Pflicht, `utm.medium` und `utm.campaign` optional, je 1–60 Zeichen aus a–z, 0–9, `-` und `_`. Die Antwort trägt den fertigen Link `url` (`/p/{slug}?utm_source=…`). Eine Quelle ist je Landing-Seite nur einmal aktiv (409 `conflict`), höchstens 50 Kanäle je Landing-Seite (422). Eine eigene Code-Liste je Kanal legt die Wertquelle der Vorlage fest (`lists[].utmSource`). Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"utm":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"},"medium":{"anyOf":[{"type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"},{"type":"null"}]},"campaign":{"anyOf":[{"type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"},{"type":"null"}]}},"required":["source"]},"costCents":{"description":"Budget des Kanals in Cent.","anyOf":[{"type":"integer","minimum":0,"maximum":1000000000},{"type":"null"}]}},"required":["label","utm"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"claimLinkId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"label":{"type":"string"},"utm":{"type":"object","properties":{"source":{"type":"string"},"medium":{"type":["string","null"]},"campaign":{"type":["string","null"]}},"required":["source","medium","campaign"],"additionalProperties":false},"url":{"type":"string","description":"Link der Landing-Seite mit den UTM-Werten des Kanals, für Teilen und QR-Code."},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Code-Liste der Wertquelle der Vorlage mit utmSource = Quelle dieses Kanals, sonst null (dann gelten die Listen für alle Quellen)."},"stats":{"type":"object","properties":{"passes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pässe dieser Landing-Seite mit der Quelle des Kanals."},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Nutzungen dieser Pässe."}},"required":["passes","redemptions"],"additionalProperties":false},"costCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget des Kanals in Cent (Anzeigen, Druck); der Trichter rechnet daraus die Kosten je Wallet-Pass und je Nutzung. null = nicht angegeben."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","claimLinkId","label","utm","url","codePoolId","stats","costCents","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/claim-link-channels/{id}":{"patch":{"summary":"Kanal bearbeiten","tags":["claim-links"],"description":"Name und UTM-Werte eines Kanals ändern; nur genannte Felder ändern sich, `null` leert `utm.medium` oder `utm.campaign`. Eine neue Quelle ändert den Link: schon verteilte Links und QR-Codes tragen weiter die alte Quelle. Archivierte Kanäle antworten 404. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40},"utm":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"},"medium":{"anyOf":[{"type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"},{"type":"null"}]},"campaign":{"anyOf":[{"type":"string","minLength":1,"maxLength":60,"pattern":"^[a-z0-9_-]+$"},{"type":"null"}]}}},"costCents":{"description":"Budget des Kanals in Cent; null entfernt es.","anyOf":[{"type":"integer","minimum":0,"maximum":1000000000},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"claimLinkId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"label":{"type":"string"},"utm":{"type":"object","properties":{"source":{"type":"string"},"medium":{"type":["string","null"]},"campaign":{"type":["string","null"]}},"required":["source","medium","campaign"],"additionalProperties":false},"url":{"type":"string","description":"Link der Landing-Seite mit den UTM-Werten des Kanals, für Teilen und QR-Code."},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Code-Liste der Wertquelle der Vorlage mit utmSource = Quelle dieses Kanals, sonst null (dann gelten die Listen für alle Quellen)."},"stats":{"type":"object","properties":{"passes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pässe dieser Landing-Seite mit der Quelle des Kanals."},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Nutzungen dieser Pässe."}},"required":["passes","redemptions"],"additionalProperties":false},"costCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget des Kanals in Cent (Anzeigen, Druck); der Trichter rechnet daraus die Kosten je Wallet-Pass und je Nutzung. null = nicht angegeben."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","claimLinkId","label","utm","url","codePoolId","stats","costCents","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Kanal archivieren","tags":["claim-links"],"description":"Blendet den Kanal aus und gibt seine Quelle auf der Landing-Seite frei. Pässe behalten ihre Quelle, schon verteilte Links und QR-Codes führen weiter auf die Landing-Seite. Ein neuer Kanal mit derselben Quelle zeigt dieselben Zahlen. Ab der Rolle editor.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/support/tickets":{"post":{"summary":"Support-Ticket eröffnen","tags":["support"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":2,"maxLength":160},"body":{"type":"string","minLength":2,"maxLength":5000},"priority":{"type":"string","enum":["low","normal","high"]}},"required":["subject","body"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Support-Tickets der Organisation","tags":["support"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":["string","null"]},"subject":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","resolved"]},"priority":{"type":"string","enum":["low","normal","high"]},"createdByName":{"type":["string","null"]},"createdByEmail":{"type":["string","null"]},"messageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"lastReplyAt":{"type":"string"},"isTest":{"type":"boolean"}},"required":["id","orgId","orgName","subject","status","priority","createdByName","createdByEmail","messageCount","createdAt","lastReplyAt","isTest"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/support/tickets":{"get":{"summary":"Alle Tickets (Plattform)","tags":["support"],"parameters":[{"schema":{"type":"string","enum":["open","in_progress","resolved"]},"in":"query","name":"status","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":["string","null"]},"subject":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","resolved"]},"priority":{"type":"string","enum":["low","normal","high"]},"createdByName":{"type":["string","null"]},"createdByEmail":{"type":["string","null"]},"messageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"lastReplyAt":{"type":"string"},"isTest":{"type":"boolean"}},"required":["id","orgId","orgName","subject","status","priority","createdByName","createdByEmail","messageCount","createdAt","lastReplyAt","isTest"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/support/tickets/{id}":{"get":{"summary":"Ticket lesen","tags":["support"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ticket":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":["string","null"]},"subject":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","resolved"]},"priority":{"type":"string","enum":["low","normal","high"]},"createdByName":{"type":["string","null"]},"createdByEmail":{"type":["string","null"]},"messageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"lastReplyAt":{"type":"string"},"isTest":{"type":"boolean"}},"required":["id","orgId","orgName","subject","status","priority","createdByName","createdByEmail","messageCount","createdAt","lastReplyAt","isTest"],"additionalProperties":false},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorName":{"type":["string","null"]},"body":{"type":"string"},"staff":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","authorName","body","staff","createdAt"],"additionalProperties":false}}},"required":["ticket","messages"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Ticket-Status ändern","tags":["support"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["open","in_progress","resolved"]},"priority":{"type":"string","enum":["low","normal","high"]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orgName":{"type":["string","null"]},"subject":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","resolved"]},"priority":{"type":"string","enum":["low","normal","high"]},"createdByName":{"type":["string","null"]},"createdByEmail":{"type":["string","null"]},"messageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"lastReplyAt":{"type":"string"},"isTest":{"type":"boolean"}},"required":["id","orgId","orgName","subject","status","priority","createdByName","createdByEmail","messageCount","createdAt","lastReplyAt","isTest"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/support/tickets/{id}/messages":{"post":{"summary":"Nachricht im Ticket senden","tags":["support"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":5000}},"required":["body"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorName":{"type":["string","null"]},"body":{"type":"string"},"staff":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","authorName","body","staff","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/public/claim/{slug}/redeem":{"post":{"summary":"Pass über die Landing-Seite ausstellen","tags":["public"],"description":"Wird von der Landing-Seite aufgerufen und liefert die Wallet-Links für Apple und Google; ein Handy erhält pro Landing-Seite einen Pass. `attributes` übernimmt nur Felder, die in der Feldliste der Vorlage als über den öffentlichen Link setzbar markiert sind. Kontaktdaten (`email`, `firstName`, `lastName`) speichert doWallet nur mit Einwilligung: `consents` beantwortet jeden aktiven Zweck des Arbeitsbereichs (`GET /p/{slug}` nennt sie in `landing.consentPurposes`), `consent: true` allein gilt als Zweck `service`. Fehlt ein Pflicht-Zweck, antwortet die Route 422 `consent_required` mit `fields` je Zweck.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":120},"firstName":{"type":"string","minLength":1,"maxLength":80},"lastName":{"type":"string","minLength":1,"maxLength":80},"consent":{"type":"boolean"},"consents":{"description":"Einwilligung je Zweck, z. B. [{ key: \"service\", given: true }, { key: \"marketing_email\", given: false }]. Mit E-Mail und Vorname müssen alle aktiven Pflicht-Zwecke gegeben sein (sonst 422 consent_required). Ohne consents gilt consent: true als service.","maxItems":20,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^(service|marketing_email|warranty|brand_share|custom_[a-z0-9_]{1,30})$"},"given":{"type":"boolean"}},"required":["key","given"]}},"platform":{"default":"both","type":"string","enum":["apple","google","both"]},"attributes":{"description":"Nur Felder, die die Feldliste der Vorlage mit fromPublicClaim freigibt. Andere Schlüssel werden verworfen, die Antwort bleibt 200. Werte außerhalb des Feldtyps: 422. Kontaktdaten nur über email, firstName, lastName mit consent: true.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number","boolean","null"]}},"utm":{"type":"object","properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"term":{"type":"string"},"content":{"type":"string"}}},"attributionKey":{"type":"string","minLength":8,"maxLength":128},"handoff":{"description":"Die Landing-Seite hat den Besucher aus einem In-App-Browser an Safari oder Chrome übergeben und löst dort ein. Nur für die Auswertung.","type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string"},"in":"query","name":"utm_source","required":false},{"schema":{"type":"string"},"in":"query","name":"utm_medium","required":false},{"schema":{"type":"string"},"in":"query","name":"utm_campaign","required":false},{"schema":{"type":"string"},"in":"query","name":"utm_term","required":false},{"schema":{"type":"string"},"in":"query","name":"utm_content","required":false},{"schema":{"type":"string"},"in":"path","name":"slug","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"code":{"type":["string","null"]},"platform":{"type":"string","enum":["apple","google","both"]},"apple":{"anyOf":[{"type":"object","properties":{"downloadUrl":{"type":"string"}},"required":["downloadUrl"],"additionalProperties":false},{"type":"null"}]},"google":{"anyOf":[{"type":"object","properties":{"saveUrl":{"type":"string"}},"required":["saveUrl"],"additionalProperties":false},{"type":"null"}]}},"required":["passId","serial","code","platform","apple","google"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/push":{"post":{"summary":"Mitteilung an einen Pass senden","tags":["passes"],"description":"Hängt `message` (bis 80 Zeichen, sonst „Dein Pass wurde aktualisiert“) an die Mitteilungen des Passes und schickt einen Apple-Push an seine Geräte. Bei Google-Pässen geht dieselbe Mitteilung an Google Wallet (`google.jobId`, höchstens 3 Benachrichtigungen je Pass in 24 Stunden). Für viele Pässe eine Kampagne verwenden. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"default":"manual","type":"string","minLength":1,"maxLength":80},"message":{"type":"string","minLength":1,"maxLength":80}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"enqueued":{"type":"boolean"},"jobId":{"type":["string","null"]},"mode":{"type":"string","enum":["instant","queued"]},"delivered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"apple":{"type":"object","properties":{"mode":{"type":"string","enum":["instant","queued"]},"delivered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"invalidated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reasons":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["mode","delivered","failed","invalidated","reasons"],"additionalProperties":false},"google":{"anyOf":[{"type":"object","properties":{"enqueued":{"type":"boolean"},"jobId":{"type":["string","null"]},"mode":{"type":"string","enum":["instant","queued","pending"]},"classStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"objectStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"message":{"anyOf":[{"type":"string","enum":["sent","rejected","failed","capped","stale","none"]},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"step":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"body":{"type":"string"}},"required":["step","status"],"additionalProperties":false},{"type":"null"}]}},"required":["enqueued","jobId","mode","classStatus","objectStatus","message","error"],"additionalProperties":false},{"type":"null"}]}},"required":["enqueued","jobId","mode","delivered","apple","google"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/google-wallet/sync/{passId}":{"post":{"summary":"Google-Wallet-Objekt synchronisieren","tags":["passes"],"description":"Erzwingt einen erneuten Abgleich des Google-Objekts mit dem aktuellen Pass-Inhalt.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"async":{"default":true,"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"passId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["sync","queued"]},"jobId":{"type":["string","null"]},"classStatus":{"type":["number","null"]},"objectStatus":{"type":["number","null"]}},"required":["mode","jobId","classStatus","objectStatus"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/audiences":{"get":{"summary":"Zielgruppen auflisten","tags":["audiences"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"filter":{},"estimatedCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastEstimatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"usedByCampaigns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kampagnen, die diese gespeicherte Zielgruppe nutzen, in jedem Zustand. Solange der Wert über 0 liegt, lässt sich die Zielgruppe nicht löschen (409)."},"usedByFlows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Automatisierungen (Flows, nicht archiviert), die diese Zielgruppe nutzen. Solange der Wert über 0 liegt, lässt sich die Zielgruppe nicht löschen (409)."},"usedByAudiences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Andere Zielgruppen, die diese über „ist in Zielgruppe“ (audience.member) direkt einsetzen. Solange der Wert über 0 liegt, lässt sich die Zielgruppe nicht löschen (409)."}},"required":["id","workspaceId","name","filter","estimatedCount","lastEstimatedAt","createdById","createdAt","usedByCampaigns","usedByFlows","usedByAudiences"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Zielgruppe anlegen","tags":["audiences"],"description":"Legt eine gespeicherte Zielgruppe an. `filter` ist ein DSL-Baum (Blatt `{ field, op, value, type? }`, Zweige `{ and: [...] }` / `{ or: [...] }`, Verneinung `{ not: … }`) oder die ältere Form `{ onlyActiveAtStart, filters: [{ attribute, operator, value }] }`; jede andere Form (etwa eine Liste ohne `{ and }`) ist 422. Höchstens 30 eigene Bedingungen und 4 Ebenen aus and/or; `audience.member` setzt eine andere Zielgruppe desselben Arbeitsbereichs ein (höchstens 3 ineinander, ein Kreis ist 422). `contact.name` und `contact.email_domain` nur ab der Rolle Admin. Felder und Operatoren: docs/audiences.md. Der Filter wird vor dem Speichern übersetzt: ein unbekanntes Feld, ein Operator, der nicht zum Feld passt, oder ein falscher Wert ist ein 422 `validation_failed` auf `filter` mit `details.field` (das Feld der Regel) und `details.path` (Stelle im Baum). `type` an `attributes.<key>` (string, number, date, boolean) vergleicht typgerecht: Zahlen numerisch (Werte ohne Zahl treffen nie), Daten als Tag. Die Antwort trägt die gezählte Größe (`estimatedCount`). Nur bezahlte Pläne (402).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"filter":{}},"required":["name","filter"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"filter":{},"estimatedCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastEstimatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","name","filter","estimatedCount","lastEstimatedAt","createdById","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/audiences/{id}/estimate":{"post":{"summary":"Reichweite neu berechnen","tags":["audiences"],"description":"Zählt eine gespeicherte Zielgruppe neu. Ab der Rolle Bearbeiter wird die Zahl an der Zielgruppe gespeichert (`estimatedCount`), Betrachter bekommen sie nur zurück. Mit `templateId` im Body zählt sie so, wie eine Kampagne dieser Vorlage sie erreicht (nur Pässe der Vorlage, ohne Test-Pässe) und speichert nichts. Ein Filter, der sich nicht übersetzen lässt, ist ein 422. Ratenklasse audience_count.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},{"type":"null"}]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passIdsSample":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"estimatedGoogleCapped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count","passIdsSample","estimatedGoogleCapped"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/audiences/{id}":{"patch":{"summary":"Zielgruppe bearbeiten","tags":["audiences"],"description":"Benennt eine Zielgruppe um oder ändert ihre Regel. Der neue Filter wird wie beim Anlegen übersetzt (422 `validation_failed` auf `filter` mit `details.field`). Ein leerer Filter (keine Regel außer „nur aktive Pässe“) ersetzt eine Regel nur mit `clear: true`, sonst 422: so wird eine Zielgruppe nie aus Versehen zu allen Pässen. Ändert sich die Regel, verliert jede Kampagne im Entwurf oder geplant, die diese Zielgruppe nutzt, ihre Freigabe (`approvalState` none, Verlauf „Nach Freigabe geändert“, Audit `campaign.review_reset`); Umbenennen nicht. Setzen andere Zielgruppen, ungesendete Kampagnen oder nicht archivierte Automatisierungen diese Zielgruppe ein (`audience.member`), müssen sie mit der neuen Regel gültig bleiben (höchstens 3 Zielgruppen ineinander vom äußersten Filter, 200 Bedingungen), sonst 422 mit ihrem Namen. Regeln auf `contact.name` und `contact.email_domain` nur ab der Rolle Admin, außer die Regel bleibt unverändert. Nur bezahlte Pläne (402).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"filter":{},"clear":{"description":"true = ein leerer Filter darf die bestehende Regel ersetzen (die Zielgruppe erreicht danach alle Pässe).","type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"filter":{},"estimatedCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastEstimatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdById":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","name","filter","estimatedCount","lastEstimatedAt","createdById","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Zielgruppe löschen","tags":["audiences"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/audiences/preview":{"post":{"summary":"Zielgruppe schätzen (ohne Speichern)","tags":["audiences"],"description":"Zählt einen Filter, ohne ihn zu speichern, und liefert bis zu 25 Pässe als Stichprobe, neueste zuerst. Mit `templateId` zählt sie so, wie eine Kampagne dieser Vorlage die Zielgruppe erreicht: nur Pässe der Vorlage, ohne Test-Pässe. Ein Filter, der sich nicht übersetzen lässt, ist ein 422 `validation_failed` mit `details.field`. Regeln auf `contact.name` und `contact.email_domain` nur ab der Rolle Admin (Fähigkeit contacts:read_unmasked), sonst 422.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filter":{},"templateId":{"description":"Vorlage einer Kampagne: die Zählung gilt nur für ihre Pässe, ohne Test-Pässe, wie beim Senden.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["filter"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sample":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"platform":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"},"utmSource":{"type":["string","null"]}},"required":["id","serial","platform","status","createdAt","utmSource"],"additionalProperties":false}}},"required":["count","sample"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/audiences/{id}/members.csv":{"get":{"summary":"Mitglieder einer Zielgruppe als CSV exportieren","tags":["audiences"],"description":"Alle Pässe, die die gespeicherte Zielgruppe gerade erreicht (wie die Zählung, ohne Vorlagen-Umfang), neueste zuerst: Seriennummer, Vorlage, Plattform, Zustand, erstellt, gültig bis, eigene Kennung, Treue-Stand und Stufe. Ab der Rolle Admin zusätzlich E-Mail, Vorname, Nachname, Sprache und „Kontakt seit“ des Kontakts, nur wenn sein Service-Zweck nicht widerrufen ist, und je aktivem Zweck eine Spalte zweck_<key> (ja, nein, widerrufen am). Semikolon als Trennzeichen, UTF-8 mit BOM, Formel-Zeichen am Zellanfang werden entschärft. Ab der Rolle editor, nur bezahlte Pläne (402), Ratenklasse audience_count, Audit `audience.members_export` mit Anzahl.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"CSV-Datei (text/csv)","content":{"application/json":{"schema":{"type":"string","description":"CSV-Datei (text/csv)"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/campaigns":{"get":{"summary":"Kampagnen auflisten","tags":["campaigns"],"description":"Kampagnen eines Workspace, neueste zuerst. `metrics` trägt den zuletzt berechneten Funnel (sent / delivered / failed / skipped / opened / redeemed), `notify` den Versandmodus (push | silent). `promotionId` filtert nach Aktion (`none` = ohne).","parameters":[{"schema":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"string","enum":["none"]}]},"in":"query","name":"promotionId","required":false,"description":"Nur Teile dieser Aktion; `none` = ohne Aktion."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"groupName":{"type":["string","null"]},"status":{"type":"string","enum":["draft","scheduled","running","paused","completed","cancelled"]},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audience":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Gespeicherte Zielgruppe, sonst null."},"name":{"description":"Name der gespeicherten Zielgruppe, sonst null.","type":["string","null"]},"filter":{"description":"Filter der gespeicherten Zielgruppe oder der eigene Filter der Kampagne (audienceFilter); null = alle aktiven Pässe der Vorlage."}},"required":["id","name","filter"],"additionalProperties":false},"onlyActive":{"type":"boolean","description":"true = die Kampagne erreicht nur aktive Pässe (Standard ohne Zielgruppe oder mit „Nur aktive“ im Filter)."},"audienceCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Aktion der Kampagne (Migration 0121); null = ohne Aktion."},"notification":{},"metrics":{"type":"object","properties":{"sent":{"description":"Passes addressed at publish (campaign_targets, no upper limit).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delivered":{"description":"Passes reached on at least one wallet (APNs-accepted Apple push or 2xx Google sync); counted per pass, never above sent.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"description":"Passes with at least one attempt and no successful delivery.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"description":"Passes no track could attempt (no Apple registrations and no Google object), plus passes whose batch never went out (campaign cancelled).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"description":"Addressed passes whose send batch has not gone out yet (paused, or paced by \"gentle\").","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"opened":{"description":"Clicks on the campaign's short links (the funnel's interactions step).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redeemed":{"description":"redemptionLogged events attributed to this campaign.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredApple":{"description":"Of delivered: passes an APNs-accepted push reached.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredGoogle":{"description":"Of delivered: passes a 2xx Google object sync reached.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replaced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codesAllocated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refreshedAt":{"description":"When delivered/failed/skipped/opened/redeemed were last rolled up from the events table.","type":"string"}},"additionalProperties":{}},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"replace":{"anyOf":[{"type":"object","properties":{"targetTemplateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["targetTemplateId"],"additionalProperties":false},{"type":"null"}]},"pace":{"type":"string","enum":["fast","gentle"]},"notify":{"type":"string","enum":["push","silent"],"description":"Delivery mode. \"push\" appends notification.text to every targeted pass (lock-screen banner on Apple, addMessage on Google). \"silent\" refreshes the pass content without any message (requires `replace`); notification.text may be omitted."},"scheduleAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"Geplantes Ende der Kampagne (Kampagnenplan), nur Planung und Anzeige: beim Erreichen wird nichts gesendet oder gestoppt. null = ohne geplantes Ende."},"costCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget der Kampagne in Cent (Medien, Druck, Anreize); der Trichter rechnet daraus die Kosten je erreichtem Pass und je Nutzung. null = nicht angegeben."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"approvalState":{"type":"string","enum":["none","in_review","changes_requested","approved"],"description":"Freigabe der Kampagne: none (nie angefragt oder nach einer Inhaltsänderung zurückgesetzt), in_review, changes_requested, approved. Routen unter /v1/campaigns/{id}/request-review, /approve, /request-changes, /comments, /reviews."},"approvalRequired":{"type":"boolean","description":"true = der Arbeitsbereich verlangt vor dem Senden eine Freigabe; ohne approvalState approved antwortet publish mit 409 approval_required."}},"required":["id","workspaceId","name","groupName","status","audienceId","audience","onlyActive","audienceCount","templateId","promotionId","notification","metrics","locationIds","replace","pace","notify","scheduleAt","publishedAt","pausedAt","cancelledAt","completedAt","endsAt","costCents","createdAt","approvalState","approvalRequired"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Kampagne anlegen","tags":["campaigns"],"description":"Legt eine Kampagne an (Entwurf, oder geplant wenn scheduleAt gesetzt ist). Die Vorlage muss veröffentlicht sein (sonst 422 `template_not_published`). Empfänger: gespeicherte Zielgruppe (`audienceId`) oder eigener Filter (`audienceFilter`), nicht beides; ohne beides alle aktiven Pässe der Vorlage. `locationIds` nur aus den Standorten der Vorlage, höchstens 10. `notify: \"silent\"` setzt `replace` voraus (sonst 422 auf dem Feld `notify`) und macht notification.text optional. `endsAt` ist das geplante Ende für den Kampagnenplan, nur Planung und Anzeige; mit `scheduleAt` muss es danach liegen (sonst 422, fields.endsAt = [\"ends_at_before_start\"]).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"groupName":{"description":"Kampagnen-Gruppe (höchstens 80 Zeichen). Kampagnen derselben Gruppe stehen in der Liste zusammen; leer oder null = keine Gruppe.","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"promotionId":{"description":"Aktion, zu der das Teil gehört (`GET /v1/workspaces/{id}/promotions`); null = ohne Aktion. Fremde Aktion 404 `promotion_not_found`, archivierte 409 `promotion_archived`.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceFilter":{"description":"Eigener Filter statt einer gespeicherten Zielgruppe, gleiche Sprache wie audiences.filter. Nicht zusammen mit audienceId. Ohne beides: alle aktiven Pässe der Vorlage."},"notification":{"type":"object","properties":{"text":{"type":"string"},"locales":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}}},"scheduleAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"description":"Geplantes Ende der Kampagne (Laufzeit im Kampagnenplan), nur für Planung und Anzeige: beim Erreichen wird nichts gesendet, gestoppt oder beendet. Muss nach scheduleAt liegen, wenn beide gesetzt sind, und nach dem Versand (publishedAt), wenn die Kampagne schon gesendet hat; sonst 422 mit fields.endsAt = [\"ends_at_before_start\"]. Wurde eine geplante Kampagne früher gesendet, bleibt scheduleAt stehen: das Ende liegt dann auch nach dem geplanten Versandzeitpunkt. null entfernt das Ende.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"costCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000000},{"type":"null"}]},"locationIds":{"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"description":"Standorte der Vorlage (höchstens 10), an denen der Kampagnentext auf dem Sperrbildschirm erscheint. Leer = alle Standorte der Vorlage wie gewohnt."},"replace":{"anyOf":[{"type":"object","properties":{"targetTemplateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["targetTemplateId"]},{"type":"null"}]},"pace":{"type":"string","enum":["fast","gentle"]},"notify":{"type":"string","enum":["push","silent"],"description":"Delivery mode. \"push\" appends notification.text to every targeted pass (lock-screen banner on Apple, addMessage on Google). \"silent\" refreshes the pass content without any message (requires `replace`); notification.text may be omitted."}},"required":["name","templateId"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"groupName":{"type":["string","null"]},"status":{"type":"string","enum":["draft","scheduled","running","paused","completed","cancelled"]},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audience":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Gespeicherte Zielgruppe, sonst null."},"name":{"description":"Name der gespeicherten Zielgruppe, sonst null.","type":["string","null"]},"filter":{"description":"Filter der gespeicherten Zielgruppe oder der eigene Filter der Kampagne (audienceFilter); null = alle aktiven Pässe der Vorlage."}},"required":["id","name","filter"],"additionalProperties":false},"onlyActive":{"type":"boolean","description":"true = die Kampagne erreicht nur aktive Pässe (Standard ohne Zielgruppe oder mit „Nur aktive“ im Filter)."},"audienceCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Aktion der Kampagne (Migration 0121); null = ohne Aktion."},"notification":{},"metrics":{"type":"object","properties":{"sent":{"description":"Passes addressed at publish (campaign_targets, no upper limit).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delivered":{"description":"Passes reached on at least one wallet (APNs-accepted Apple push or 2xx Google sync); counted per pass, never above sent.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"description":"Passes with at least one attempt and no successful delivery.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"description":"Passes no track could attempt (no Apple registrations and no Google object), plus passes whose batch never went out (campaign cancelled).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"description":"Addressed passes whose send batch has not gone out yet (paused, or paced by \"gentle\").","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"opened":{"description":"Clicks on the campaign's short links (the funnel's interactions step).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redeemed":{"description":"redemptionLogged events attributed to this campaign.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredApple":{"description":"Of delivered: passes an APNs-accepted push reached.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredGoogle":{"description":"Of delivered: passes a 2xx Google object sync reached.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replaced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codesAllocated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refreshedAt":{"description":"When delivered/failed/skipped/opened/redeemed were last rolled up from the events table.","type":"string"}},"additionalProperties":{}},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"replace":{"anyOf":[{"type":"object","properties":{"targetTemplateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["targetTemplateId"],"additionalProperties":false},{"type":"null"}]},"pace":{"type":"string","enum":["fast","gentle"]},"notify":{"type":"string","enum":["push","silent"],"description":"Delivery mode. \"push\" appends notification.text to every targeted pass (lock-screen banner on Apple, addMessage on Google). \"silent\" refreshes the pass content without any message (requires `replace`); notification.text may be omitted."},"scheduleAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"Geplantes Ende der Kampagne (Kampagnenplan), nur Planung und Anzeige: beim Erreichen wird nichts gesendet oder gestoppt. null = ohne geplantes Ende."},"costCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget der Kampagne in Cent (Medien, Druck, Anreize); der Trichter rechnet daraus die Kosten je erreichtem Pass und je Nutzung. null = nicht angegeben."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"approvalState":{"type":"string","enum":["none","in_review","changes_requested","approved"],"description":"Freigabe der Kampagne: none (nie angefragt oder nach einer Inhaltsänderung zurückgesetzt), in_review, changes_requested, approved. Routen unter /v1/campaigns/{id}/request-review, /approve, /request-changes, /comments, /reviews."},"approvalRequired":{"type":"boolean","description":"true = der Arbeitsbereich verlangt vor dem Senden eine Freigabe; ohne approvalState approved antwortet publish mit 409 approval_required."}},"required":["id","workspaceId","name","groupName","status","audienceId","audience","onlyActive","audienceCount","templateId","promotionId","notification","metrics","locationIds","replace","pace","notify","scheduleAt","publishedAt","pausedAt","cancelledAt","completedAt","endsAt","costCents","createdAt","approvalState","approvalRequired"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}":{"get":{"summary":"Kampagne mit Kennzahlen und Versand-Protokoll lesen","tags":["campaigns"],"description":"Eine Kampagne mit ihrem Versand-Protokoll (`sendLog`, die letzten 50 Zustellzeilen, neueste zuerst), ihrer Zielgruppe (`audience`: gespeicherte Zielgruppe mit Name und Filter oder der eigene Filter), `onlyActive`, `groupName` und `locationIds`. `metrics.delivered` / `failed` / `skipped` / `opened` / `redeemed` werden bei jedem Lesen aus denselben Ereignissen neu berechnet (delivered = auf Apple oder Google erreichte Pässe, pro Pass einmal gezählt) und in die Kampagne zurückgeschrieben, damit Liste und Detail übereinstimmen.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"groupName":{"type":["string","null"]},"status":{"type":"string","enum":["draft","scheduled","running","paused","completed","cancelled"]},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audience":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Gespeicherte Zielgruppe, sonst null."},"name":{"description":"Name der gespeicherten Zielgruppe, sonst null.","type":["string","null"]},"filter":{"description":"Filter der gespeicherten Zielgruppe oder der eigene Filter der Kampagne (audienceFilter); null = alle aktiven Pässe der Vorlage."}},"required":["id","name","filter"],"additionalProperties":false},"onlyActive":{"type":"boolean","description":"true = die Kampagne erreicht nur aktive Pässe (Standard ohne Zielgruppe oder mit „Nur aktive“ im Filter)."},"audienceCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Aktion der Kampagne (Migration 0121); null = ohne Aktion."},"notification":{},"metrics":{"type":"object","properties":{"sent":{"description":"Passes addressed at publish (campaign_targets, no upper limit).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delivered":{"description":"Passes reached on at least one wallet (APNs-accepted Apple push or 2xx Google sync); counted per pass, never above sent.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"description":"Passes with at least one attempt and no successful delivery.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"description":"Passes no track could attempt (no Apple registrations and no Google object), plus passes whose batch never went out (campaign cancelled).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"description":"Addressed passes whose send batch has not gone out yet (paused, or paced by \"gentle\").","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"opened":{"description":"Clicks on the campaign's short links (the funnel's interactions step).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redeemed":{"description":"redemptionLogged events attributed to this campaign.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredApple":{"description":"Of delivered: passes an APNs-accepted push reached.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredGoogle":{"description":"Of delivered: passes a 2xx Google object sync reached.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replaced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codesAllocated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refreshedAt":{"description":"When delivered/failed/skipped/opened/redeemed were last rolled up from the events table.","type":"string"}},"additionalProperties":{}},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"replace":{"anyOf":[{"type":"object","properties":{"targetTemplateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["targetTemplateId"],"additionalProperties":false},{"type":"null"}]},"pace":{"type":"string","enum":["fast","gentle"]},"notify":{"type":"string","enum":["push","silent"],"description":"Delivery mode. \"push\" appends notification.text to every targeted pass (lock-screen banner on Apple, addMessage on Google). \"silent\" refreshes the pass content without any message (requires `replace`); notification.text may be omitted."},"scheduleAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"Geplantes Ende der Kampagne (Kampagnenplan), nur Planung und Anzeige: beim Erreichen wird nichts gesendet oder gestoppt. null = ohne geplantes Ende."},"costCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget der Kampagne in Cent (Medien, Druck, Anreize); der Trichter rechnet daraus die Kosten je erreichtem Pass und je Nutzung. null = nicht angegeben."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"approvalState":{"type":"string","enum":["none","in_review","changes_requested","approved"],"description":"Freigabe der Kampagne: none (nie angefragt oder nach einer Inhaltsänderung zurückgesetzt), in_review, changes_requested, approved. Routen unter /v1/campaigns/{id}/request-review, /approve, /request-changes, /comments, /reviews."},"approvalRequired":{"type":"boolean","description":"true = der Arbeitsbereich verlangt vor dem Senden eine Freigabe; ohne approvalState approved antwortet publish mit 409 approval_required."},"sendLog":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"kind":{"type":"string","enum":["apple","google"]},"ok":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Apple: APNs-accepted pushes in this chunk. Google: 1 when the object sync returned 2xx."},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Apple: failed + 410-gone devices. Google: 1 when the sync returned a non-2xx status."},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Passes this track never attempted (see reason)."},"reason":{"description":"Set on skipped rows: google_object_missing, not_google_pass, not_apple_pass, no_registrations.","type":["string","null"]},"notify":{"type":"string","enum":["push","silent"],"description":"Delivery mode. \"push\" appends notification.text to every targeted pass (lock-screen banner on Apple, addMessage on Google). \"silent\" refreshes the pass content without any message (requires `replace`); notification.text may be omitted."}},"required":["at","kind","ok","failed","skipped","reason","notify"],"additionalProperties":false}}},"required":["id","workspaceId","name","groupName","status","audienceId","audience","onlyActive","audienceCount","templateId","promotionId","notification","metrics","locationIds","replace","pace","notify","scheduleAt","publishedAt","pausedAt","cancelledAt","completedAt","endsAt","costCents","createdAt","approvalState","approvalRequired","sendLog"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Kampagne bearbeiten (Entwurf oder geplant)","tags":["campaigns"],"description":"Ändert eine Kampagne im Entwurf oder im geplanten Zustand. Die entstehende Kombination muss gültig sein: `notify: \"silent\"` ohne `replace` (mitgesendet oder bereits gespeichert) ist ein 422 auf dem Feld `notify`; `audienceId` und `audienceFilter` zusammen sind ein 422 (zum Wechseln das andere Feld auf null setzen); `locationIds` nur aus den Standorten der Vorlage. Freigabe: ändert der Aufruf Nachricht, Zielgruppe, Standorte, Versandart oder die Ziel-Vorlage (Wert anders als gespeichert), fällt `approvalState` auf none zurück und der Verlauf bekommt einen Eintrag. Name, Gruppe, Versandtempo und `scheduleAt` lassen die Freigabe stehen, Planen und Umplanen nach der Freigabe also auch. `endsAt` (geplantes Ende für den Kampagnenplan, nur Planung und Anzeige) lässt die Freigabe ebenfalls stehen und muss nach `scheduleAt` liegen, nach dem Aufruf und mit dem gespeicherten Wert gerechnet (sonst 422, fields.endsAt = [\"ends_at_before_start\"]). Ein Body nur mit `endsAt` ändert auch eine laufende, pausierte oder abgeschlossene Kampagne (dort muss es nach publishedAt und nach scheduleAt liegen, auch wenn sie früher gesendet wurde); jede andere Änderung an ihr ist 409. Eine abgebrochene Kampagne bleibt gesperrt (409).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"groupName":{"description":"Kampagnen-Gruppe (höchstens 80 Zeichen). Kampagnen derselben Gruppe stehen in der Liste zusammen; leer oder null = keine Gruppe.","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"promotionId":{"description":"Aktion, zu der das Teil gehört (`GET /v1/workspaces/{id}/promotions`); null = ohne Aktion. Fremde Aktion 404 `promotion_not_found`, archivierte 409 `promotion_archived`.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceFilter":{"description":"Eigener Filter statt einer gespeicherten Zielgruppe, gleiche Sprache wie audiences.filter. Nicht zusammen mit audienceId. Ohne beides: alle aktiven Pässe der Vorlage."},"notification":{"type":"object","properties":{"text":{"type":"string"},"locales":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}}},"scheduleAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"description":"Geplantes Ende der Kampagne (Laufzeit im Kampagnenplan), nur für Planung und Anzeige: beim Erreichen wird nichts gesendet, gestoppt oder beendet. Muss nach scheduleAt liegen, wenn beide gesetzt sind, und nach dem Versand (publishedAt), wenn die Kampagne schon gesendet hat; sonst 422 mit fields.endsAt = [\"ends_at_before_start\"]. Wurde eine geplante Kampagne früher gesendet, bleibt scheduleAt stehen: das Ende liegt dann auch nach dem geplanten Versandzeitpunkt. null entfernt das Ende.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"costCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000000},{"type":"null"}]},"locationIds":{"anyOf":[{"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"description":"Standorte der Vorlage (höchstens 10), an denen der Kampagnentext auf dem Sperrbildschirm erscheint. Leer = alle Standorte der Vorlage wie gewohnt."},{"type":"null"}]},"replace":{"anyOf":[{"type":"object","properties":{"targetTemplateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["targetTemplateId"]},{"type":"null"}]},"pace":{"type":"string","enum":["fast","gentle"]},"notify":{"type":"string","enum":["push","silent"],"description":"Delivery mode. \"push\" appends notification.text to every targeted pass (lock-screen banner on Apple, addMessage on Google). \"silent\" refreshes the pass content without any message (requires `replace`); notification.text may be omitted."}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"groupName":{"type":["string","null"]},"status":{"type":"string","enum":["draft","scheduled","running","paused","completed","cancelled"]},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audience":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Gespeicherte Zielgruppe, sonst null."},"name":{"description":"Name der gespeicherten Zielgruppe, sonst null.","type":["string","null"]},"filter":{"description":"Filter der gespeicherten Zielgruppe oder der eigene Filter der Kampagne (audienceFilter); null = alle aktiven Pässe der Vorlage."}},"required":["id","name","filter"],"additionalProperties":false},"onlyActive":{"type":"boolean","description":"true = die Kampagne erreicht nur aktive Pässe (Standard ohne Zielgruppe oder mit „Nur aktive“ im Filter)."},"audienceCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"promotionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Aktion der Kampagne (Migration 0121); null = ohne Aktion."},"notification":{},"metrics":{"type":"object","properties":{"sent":{"description":"Passes addressed at publish (campaign_targets, no upper limit).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delivered":{"description":"Passes reached on at least one wallet (APNs-accepted Apple push or 2xx Google sync); counted per pass, never above sent.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"description":"Passes with at least one attempt and no successful delivery.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"description":"Passes no track could attempt (no Apple registrations and no Google object), plus passes whose batch never went out (campaign cancelled).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"description":"Addressed passes whose send batch has not gone out yet (paused, or paced by \"gentle\").","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"opened":{"description":"Clicks on the campaign's short links (the funnel's interactions step).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redeemed":{"description":"redemptionLogged events attributed to this campaign.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredApple":{"description":"Of delivered: passes an APNs-accepted push reached.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deliveredGoogle":{"description":"Of delivered: passes a 2xx Google object sync reached.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replaced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"codesAllocated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refreshedAt":{"description":"When delivered/failed/skipped/opened/redeemed were last rolled up from the events table.","type":"string"}},"additionalProperties":{}},"locationIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"replace":{"anyOf":[{"type":"object","properties":{"targetTemplateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"codePoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["targetTemplateId"],"additionalProperties":false},{"type":"null"}]},"pace":{"type":"string","enum":["fast","gentle"]},"notify":{"type":"string","enum":["push","silent"],"description":"Delivery mode. \"push\" appends notification.text to every targeted pass (lock-screen banner on Apple, addMessage on Google). \"silent\" refreshes the pass content without any message (requires `replace`); notification.text may be omitted."},"scheduleAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"Geplantes Ende der Kampagne (Kampagnenplan), nur Planung und Anzeige: beim Erreichen wird nichts gesendet oder gestoppt. null = ohne geplantes Ende."},"costCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget der Kampagne in Cent (Medien, Druck, Anreize); der Trichter rechnet daraus die Kosten je erreichtem Pass und je Nutzung. null = nicht angegeben."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"approvalState":{"type":"string","enum":["none","in_review","changes_requested","approved"],"description":"Freigabe der Kampagne: none (nie angefragt oder nach einer Inhaltsänderung zurückgesetzt), in_review, changes_requested, approved. Routen unter /v1/campaigns/{id}/request-review, /approve, /request-changes, /comments, /reviews."},"approvalRequired":{"type":"boolean","description":"true = der Arbeitsbereich verlangt vor dem Senden eine Freigabe; ohne approvalState approved antwortet publish mit 409 approval_required."}},"required":["id","workspaceId","name","groupName","status","audienceId","audience","onlyActive","audienceCount","templateId","promotionId","notification","metrics","locationIds","replace","pace","notify","scheduleAt","publishedAt","pausedAt","cancelledAt","completedAt","endsAt","costCents","createdAt","approvalState","approvalRequired"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/recipients":{"get":{"summary":"Empfänger mit Zustell-Ergebnis","tags":["campaigns"],"description":"Adressierte Pässe einer Kampagne mit ihrem Ergebnis pro Pass, aus denselben Zustellereignissen wie das Versand-Protokoll. `outcome`: confirmed = Gerät hat die Aktualisierung geholt, delivered = von APNs oder Google angenommen, failed, skipped (mit `reason`), pending = noch kein Ergebnis. `counts` gilt immer für alle Empfänger, `total` und `pagination` für die Auswahl aus `filter` und `q`. Seitenweise mit `cursor` (aus `pagination.nextCursor`) oder `offset`. Name und E-Mail stehen nur mit Einwilligung des Pass-Inhabers in der Antwort und nur ab der Rolle editor.","parameters":[{"schema":{"type":"string","enum":["confirmed","delivered","failed","skipped","pending","redeemed","all"]},"in":"query","name":"filter","required":false,"description":"Ergebnis-Filter: confirmed, delivered, failed, skipped, pending, redeemed oder all (Standard)."},{"schema":{"type":"string","enum":["confirmed","delivered","failed","skipped","pending","redeemed","all"]},"in":"query","name":"outcome","required":false,"description":"Älterer Name für filter; filter hat Vorrang."},{"schema":{"type":"string","maxLength":80},"in":"query","name":"q","required":false,"description":"Suche in der Seriennummer, ab der Rolle editor auch in Name und E-Mail."},{"schema":{"type":"string","maxLength":200},"in":"query","name":"cursor","required":false,"description":"Aus pagination.nextCursor der vorigen Seite; ersetzt offset."},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"offset","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"platform":{"type":"string"},"status":{"type":"string"},"isTest":{"type":"boolean"},"outcome":{"type":"string","enum":["confirmed","delivered","failed","skipped","pending"]},"reason":{"description":"Bei skipped: google_object_missing, google_not_saved, not_google_pass, not_apple_pass, no_registrations, credential_sandbox oder not_sent (Stapel nie gesendet, Kampagne beendet).","type":["string","null"]},"apple":{"anyOf":[{"type":"object","properties":{"outcome":{"type":"string","enum":["confirmed","delivered","failed","skipped","pending"]},"reason":{"type":["string","null"]}},"required":["outcome","reason"],"additionalProperties":false},{"type":"null"}],"description":"Apple Wallet: confirmed = Gerät hat die Aktualisierung geholt, delivered = APNs hat angenommen, failed, skipped (reason), pending. null ohne Versuch."},"google":{"anyOf":[{"type":"object","properties":{"outcome":{"type":"string","enum":["confirmed","delivered","failed","skipped","pending"]},"message":{"description":"Was das Google-Mitteilungstor tat: sent, capped (3 je 24 h), stale, rejected, failed, none.","type":["string","null"]},"reason":{"type":["string","null"]}},"required":["outcome","message","reason"],"additionalProperties":false},{"type":"null"}],"description":"Google Wallet: delivered = Objekt aktualisiert (2xx), failed, skipped (reason), pending. null ohne Versuch."},"redeemed":{"type":"boolean"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"Zeitpunkt der letzten Nutzung, die dieser Kampagne zugeordnet ist, sonst null."},"locationName":{"description":"Filiale bzw. Standort dieser letzten Nutzung, sonst null.","type":["string","null"]},"lastEventAt":{"type":["string","null"]},"customerName":{"description":"Nur mit Einwilligung des Pass-Inhabers und nur ab der Rolle editor, sonst null.","type":["string","null"]},"customerEmail":{"description":"Nur mit Einwilligung des Pass-Inhabers und nur ab der Rolle editor, sonst null.","type":["string","null"]}},"required":["passId","serial","platform","status","isTest","outcome","reason","apple","google","redeemed","redeemedAt","locationName","lastEventAt","customerName","customerEmail"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Treffer der Auswahl aus filter und q."},"counts":{"type":"object","properties":{"all":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confirmed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delivered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redeemed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["all","confirmed","delivered","failed","skipped","pending","redeemed"],"additionalProperties":false,"description":"Immer über alle adressierten Pässe, unabhängig von filter und q. all = Summe der fünf Ergebnisse; redeemed zählt Pässe mit mindestens einer Nutzung dieser Kampagne."},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","total","counts","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/recipients.csv":{"get":{"summary":"Empfänger als CSV exportieren","tags":["campaigns"],"description":"Alle adressierten Pässe der Kampagne mit Ergebnis, letzter Nutzung (Zeitpunkt und Filiale) und, mit Einwilligung des Pass-Inhabers, Name und E-Mail. `filter` und `q` wie bei `GET /v1/campaigns/{id}/recipients`, ohne Seiten. Semikolon als Trennzeichen, UTF-8 mit BOM und CRLF, damit ein deutsches Excel die Spalten richtig öffnet; Zellen, die mit = + - @ beginnen, bekommen ein vorangestelltes Apostroph und bleiben Text. Ab der Rolle editor, jeder Export steht mit Anzahl und Auswahl im Audit-Log (`campaign.recipients_export`).","parameters":[{"schema":{"type":"string","enum":["confirmed","delivered","failed","skipped","pending","redeemed","all"]},"in":"query","name":"filter","required":false,"description":"Ergebnis-Filter: confirmed, delivered, failed, skipped, pending, redeemed oder all (Standard)."},{"schema":{"type":"string","enum":["confirmed","delivered","failed","skipped","pending","redeemed","all"]},"in":"query","name":"outcome","required":false,"description":"Älterer Name für filter; filter hat Vorrang."},{"schema":{"type":"string","maxLength":80},"in":"query","name":"q","required":false,"description":"Suche in der Seriennummer, ab der Rolle editor auch in Name und E-Mail."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"CSV-Datei (text/csv)","content":{"application/json":{"schema":{"type":"string","description":"CSV-Datei (text/csv)"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/publish":{"post":{"summary":"Kampagne veröffentlichen oder planen","tags":["campaigns"],"description":"Friert die Zielgruppe ein (jeder Pass eine Zeile, ohne Obergrenze) und startet den Versand in Stapeln à 100 Pässen: „fast“ alle Stapel sofort, „gentle“ ein Stapel pro Minute. Jeder Stapel prüft vorher den Status: Pausieren hält den nächsten Stapel an, Fortsetzen plant die offenen Stapel neu ein, Beenden überspringt den Rest. Push-Kampagnen schreiben notification.text auf jeden Pass, wenn sein Stapel dran ist. Stille Kampagnen tauschen nur den Inhalt (replace) und lassen die Wallets aktualisieren, ohne Nachricht und ohne Benachrichtigung. Eine geplante Kampagne sendet zum geplanten Zeitpunkt von selbst; vorher antwortet diese Route mit 409 `scheduled_in_future`, außer mit `now=true`. Verlangt der Arbeitsbereich eine Freigabe (`approvalRequired`) und ist `approvalState` nicht approved, antwortet sie mit 409 `approval_required`; das gilt genauso für die geplante Ausführung, die eine solche Kampagne einmal in den Entwurf zurücksetzt.","parameters":[{"schema":{"type":"string","enum":["0","1","true","false"]},"in":"query","name":"now","required":false,"description":"true = eine geplante Kampagne jetzt sofort senden statt zum geplanten Zeitpunkt."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"enqueued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"audienceCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["enqueued","audienceCount"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/pause":{"post":{"summary":"Kampagne pausieren","tags":["campaigns"],"description":"Hält den Versand an: kein weiterer Stapel geht raus, bereits übergebene Stapel laufen zu Ende. Nur für laufende Kampagnen (sonst 409).","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/resume":{"post":{"summary":"Kampagne fortsetzen","tags":["campaigns"],"description":"Setzt eine pausierte Kampagne fort. Wirkt mit dem nächsten Stapel: die offenen Stapel werden neu eingeplant, bei „fast“ sofort, bei „gentle“ weiter ein Stapel pro Minute (der erste eine Minute nach dem letzten gesendeten). Nur für pausierte Kampagnen (sonst 409).","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/cancel":{"post":{"summary":"Kampagne abbrechen","tags":["campaigns"],"description":"Beendet eine Kampagne endgültig: alle Pässe, deren Stapel noch nicht raus ist, werden übersprungen.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/locations":{"get":{"summary":"Standorte auflisten","tags":["locations"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"address":{"description":"Straße und Hausnummer.","type":["string","null"]},"zip":{"description":"Postleitzahl.","type":["string","null"]},"city":{"description":"Stadt.","type":["string","null"]},"lat":{"type":"number"},"lon":{"type":"number"},"radiusM":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"beaconUuid":{"type":["string","null"]},"beaconMajor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"beaconMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"externalRef":{"description":"Filialnummer des Kunden (Kasse, Clearing), je Workspace eindeutig. Eine Nutzung mit `locationRef` = diese Nummer wird dem Standort zugeordnet. null = ohne.","type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","name","address","zip","city","lat","lon","radiusM","beaconUuid","beaconMajor","beaconMinor","externalRef","createdAt","updatedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Standort anlegen","tags":["locations"],"description":"Legt einen Standort an. Straße (`address`), PLZ (`zip`) und Stadt (`city`) sind getrennte Felder; der Radius liegt zwischen 10 und 5.000 m. `externalRef` ist die Filialnummer, je Workspace eindeutig (vergeben: 409 `conflict` mit `details.locationId`). Viele Standorte auf einmal: `POST /v1/workspaces/:workspaceId/locations/import`. Im kostenlosen Paket nicht enthalten (402).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"address":{"description":"Straße und Hausnummer. Leer oder null = ohne Adresse.","anyOf":[{"type":"string","maxLength":240},{"type":"null"}]},"zip":{"description":"Postleitzahl. Fehlen zip und city, wird eine Adresse der Form „Straße 1, 18055, Rostock“ aufgeteilt.","anyOf":[{"type":"string","maxLength":16},{"type":"null"}]},"city":{"description":"Stadt.","anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":150,"type":"integer","minimum":10,"maximum":50000},"externalRef":{"description":"Filialnummer (Kasse, Clearing), je Workspace eindeutig; eine vergebene Nummer ist ein 409 `conflict`. Leer oder null = ohne.","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"beaconUuid":{"description":"iBeacon-UUID. null entfernt den Beacon samt Major und Minor.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"beaconMajor":{"anyOf":[{"type":"integer","minimum":0,"maximum":65535},{"type":"null"}]},"beaconMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":65535},{"type":"null"}]}},"required":["name","lat","lon"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"address":{"description":"Straße und Hausnummer.","type":["string","null"]},"zip":{"description":"Postleitzahl.","type":["string","null"]},"city":{"description":"Stadt.","type":["string","null"]},"lat":{"type":"number"},"lon":{"type":"number"},"radiusM":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"beaconUuid":{"type":["string","null"]},"beaconMajor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"beaconMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"externalRef":{"description":"Filialnummer des Kunden (Kasse, Clearing), je Workspace eindeutig. Eine Nutzung mit `locationRef` = diese Nummer wird dem Standort zugeordnet. null = ohne.","type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","name","address","zip","city","lat","lon","radiusM","beaconUuid","beaconMajor","beaconMinor","externalRef","createdAt","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/locations/{id}":{"patch":{"summary":"Standort bearbeiten","tags":["locations"],"description":"Ändert einen Standort. Nur mitgeschickte Felder ändern sich; null oder leer löscht Straße, PLZ, Stadt oder Filialnummer, `beaconUuid: null` entfernt den Beacon. Ändern sich Koordinaten, Radius oder Beacon, lädt jeder aktive Pass der Vorlagen mit diesem Standort neu (`repushed` = Zahl dieser Pässe).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"address":{"description":"Straße und Hausnummer. Leer oder null = ohne Adresse.","anyOf":[{"type":"string","maxLength":240},{"type":"null"}]},"zip":{"description":"Postleitzahl. Fehlen zip und city, wird eine Adresse der Form „Straße 1, 18055, Rostock“ aufgeteilt.","anyOf":[{"type":"string","maxLength":16},{"type":"null"}]},"city":{"description":"Stadt.","anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"type":"integer","minimum":10,"maximum":50000},"externalRef":{"description":"Filialnummer (Kasse, Clearing), je Workspace eindeutig; eine vergebene Nummer ist ein 409 `conflict`. Leer oder null = ohne.","anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"beaconUuid":{"description":"iBeacon-UUID. null entfernt den Beacon samt Major und Minor.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"beaconMajor":{"anyOf":[{"type":"integer","minimum":0,"maximum":65535},{"type":"null"}]},"beaconMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":65535},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"address":{"description":"Straße und Hausnummer.","type":["string","null"]},"zip":{"description":"Postleitzahl.","type":["string","null"]},"city":{"description":"Stadt.","type":["string","null"]},"lat":{"type":"number"},"lon":{"type":"number"},"radiusM":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"beaconUuid":{"type":["string","null"]},"beaconMajor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"beaconMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"externalRef":{"description":"Filialnummer des Kunden (Kasse, Clearing), je Workspace eindeutig. Eine Nutzung mit `locationRef` = diese Nummer wird dem Standort zugeordnet. null = ohne.","type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"repushed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Aktive Pässe, die neu laden, weil ihre Vorlage diesen Standort trägt; 0, wenn sich für den Pass nichts ändert."}},"required":["id","workspaceId","name","address","zip","city","lat","lon","radiusM","beaconUuid","beaconMajor","beaconMinor","externalRef","createdAt","updatedAt","repushed"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Standort löschen","tags":["locations"],"description":"Löscht einen Standort. Er fällt aus jeder Vorlage, deren aktive Pässe danach ohne ihn neu laden.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/shortlinks":{"post":{"summary":"Kurzlink mit Klick-Tracking anlegen","tags":["links"],"description":"Erzeugt eine `/l/…`-URL für Links auf der Pass-Rückseite. Klicks landen als Ereignis am Pass.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"destinationUrl":{"type":"string","format":"uri"},"campaignId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["destinationUrl"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"campaignId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"destinationUrl":{"type":"string","format":"uri"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["code","workspaceId","campaignId","destinationUrl","expiresAt","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/flows":{"get":{"summary":"Automatisierungen auflisten","tags":["flows"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"status":{"type":"string","enum":["draft","active","paused","archived"]},"trigger":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["event_date"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_added"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_removed"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["fixed_date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["type","at"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["redeemed"]},"kinds":{"description":"Arten der Nutzung, die den Ablauf starten (redemption = Einlösung, checkin = Einlass, stamp = Stempel). Ohne: jede Nutzung.","minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["redemption","checkin","stamp"]}}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["external_event"]},"key":{"type":"string","pattern":"^[a-z0-9_-]{2,40}$","description":"Name des Ereignisses in der Auslöser-URL POST /v1/workspaces/:workspaceId/triggers/:key."}},"required":["type","key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_date"]},"field":{"type":"string","pattern":"^(validUntil|attr\\.[A-Za-z0-9_-]{1,64})$","description":"validUntil = gültig bis des Passes (sonst der Vorlage), attr.<schlüssel> = Datums-Attribut des Passes."},"offsetDays":{"type":"integer","minimum":-365,"maximum":365,"description":"Tage relativ zum Datum: −30 = 30 Tage vorher, 0 = am Tag, 7 = eine Woche danach."},"yearly":{"description":"true = jedes Jahr am Jahrestag (nur Tag und Monat zählen, der 29. Februar fällt in anderen Jahren auf den 28.), etwa ein Geburtstag. Nur mit attr.<schlüssel>. Ohne: genau dieses Datum, einmal.","type":"boolean"}},"required":["type","field","offsetDays"],"additionalProperties":false}]},"definition":{"type":"object","properties":{"steps":{"minItems":1,"maxItems":6,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["push"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"message":{"type":"string","minLength":1,"maxLength":160}},"required":["type","timing","message"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["update_content"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"patch":{"anyOf":[{"type":"object","properties":{"fieldValues":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":200}},"fieldLabels":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":80}},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backTexts":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"value":{"type":"string","maxLength":2000}},"required":["label","value"],"additionalProperties":false}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"relevantText":{"type":"string","maxLength":120}},"required":["locationId","relevantText"],"additionalProperties":false}}},"additionalProperties":false},{"type":"null"}]},"pushMessage":{"type":"string","maxLength":160}},"required":["type","timing","patch"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["location_notification"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"locationIds":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"relevantText":{"type":"string","minLength":1,"maxLength":120}},"required":["type","timing","locationIds","relevantText"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["email"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"subject":{"type":"string","minLength":1,"maxLength":160},"body":{"type":"string","minLength":1,"maxLength":4000},"includeWalletLink":{"default":true,"type":"boolean"},"templateKind":{"type":"string","enum":["announcement","offer","winback","event_reminder"]},"slots":{"type":"object","properties":{"ctaLabel":{"type":"string","maxLength":60},"ctaUrl":{"type":"string","format":"uri"},"offerValue":{"type":"string","maxLength":40},"imageAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false}},"required":["type","timing","subject","body","includeWalletLink"],"additionalProperties":false}]}}},"required":["steps"],"additionalProperties":false},"definitionVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string"},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceFilter":{"anyOf":[{},{"type":"null"}]},"triggerUrl":{"description":"Nur beim Auslöser external_event: die Adresse für POST (Token-Scope events:write), sonst null.","type":["string","null"]},"stats":{"type":"object","properties":{"enrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cancelled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enrolled30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Einschreibungen der letzten 30 Tage („Durchläufe in 30 Tagen“)."},"redeemedSinceEnrol":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Einschreibungen, deren Pass nach dem Einschreiben mindestens eine Nutzung hatte."},"redemptionRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"redeemedSinceEnrol / enrolled, 0 bis 1; null ohne Einschreibung."}},"required":["enrolled","active","completed","cancelled","failed","enrolled30d","redeemedSinceEnrol","redemptionRate"],"additionalProperties":false},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","templateId","name","status","trigger","definition","definitionVersion","source","audienceId","audienceFilter","triggerUrl","activatedAt","pausedAt","createdAt","updatedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Automatisierung anlegen","tags":["flows"],"description":"Legt einen Entwurf an: Vorlage, Auslöser und Schritte (Push, Inhalt ändern, Standort-Hinweis, E-Mail). Zielgruppe: `audienceId` (gespeicherte Zielgruppe) oder `audienceFilter` (eigener Filter, Sprache wie audiences.filter), nicht beides (422); sie gilt für jeden Auslöser. Auslöser zusätzlich zu Pass hinzugefügt/entfernt, Event-Datum und festem Datum: `redeemed` (Nutzung, optional `kinds`), `external_event` (`key`, Auslöser-URL POST /v1/workspaces/:workspaceId/triggers/:key) und `pass_date` (`field` validUntil oder attr.<schlüssel>, `offsetDays` −365…365). Texte und Feldwerte der Schritte dürfen Formeln `{{= … }}` enthalten (Variablen event.…, attr.…, pointsBalance); eine ungültige Formel → 422 `expression_invalid` mit dem Feld. E-Mail-Schritte gehen bei jedem Auslöser, verschickt wird nur mit Marketing-Einwilligung.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"trigger":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["event_date"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["pass_added"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["pass_removed"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["fixed_date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["type","at"]},{"type":"object","properties":{"type":{"type":"string","enum":["redeemed"]},"kinds":{"description":"Arten der Nutzung, die den Ablauf starten (redemption = Einlösung, checkin = Einlass, stamp = Stempel). Ohne: jede Nutzung.","minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["redemption","checkin","stamp"]}}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["external_event"]},"key":{"type":"string","pattern":"^[a-z0-9_-]{2,40}$","description":"Name des Ereignisses in der Auslöser-URL POST /v1/workspaces/:workspaceId/triggers/:key."}},"required":["type","key"]},{"type":"object","properties":{"type":{"type":"string","enum":["pass_date"]},"field":{"type":"string","pattern":"^(validUntil|attr\\.[A-Za-z0-9_-]{1,64})$","description":"validUntil = gültig bis des Passes (sonst der Vorlage), attr.<schlüssel> = Datums-Attribut des Passes."},"offsetDays":{"type":"integer","minimum":-365,"maximum":365,"description":"Tage relativ zum Datum: −30 = 30 Tage vorher, 0 = am Tag, 7 = eine Woche danach."},"yearly":{"description":"true = jedes Jahr am Jahrestag (nur Tag und Monat zählen, der 29. Februar fällt in anderen Jahren auf den 28.), etwa ein Geburtstag. Nur mit attr.<schlüssel>. Ohne: genau dieses Datum, einmal.","type":"boolean"}},"required":["type","field","offsetDays"]}]},"definition":{"type":"object","properties":{"steps":{"minItems":1,"maxItems":6,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["push"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["offsetMinutes"]},"message":{"type":"string","minLength":1,"maxLength":160}},"required":["type","timing","message"]},{"type":"object","properties":{"type":{"type":"string","enum":["update_content"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["offsetMinutes"]},"patch":{"anyOf":[{"type":"object","properties":{"fieldValues":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":200}},"fieldLabels":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":80}},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backTexts":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"value":{"type":"string","maxLength":2000}},"required":["label","value"]}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"relevantText":{"type":"string","maxLength":120}},"required":["locationId","relevantText"]}}}},{"type":"null"}]},"pushMessage":{"type":"string","maxLength":160}},"required":["type","timing","patch"]},{"type":"object","properties":{"type":{"type":"string","enum":["location_notification"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["offsetMinutes"]},"locationIds":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"relevantText":{"type":"string","minLength":1,"maxLength":120}},"required":["type","timing","locationIds","relevantText"]},{"type":"object","properties":{"type":{"type":"string","enum":["email"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["offsetMinutes"]},"subject":{"type":"string","minLength":1,"maxLength":160},"body":{"type":"string","minLength":1,"maxLength":4000},"includeWalletLink":{"default":true,"type":"boolean"},"templateKind":{"type":"string","enum":["announcement","offer","winback","event_reminder"]},"slots":{"type":"object","properties":{"ctaLabel":{"type":"string","maxLength":60},"ctaUrl":{"type":"string","format":"uri"},"offerValue":{"type":"string","maxLength":40},"imageAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}}},"required":["type","timing","subject","body"]}]}}},"required":["steps"]},"source":{"default":"manual","type":"string","enum":["manual","template","ai"]},"audienceId":{"description":"Gespeicherte Zielgruppe des Workspace; nur Pässe darin laufen durch den Ablauf. null entfernt sie. Nicht zusammen mit audienceFilter.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceFilter":{"description":"Eigener Filter statt einer gespeicherten Zielgruppe, gleiche Sprache wie audiences.filter. null entfernt ihn. Nicht zusammen mit audienceId. Ohne beides: alle Pässe der Vorlage."}},"required":["name","templateId","trigger","definition"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"status":{"type":"string","enum":["draft","active","paused","archived"]},"trigger":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["event_date"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_added"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_removed"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["fixed_date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["type","at"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["redeemed"]},"kinds":{"description":"Arten der Nutzung, die den Ablauf starten (redemption = Einlösung, checkin = Einlass, stamp = Stempel). Ohne: jede Nutzung.","minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["redemption","checkin","stamp"]}}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["external_event"]},"key":{"type":"string","pattern":"^[a-z0-9_-]{2,40}$","description":"Name des Ereignisses in der Auslöser-URL POST /v1/workspaces/:workspaceId/triggers/:key."}},"required":["type","key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_date"]},"field":{"type":"string","pattern":"^(validUntil|attr\\.[A-Za-z0-9_-]{1,64})$","description":"validUntil = gültig bis des Passes (sonst der Vorlage), attr.<schlüssel> = Datums-Attribut des Passes."},"offsetDays":{"type":"integer","minimum":-365,"maximum":365,"description":"Tage relativ zum Datum: −30 = 30 Tage vorher, 0 = am Tag, 7 = eine Woche danach."},"yearly":{"description":"true = jedes Jahr am Jahrestag (nur Tag und Monat zählen, der 29. Februar fällt in anderen Jahren auf den 28.), etwa ein Geburtstag. Nur mit attr.<schlüssel>. Ohne: genau dieses Datum, einmal.","type":"boolean"}},"required":["type","field","offsetDays"],"additionalProperties":false}]},"definition":{"type":"object","properties":{"steps":{"minItems":1,"maxItems":6,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["push"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"message":{"type":"string","minLength":1,"maxLength":160}},"required":["type","timing","message"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["update_content"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"patch":{"anyOf":[{"type":"object","properties":{"fieldValues":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":200}},"fieldLabels":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":80}},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backTexts":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"value":{"type":"string","maxLength":2000}},"required":["label","value"],"additionalProperties":false}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"relevantText":{"type":"string","maxLength":120}},"required":["locationId","relevantText"],"additionalProperties":false}}},"additionalProperties":false},{"type":"null"}]},"pushMessage":{"type":"string","maxLength":160}},"required":["type","timing","patch"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["location_notification"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"locationIds":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"relevantText":{"type":"string","minLength":1,"maxLength":120}},"required":["type","timing","locationIds","relevantText"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["email"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"subject":{"type":"string","minLength":1,"maxLength":160},"body":{"type":"string","minLength":1,"maxLength":4000},"includeWalletLink":{"default":true,"type":"boolean"},"templateKind":{"type":"string","enum":["announcement","offer","winback","event_reminder"]},"slots":{"type":"object","properties":{"ctaLabel":{"type":"string","maxLength":60},"ctaUrl":{"type":"string","format":"uri"},"offerValue":{"type":"string","maxLength":40},"imageAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false}},"required":["type","timing","subject","body","includeWalletLink"],"additionalProperties":false}]}}},"required":["steps"],"additionalProperties":false},"definitionVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string"},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceFilter":{"anyOf":[{},{"type":"null"}]},"triggerUrl":{"description":"Nur beim Auslöser external_event: die Adresse für POST (Token-Scope events:write), sonst null.","type":["string","null"]},"stats":{"type":"object","properties":{"enrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cancelled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enrolled30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Einschreibungen der letzten 30 Tage („Durchläufe in 30 Tagen“)."},"redeemedSinceEnrol":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Einschreibungen, deren Pass nach dem Einschreiben mindestens eine Nutzung hatte."},"redemptionRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"redeemedSinceEnrol / enrolled, 0 bis 1; null ohne Einschreibung."}},"required":["enrolled","active","completed","cancelled","failed","enrolled30d","redeemedSinceEnrol","redemptionRate"],"additionalProperties":false},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","templateId","name","status","trigger","definition","definitionVersion","source","audienceId","audienceFilter","triggerUrl","activatedAt","pausedAt","createdAt","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/flows/{id}":{"get":{"summary":"Automatisierung lesen","tags":["flows"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"status":{"type":"string","enum":["draft","active","paused","archived"]},"trigger":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["event_date"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_added"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_removed"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["fixed_date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["type","at"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["redeemed"]},"kinds":{"description":"Arten der Nutzung, die den Ablauf starten (redemption = Einlösung, checkin = Einlass, stamp = Stempel). Ohne: jede Nutzung.","minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["redemption","checkin","stamp"]}}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["external_event"]},"key":{"type":"string","pattern":"^[a-z0-9_-]{2,40}$","description":"Name des Ereignisses in der Auslöser-URL POST /v1/workspaces/:workspaceId/triggers/:key."}},"required":["type","key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_date"]},"field":{"type":"string","pattern":"^(validUntil|attr\\.[A-Za-z0-9_-]{1,64})$","description":"validUntil = gültig bis des Passes (sonst der Vorlage), attr.<schlüssel> = Datums-Attribut des Passes."},"offsetDays":{"type":"integer","minimum":-365,"maximum":365,"description":"Tage relativ zum Datum: −30 = 30 Tage vorher, 0 = am Tag, 7 = eine Woche danach."},"yearly":{"description":"true = jedes Jahr am Jahrestag (nur Tag und Monat zählen, der 29. Februar fällt in anderen Jahren auf den 28.), etwa ein Geburtstag. Nur mit attr.<schlüssel>. Ohne: genau dieses Datum, einmal.","type":"boolean"}},"required":["type","field","offsetDays"],"additionalProperties":false}]},"definition":{"type":"object","properties":{"steps":{"minItems":1,"maxItems":6,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["push"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"message":{"type":"string","minLength":1,"maxLength":160}},"required":["type","timing","message"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["update_content"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"patch":{"anyOf":[{"type":"object","properties":{"fieldValues":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":200}},"fieldLabels":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":80}},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backTexts":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"value":{"type":"string","maxLength":2000}},"required":["label","value"],"additionalProperties":false}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"relevantText":{"type":"string","maxLength":120}},"required":["locationId","relevantText"],"additionalProperties":false}}},"additionalProperties":false},{"type":"null"}]},"pushMessage":{"type":"string","maxLength":160}},"required":["type","timing","patch"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["location_notification"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"locationIds":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"relevantText":{"type":"string","minLength":1,"maxLength":120}},"required":["type","timing","locationIds","relevantText"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["email"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"subject":{"type":"string","minLength":1,"maxLength":160},"body":{"type":"string","minLength":1,"maxLength":4000},"includeWalletLink":{"default":true,"type":"boolean"},"templateKind":{"type":"string","enum":["announcement","offer","winback","event_reminder"]},"slots":{"type":"object","properties":{"ctaLabel":{"type":"string","maxLength":60},"ctaUrl":{"type":"string","format":"uri"},"offerValue":{"type":"string","maxLength":40},"imageAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false}},"required":["type","timing","subject","body","includeWalletLink"],"additionalProperties":false}]}}},"required":["steps"],"additionalProperties":false},"definitionVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string"},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceFilter":{"anyOf":[{},{"type":"null"}]},"triggerUrl":{"description":"Nur beim Auslöser external_event: die Adresse für POST (Token-Scope events:write), sonst null.","type":["string","null"]},"stats":{"type":"object","properties":{"enrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cancelled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enrolled30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Einschreibungen der letzten 30 Tage („Durchläufe in 30 Tagen“)."},"redeemedSinceEnrol":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Einschreibungen, deren Pass nach dem Einschreiben mindestens eine Nutzung hatte."},"redemptionRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"redeemedSinceEnrol / enrolled, 0 bis 1; null ohne Einschreibung."}},"required":["enrolled","active","completed","cancelled","failed","enrolled30d","redeemedSinceEnrol","redemptionRate"],"additionalProperties":false},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","templateId","name","status","trigger","definition","definitionVersion","source","audienceId","audienceFilter","triggerUrl","activatedAt","pausedAt","createdAt","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Automatisierung bearbeiten","tags":["flows"],"description":"Nur im Entwurf oder pausiert (sonst 409); die Vorlage nur im Entwurf. Zielgruppe: `audienceId` (gespeicherte Zielgruppe) oder `audienceFilter` (eigener Filter, Sprache wie audiences.filter), nicht beides (422); sie gilt für jeden Auslöser. Auslöser zusätzlich zu Pass hinzugefügt/entfernt, Event-Datum und festem Datum: `redeemed` (Nutzung, optional `kinds`), `external_event` (`key`, Auslöser-URL POST /v1/workspaces/:workspaceId/triggers/:key) und `pass_date` (`field` validUntil oder attr.<schlüssel>, `offsetDays` −365…365). Texte und Feldwerte der Schritte dürfen Formeln `{{= … }}` enthalten (Variablen event.…, attr.…, pointsBalance); eine ungültige Formel → 422 `expression_invalid` mit dem Feld. E-Mail-Schritte gehen bei jedem Auslöser, verschickt wird nur mit Marketing-Einwilligung.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"trigger":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["event_date"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["pass_added"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["pass_removed"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["fixed_date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["type","at"]},{"type":"object","properties":{"type":{"type":"string","enum":["redeemed"]},"kinds":{"description":"Arten der Nutzung, die den Ablauf starten (redemption = Einlösung, checkin = Einlass, stamp = Stempel). Ohne: jede Nutzung.","minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["redemption","checkin","stamp"]}}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["external_event"]},"key":{"type":"string","pattern":"^[a-z0-9_-]{2,40}$","description":"Name des Ereignisses in der Auslöser-URL POST /v1/workspaces/:workspaceId/triggers/:key."}},"required":["type","key"]},{"type":"object","properties":{"type":{"type":"string","enum":["pass_date"]},"field":{"type":"string","pattern":"^(validUntil|attr\\.[A-Za-z0-9_-]{1,64})$","description":"validUntil = gültig bis des Passes (sonst der Vorlage), attr.<schlüssel> = Datums-Attribut des Passes."},"offsetDays":{"type":"integer","minimum":-365,"maximum":365,"description":"Tage relativ zum Datum: −30 = 30 Tage vorher, 0 = am Tag, 7 = eine Woche danach."},"yearly":{"description":"true = jedes Jahr am Jahrestag (nur Tag und Monat zählen, der 29. Februar fällt in anderen Jahren auf den 28.), etwa ein Geburtstag. Nur mit attr.<schlüssel>. Ohne: genau dieses Datum, einmal.","type":"boolean"}},"required":["type","field","offsetDays"]}]},"definition":{"type":"object","properties":{"steps":{"minItems":1,"maxItems":6,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["push"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["offsetMinutes"]},"message":{"type":"string","minLength":1,"maxLength":160}},"required":["type","timing","message"]},{"type":"object","properties":{"type":{"type":"string","enum":["update_content"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["offsetMinutes"]},"patch":{"anyOf":[{"type":"object","properties":{"fieldValues":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":200}},"fieldLabels":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":80}},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backTexts":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"value":{"type":"string","maxLength":2000}},"required":["label","value"]}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"relevantText":{"type":"string","maxLength":120}},"required":["locationId","relevantText"]}}}},{"type":"null"}]},"pushMessage":{"type":"string","maxLength":160}},"required":["type","timing","patch"]},{"type":"object","properties":{"type":{"type":"string","enum":["location_notification"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["offsetMinutes"]},"locationIds":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"relevantText":{"type":"string","minLength":1,"maxLength":120}},"required":["type","timing","locationIds","relevantText"]},{"type":"object","properties":{"type":{"type":"string","enum":["email"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["offsetMinutes"]},"subject":{"type":"string","minLength":1,"maxLength":160},"body":{"type":"string","minLength":1,"maxLength":4000},"includeWalletLink":{"default":true,"type":"boolean"},"templateKind":{"type":"string","enum":["announcement","offer","winback","event_reminder"]},"slots":{"type":"object","properties":{"ctaLabel":{"type":"string","maxLength":60},"ctaUrl":{"type":"string","format":"uri"},"offerValue":{"type":"string","maxLength":40},"imageAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}}},"required":["type","timing","subject","body"]}]}}},"required":["steps"]},"audienceId":{"description":"Gespeicherte Zielgruppe des Workspace; nur Pässe darin laufen durch den Ablauf. null entfernt sie. Nicht zusammen mit audienceFilter.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceFilter":{"description":"Eigener Filter statt einer gespeicherten Zielgruppe, gleiche Sprache wie audiences.filter. null entfernt ihn. Nicht zusammen mit audienceId. Ohne beides: alle Pässe der Vorlage."}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"status":{"type":"string","enum":["draft","active","paused","archived"]},"trigger":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["event_date"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_added"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_removed"]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["fixed_date"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["type","at"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["redeemed"]},"kinds":{"description":"Arten der Nutzung, die den Ablauf starten (redemption = Einlösung, checkin = Einlass, stamp = Stempel). Ohne: jede Nutzung.","minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["redemption","checkin","stamp"]}}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["external_event"]},"key":{"type":"string","pattern":"^[a-z0-9_-]{2,40}$","description":"Name des Ereignisses in der Auslöser-URL POST /v1/workspaces/:workspaceId/triggers/:key."}},"required":["type","key"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["pass_date"]},"field":{"type":"string","pattern":"^(validUntil|attr\\.[A-Za-z0-9_-]{1,64})$","description":"validUntil = gültig bis des Passes (sonst der Vorlage), attr.<schlüssel> = Datums-Attribut des Passes."},"offsetDays":{"type":"integer","minimum":-365,"maximum":365,"description":"Tage relativ zum Datum: −30 = 30 Tage vorher, 0 = am Tag, 7 = eine Woche danach."},"yearly":{"description":"true = jedes Jahr am Jahrestag (nur Tag und Monat zählen, der 29. Februar fällt in anderen Jahren auf den 28.), etwa ein Geburtstag. Nur mit attr.<schlüssel>. Ohne: genau dieses Datum, einmal.","type":"boolean"}},"required":["type","field","offsetDays"],"additionalProperties":false}]},"definition":{"type":"object","properties":{"steps":{"minItems":1,"maxItems":6,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["push"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"message":{"type":"string","minLength":1,"maxLength":160}},"required":["type","timing","message"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["update_content"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"patch":{"anyOf":[{"type":"object","properties":{"fieldValues":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":200}},"fieldLabels":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":80}},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backTexts":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"value":{"type":"string","maxLength":2000}},"required":["label","value"],"additionalProperties":false}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"relevantText":{"type":"string","maxLength":120}},"required":["locationId","relevantText"],"additionalProperties":false}}},"additionalProperties":false},{"type":"null"}]},"pushMessage":{"type":"string","maxLength":160}},"required":["type","timing","patch"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["location_notification"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"locationIds":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"relevantText":{"type":"string","minLength":1,"maxLength":120}},"required":["type","timing","locationIds","relevantText"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["email"]},"timing":{"type":"object","properties":{"anchor":{"default":"trigger","type":"string","enum":["trigger","event_start","event_end"]},"offsetMinutes":{"type":"integer","minimum":-129600,"maximum":129600}},"required":["anchor","offsetMinutes"],"additionalProperties":false},"subject":{"type":"string","minLength":1,"maxLength":160},"body":{"type":"string","minLength":1,"maxLength":4000},"includeWalletLink":{"default":true,"type":"boolean"},"templateKind":{"type":"string","enum":["announcement","offer","winback","event_reminder"]},"slots":{"type":"object","properties":{"ctaLabel":{"type":"string","maxLength":60},"ctaUrl":{"type":"string","format":"uri"},"offerValue":{"type":"string","maxLength":40},"imageAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false}},"required":["type","timing","subject","body","includeWalletLink"],"additionalProperties":false}]}}},"required":["steps"],"additionalProperties":false},"definitionVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string"},"audienceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audienceFilter":{"anyOf":[{},{"type":"null"}]},"triggerUrl":{"description":"Nur beim Auslöser external_event: die Adresse für POST (Token-Scope events:write), sonst null.","type":["string","null"]},"stats":{"type":"object","properties":{"enrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cancelled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enrolled30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Einschreibungen der letzten 30 Tage („Durchläufe in 30 Tagen“)."},"redeemedSinceEnrol":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Einschreibungen, deren Pass nach dem Einschreiben mindestens eine Nutzung hatte."},"redemptionRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"redeemedSinceEnrol / enrolled, 0 bis 1; null ohne Einschreibung."}},"required":["enrolled","active","completed","cancelled","failed","enrolled30d","redeemedSinceEnrol","redemptionRate"],"additionalProperties":false},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","templateId","name","status","trigger","definition","definitionVersion","source","audienceId","audienceFilter","triggerUrl","activatedAt","pausedAt","createdAt","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/flows/{id}/activate":{"post":{"summary":"Automatisierung aktivieren","tags":["flows"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active"]},"enrollTargets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["status","enrollTargets"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/flows/{id}/pause":{"post":{"summary":"Automatisierung pausieren","tags":["flows"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["paused"]}},"required":["status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/flows/{id}/archive":{"post":{"summary":"Automatisierung archivieren","tags":["flows"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["archived"]}},"required":["status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/flows/{id}/stats":{"get":{"summary":"Statistik der Automatisierung","tags":["flows"],"description":"Einschreibungen nach Zustand, je Schritt ausgeführt, übersprungen und offen, dazu die Einlösequote: `redeemedSinceEnrol` = Einschreibungen, deren Pass danach mindestens eine Nutzung hatte, `redemptionRate` = redeemedSinceEnrol / enrolled (null ohne Einschreibung), `enrolled30d` = Einschreibungen der letzten 30 Tage.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"enrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cancelled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enrolled30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redeemedSinceEnrol":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redemptionRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"perStep":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"type":{"type":"string"},"executed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skippedQuota":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skippedNoEmail":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skippedNoLocation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["index","type","executed","skipped","pending","skippedQuota","skippedNoEmail","skippedNoLocation","failed"],"additionalProperties":false}}},"required":["enrolled","active","completed","cancelled","failed","enrolled30d","redeemedSinceEnrol","redemptionRate","perStep"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/flows/{id}/dry-run":{"post":{"summary":"Probelauf an einem Test-Pass","tags":["flows"],"description":"Führt alle gespeicherten Schritte sofort nacheinander an einem Test- oder Demo-Pass aus, mit echten Pushes. `payload` ist die Beispiel-Nutzlast für die Formeln (event.…), etwa `{ \"goals\": 3 }` für ein externes Ereignis; höchstens 16 KB. Ein Schritt, dessen Formel nicht rechnet, steht als failed mit detail in der Antwort, der Pass behält dann seinen Inhalt.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"payload":{"description":"Beispiel-Nutzlast des Auslösers für die Formeln (event.…).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["passId"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"steps":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"type":{"type":"string"},"outcome":{"type":"string"},"detail":{"type":"string"}},"required":["index","type","outcome"],"additionalProperties":false}}},"required":["steps"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/flows/{id}/steps/{index}/test":{"post":{"summary":"Einzelnen Schritt an einen Test-Pass senden","tags":["flows"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"payload":{"description":"Beispiel-Nutzlast des Auslösers für die Formeln (event.…).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["passId"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"path","name":"index","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"type":{"type":"string"},"outcome":{"type":"string"},"detail":{"type":"string"}},"required":["index","type","outcome"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/plan":{"get":{"summary":"Kampagnenplan lesen","tags":["campaigns"],"description":"Kampagnen und aktive oder pausierte Automatisierungen des Workspace als Zeitstrahl, sortiert nach `start` (ohne start zuletzt), dann nach Name. `from`/`to`: Kalendertage (YYYY-MM-DD) in Europe/Berlin, `from` ab Tagesbeginn, `to` bis Tagesende. Vorgabe: sechs Wochen, Montag der Woche vor zwei Wochen bis Sonntag der Woche in drei Wochen; fehlt nur eines, gilt für das andere dieselbe Länge von sechs Wochen. Jahre 2000 bis 2100. Höchstens 366 Tage, `from` nicht nach `to` (sonst 422 `validation_failed`). Ein Eintrag steht im Plan, wenn er den Zeitraum berührt: Kampagne von `publishedAt` (sonst `scheduleAt`) bis `endsAt` (sonst bei completed oder cancelled bis completedAt bzw. cancelledAt, sonst offen), Automatisierung von `activatedAt` bis `pausedAt` (aktiv: offen). Ein Entwurf zählt nur an seinen Tagen (scheduleAt, endsAt), ein Entwurf ohne beide fehlt, archivierte Automatisierungen fehlen. `endsAt` ist nur Planung und Anzeige: beim Erreichen wird nichts gesendet oder gestoppt. `summary` zählt die Einträge des Zeitraums. Jede Rolle im Workspace; Token-Scope `campaigns:read`.","parameters":[{"schema":{"type":"string"},"in":"query","name":"from","required":false,"description":"Erster Tag des Zeitraums (YYYY-MM-DD, Europe/Berlin, ab Tagesbeginn, Jahr 2000 bis 2100). Vorgabe: Montag der Woche vor zwei Wochen."},{"schema":{"type":"string"},"in":"query","name":"to","required":false,"description":"Letzter Tag des Zeitraums (YYYY-MM-DD, Europe/Berlin, bis Tagesende, Jahr 2000 bis 2100). Vorgabe: Sonntag der Woche in drei Wochen (sechs Wochen ab from). Höchstens 366 Tage ab from (sonst 422)."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string","description":"Erster Tag des Zeitraums (YYYY-MM-DD)."},"to":{"type":"string","description":"Letzter Tag des Zeitraums (YYYY-MM-DD), einschließlich."},"timezone":{"type":"string","description":"Zeitzone der Tage, immer Europe/Berlin."},"summary":{"type":"object","properties":{"campaigns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Kampagnen unter den Einträgen."},"running":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Davon laufen gerade: Versand läuft (running), oder abgeschlossen (completed) und die Laufzeit deckt jetzt (start <= jetzt < end). Pausierte, geplante, Entwürfe und abgebrochene zählen nicht."},"scheduled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Davon geplant (Status scheduled)."},"flowsActive":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Aktive Automatisierungen unter den Einträgen."}},"required":["campaigns","running","scheduled","flowsActive"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["campaign","flow"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"status":{"type":"string","enum":["draft","scheduled","running","paused","completed","cancelled","active"],"description":"Kampagne: draft, scheduled, running, paused, completed, cancelled. Automatisierung: active oder paused."},"start":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"Kampagne: publishedAt, sonst scheduleAt. Automatisierung: activatedAt, ohne activatedAt (Altbestand, Demo-Daten) createdAt. null nur bei einem Entwurf, der nur ein geplantes Ende hat."},"end":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"Kampagne: endsAt, sonst bei completed oder cancelled completedAt bzw. cancelledAt, sonst null. Automatisierung: bei paused pausedAt, sonst null. Nie vor start: hat eine Kampagne erst nach ihrem geplanten Ende gesendet, ist end gleich start."},"openEnded":{"type":"boolean","description":"true, wenn end null ist und die Kampagne läuft oder geplant ist oder die Automatisierung aktiv ist: der Balken läuft bis zum rechten Rand."},"planned":{"type":"boolean","description":"true für einen Entwurf mit scheduleAt (etwa nach einer fehlenden Freigabe in den Entwurf zurückgesetzt)."},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"background":{"anyOf":[{"type":"string","pattern":"^#[0-9a-f]{6}$"},{"type":"null"}],"description":"Hintergrundfarbe der Vorlage (#rrggbb, klein geschrieben) aus der veröffentlichten Version, sonst aus dem Entwurf; null ohne gültige Farbe."},"foreground":{"anyOf":[{"type":"string","pattern":"^#[0-9a-f]{6}$"},{"type":"null"}],"description":"Textfarbe der Vorlage (#rrggbb, klein geschrieben), Quelle wie background."},"logoUrl":{"description":"Signierte Adresse des Logos der Vorlage (15 Minuten gültig), null ohne Logo.","type":["string","null"]}},"required":["id","name","background","foreground","logoUrl"],"additionalProperties":false},"description":"Kampagne: ihre Vorlage, bei replace dazu die Ziel-Vorlage. Automatisierung: ihre Vorlage."},"audienceName":{"description":"Name der gespeicherten Zielgruppe; null bei eigenem Filter oder ohne Zielgruppe.","type":["string","null"]},"recipients":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Kampagne: beim Versand adressierte Pässe, null vor dem Versand. Automatisierung: Einschreibungen (wie stats.enrolled)."},"metrics":{"type":"object","properties":{"sent":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Kampagne: metrics.sent. Automatisierung: null."},"redemptions":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Kampagne: metrics.redeemed (zuletzt berechneter Stand). Automatisierung: null."}},"required":["sent","redemptions"],"additionalProperties":false},"href":{"type":"string","description":"Pfad in der App: /campaigns/<id> oder /flows/<id>."}},"required":["kind","id","name","status","start","end","openEnded","planned","templates","audienceName","recipients","metrics","href"],"additionalProperties":false}}},"required":["from","to","timezone","summary","items"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/events":{"post":{"summary":"Eigenes Ereignis schreiben","tags":["events"],"description":"Für Signale aus deinem System, z. B. einen Kaufabschluss (`purchase`), am Pass (`passId`) oder am Workspace. Nutzungen meldest du über `POST /v1/workspaces/{workspaceId}/redemptions` oder eine Empfangs-URL. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":80},"passId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"templateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaignId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"payload":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"source":{"default":"api","type":"string","maxLength":60}},"required":["type"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string"},"passId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"templateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaignId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"payload":{},"source":{"type":"string"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","type","passId","templateId","campaignId","payload","source","occurredAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Ereignisse abfragen","tags":["events"],"description":"Roh-Ereignisse des Workspace, neueste zuerst, gefiltert nach `type` und `passId`, höchstens 500 je Aufruf (`limit`). Ohne Blättern: für eine laufende Übernahme in dein System einen Webhook verwenden. `payload` enthält nie Geräte-Kennungen (deviceLibraryId, Push-Token); E-Mail, Name und Telefon sind unter der Rolle org_admin maskiert (`k•••@verve.com`), Kundensupport sieht sie ungekürzt.","parameters":[{"schema":{"type":"string"},"in":"query","name":"type","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"passId","required":false},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string"},"passId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"templateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaignId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"payload":{},"source":{"type":"string"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","type","passId","templateId","campaignId","payload","source","occurredAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/events/{id}":{"get":{"summary":"Ereignis lesen","tags":["events"],"description":"`payload` wie bei der Liste: ohne Geräte-Kennungen, Kontaktdaten unter org_admin maskiert.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string"},"passId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"templateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaignId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"payload":{},"source":{"type":"string"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","type","passId","templateId","campaignId","payload","source","occurredAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/analytics/dashboard-kpis":{"get":{"summary":"Kennzahlen des Workspace","tags":["analytics"],"description":"Pässe gesamt und aktiv; neue Pässe, Nutzungen, gesendete und zugestellte Pushes der letzten 7 Tage; dazu abgelaufene und Demo-Pässe, Mitteilungen, Nutzungen und Umsatz gesamt.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"totalPasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activePasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passesCreatedLast7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redemptionsLast7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pushSentLast7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pushDeliveredLast7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"demoPasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiredPasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notificationsSent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inWalletApple":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inWalletGoogle":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["totalPasses","activePasses","passesCreatedLast7d","redemptionsLast7d","pushSentLast7d","pushDeliveredLast7d","demoPasses","expiredPasses","notificationsSent","redemptions","amountCents","inWalletApple","inWalletGoogle"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/analytics/source-performance":{"get":{"summary":"Leistung je Quelle (UTM)","tags":["analytics"],"description":"Ausgestellte Pässe und Nutzungen je UTM-Quelle.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"utmSource":{"type":"string"},"passes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["utmSource","passes","redemptions"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/analytics/business-case":{"get":{"summary":"Business-Case-Daten","tags":["analytics"],"description":"Pässe, Nutzungen und Nutzungsquote je UTM-Quelle für das Business-Case-Dashboard.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"utmSource":{"type":"string"},"passes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"conversionRate":{"type":"number"}},"required":["utmSource","passes","redemptions","conversionRate"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhook-event-types":{"get":{"summary":"Webhook-Ereignisse auflisten","tags":["webhooks"],"description":"Alle Ereignisse, die doWallet an Webhooks zustellt, mit Name, Bezeichnung und Beschreibung. Nur diese Namen lassen sich abonnieren; `aliases` sind frühere Namen, die weiter passen. Jede Zustellung trägt den Namen in `type` und im Header `x-dowallet-event`. Ohne Anmeldung lesbar.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"example":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Beispiel für `data` einer Zustellung dieses Ereignisses."}},"required":["name","label","description","aliases","example"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false,"example":{"data":[{"name":"pass.redeemed","label":"Pass eingelöst","description":"Eine Nutzung wurde angenommen: am Scanner, von der Kasse über die Empfangs-URL, per API oder CSV-Import. Genau eine Zustellung je Nutzung; data.kind ist redemption oder checkin (Einlass).","aliases":["redemptionLogged","redemption.logged"],"example":{"passId":"7f0c…","templateId":"2a1b…","campaignId":null,"kind":"redemption","locationName":"Filiale Hörde","source":"scan"}}]}},"example":{"data":[{"name":"pass.redeemed","label":"Pass eingelöst","description":"Eine Nutzung wurde angenommen: am Scanner, von der Kasse über die Empfangs-URL, per API oder CSV-Import. Genau eine Zustellung je Nutzung; data.kind ist redemption oder checkin (Einlass).","aliases":["redemptionLogged","redemption.logged"],"example":{"passId":"7f0c…","templateId":"2a1b…","campaignId":null,"kind":"redemption","locationName":"Filiale Hörde","source":"scan"}}]}}}}}}},"/v1/workspaces/{workspaceId}/webhooks":{"get":{"summary":"Webhooks auflisten","tags":["webhooks"],"description":"Ausgehende Webhooks des Workspace mit abonnierten Ereignissen (`eventTypes`), Status, letzter Zustellung und Zahl der gescheiterten Zustellungen in Folge.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string","format":"uri"},"eventTypes":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"lastDeliveryAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastDeliveryStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"failedDeliveriesInARow":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"disabledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","workspaceId","url","eventTypes","isActive","lastDeliveryAt","lastDeliveryStatus","failedDeliveriesInARow","createdAt","disabledAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Webhook anlegen","tags":["webhooks"],"description":"Registriert eine HTTPS-URL für die Ereignisse in `eventTypes` (mindestens eins, Namen aus `GET /v1/webhook-event-types`). Die Antwort enthält das Signatur-Secret (`whsec_…`) einmalig. Jede Zustellung ist ein POST mit dem JSON-Umschlag `{ \"id\", \"type\", \"occurredAt\", \"workspaceId\", \"data\" }`: `type` ist der Name aus dem Katalog, `data` hängt vom Ereignis ab. Kopfzeilen: `x-dowallet-event` (derselbe Name), `x-dowallet-event-id` (die `id`) und `x-dowallet-signature: t=<unix>,v1=<hex(hmac_sha256(secret, t + \".\" + body))>`. Org-Admin.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"eventTypes":{"minItems":1,"type":"array","items":{"type":"string"}}},"required":["url","eventTypes"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string","format":"uri"},"eventTypes":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"lastDeliveryAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastDeliveryStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"failedDeliveriesInARow":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"disabledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"secret":{"type":"string"}},"required":["id","workspaceId","url","eventTypes","isActive","lastDeliveryAt","lastDeliveryStatus","failedDeliveriesInARow","createdAt","disabledAt","secret"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/{id}/test":{"post":{"summary":"Test-Zustellung senden","tags":["webhooks"],"description":"Schickt ein signiertes Test-Ereignis (`{\"type\": \"webhook.test\"}`) an die URL und liefert den Statuscode deines Endpunkts. Der Versuch erscheint in den Zustellungen.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error":{"type":"string"}},"required":["ok","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/{id}/deliveries":{"get":{"summary":"Zustellungen einsehen","tags":["webhooks"],"description":"Die letzten 50 Zustellversuche mit Ereignis (`eventType`), Status, Antwortcode, dem Anfang der Antwort deines Endpunkts und, bei erneut gesendeten, der Herkunft (`redeliveredFromId`). Zur Fehlersuche auf deiner Seite.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"webhookId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attempt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string"},"eventType":{"description":"Name des Ereignisses (type der Zustellung), z. B. pass.redeemed oder webhook.test.","type":["string","null"]},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"responseStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"responseBody":{"type":["string","null"]},"redeliveredFromId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Die Zustellung, die dieser Versuch erneut sendet, sonst null."},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","webhookId","attempt","status","eventType","eventId","responseStatus","responseBody","redeliveredFromId","completedAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/{id}/deliveries/{deliveryId}":{"get":{"summary":"Eine Zustellung mit Nutzlast","tags":["webhooks"],"description":"Die gesendete Nutzlast (bis 8 KB), die gesendeten Kopfzeilen (`x-dowallet-signature`, `x-dowallet-event-id`, `x-dowallet-event`) und die ganze Antwort deines Endpunkts. 30 Tage nach der Zustellung sind Nutzlast und Antwort entfernt.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"deliveryId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"webhookId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attempt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string"},"eventType":{"description":"Name des Ereignisses (type der Zustellung), z. B. pass.redeemed oder webhook.test.","type":["string","null"]},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"responseStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"responseBody":{"type":["string","null"]},"redeliveredFromId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Die Zustellung, die dieser Versuch erneut sendet, sonst null."},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"payload":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Die gesendete Nutzlast (bis 8 KB; darüber type, eventId, truncated, bytes); {} nach der Anonymisierung (30 Tage)."},"requestHeaders":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}],"description":"Die gesendeten Kopfzeilen: content-type, x-dowallet-signature, x-dowallet-event-id, x-dowallet-event."}},"required":["id","webhookId","attempt","status","eventType","eventId","responseStatus","responseBody","redeliveredFromId","completedAt","createdAt","payload","requestHeaders"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/{id}/deliveries/{deliveryId}/redeliver":{"post":{"summary":"Zustellung erneut senden","tags":["webhooks"],"description":"Schickt dieselbe Nutzlast (gleiche `eventId`, dein Endpunkt kann doppelte erkennen) mit frischer Signatur noch einmal und startet eine neue Wiederholungskette. Test-Zustellungen und Zustellungen ohne gespeicherte Nutzlast sind 409.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"deliveryId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"queued":{"type":"boolean"},"jobId":{"type":["string","null"]},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string"}},"required":["queued","jobId","eventId","type"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/{id}/rotate-secret":{"post":{"summary":"Signatur-Secret rotieren","tags":["webhooks"],"description":"Neues Secret, einmal im Klartext. Das alte signiert noch `overlapHours` (0 bis 72, Standard 24) als zweites `v1=` im Header `x-dowallet-signature` mit, damit dein Endpunkt ohne Lücke wechselt.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"overlapHours":{"default":24,"type":"integer","minimum":0,"maximum":72}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"secret":{"type":"string"},"previousValidUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["secret","previousValidUntil"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/{id}":{"patch":{"summary":"Webhook ändern","tags":["webhooks"],"description":"URL, Ereignisse oder Aktiv-Status ändern. Scheitern zehn Ereignisse in Folge auch nach allen Wiederholungen, schaltet doWallet den Webhook ab; `isActive: true` nimmt ihn wieder auf und setzt den Zähler zurück. Org-Admin.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"eventTypes":{"minItems":1,"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string","format":"uri"},"eventTypes":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"lastDeliveryAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastDeliveryStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"failedDeliveriesInARow":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"disabledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","workspaceId","url","eventTypes","isActive","lastDeliveryAt","lastDeliveryStatus","failedDeliveriesInARow","createdAt","disabledAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Webhook löschen","tags":["webhooks"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/avv.pdf":{"get":{"summary":"Auftragsverarbeitungsvertrag (PDF)","tags":["dsgvo"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/data-export":{"post":{"summary":"Datenexport der Organisation anfordern","tags":["dsgvo"],"description":"DSGVO Art. 20. Asynchron; der Download erscheint unter `data-exports`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["org","user"]},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"archivePath":{"type":["string","null"]},"bytesWritten":{"type":["string","null"]},"error":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","kind","orgId","userId","status","archivePath","bytesWritten","error","downloadUrl","createdAt","startedAt","completedAt","expiresAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/data-exports":{"get":{"summary":"Datenexporte auflisten","tags":["dsgvo"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["org","user"]},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"archivePath":{"type":["string","null"]},"bytesWritten":{"type":["string","null"]},"error":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","kind","orgId","userId","status","archivePath","bytesWritten","error","downloadUrl","createdAt","startedAt","completedAt","expiresAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/users/me/data-export":{"post":{"summary":"Eigenen Datenexport anfordern","tags":["dsgvo"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["org","user"]},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"archivePath":{"type":["string","null"]},"bytesWritten":{"type":["string","null"]},"error":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","kind","orgId","userId","status","archivePath","bytesWritten","error","downloadUrl","createdAt","startedAt","completedAt","expiresAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{orgId}/data-deletion":{"get":{"summary":"Geplante Löschung der Organisation lesen","tags":["dsgvo"],"description":"Die eingeplante Löschung mit Datum oder null. Nur Inhaber der Organisation.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"pending":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["org","user"]},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"scheduledFor":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"executedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","kind","orgId","userId","status","scheduledFor","cancelledAt","executedAt","createdAt"],"additionalProperties":false},{"type":"null"}]}},"required":["pending"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Löschung der Organisation einplanen","tags":["dsgvo"],"description":"Mit Karenzzeit; bis dahin abbrechbar. Rechnungen bleiben gemäß Aufbewahrungspflicht.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"orgId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["org","user"]},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"scheduledFor":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"executedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","kind","orgId","userId","status","scheduledFor","cancelledAt","executedAt","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/users/me/data-deletion":{"get":{"summary":"Geplante Löschung des eigenen Kontos lesen","tags":["dsgvo"],"description":"Die eingeplante Löschung mit Datum oder null, auf jedem Gerät gleich.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"pending":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["org","user"]},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"scheduledFor":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"executedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","kind","orgId","userId","status","scheduledFor","cancelledAt","executedAt","createdAt"],"additionalProperties":false},{"type":"null"}]}},"required":["pending"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Eigenes Konto löschen","tags":["dsgvo"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["org","user"]},"orgId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","running","completed","failed","cancelled"]},"scheduledFor":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"executedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","kind","orgId","userId","status","scheduledFor","cancelledAt","executedAt","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/data-deletions/{id}/cancel":{"post":{"summary":"Löschung abbrechen","tags":["dsgvo"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/passes":{"get":{"summary":"Pässe auflisten","tags":["passes"],"description":"Neueste zuerst, seitenweise über `cursor` (aus `pagination.nextCursor`). `q` sucht die Seriennummer oder den Code (exakt oder Anfang), die Pass-ID und die eigene Kennung (`externalId`) exakt, den exakten Wert eines Attributs (ab der Rolle org_admin und für Kundensupport jeder Schlüssel, sonst nur die in den Vorlagen deklarierten Schlüssel ohne Personenbezug) und ab der Rolle org_admin sowie für Kundensupport die E-Mail des Kontakts (Anfang). `status`: `active` (gültig: nicht entwertet, nicht abgelaufen), `expired` (abgelaufen, nicht entwertet), `voided` (entwertet: vom Aussteller, durch die Einlöse-Regel oder als Dublette), `removed` (vom Inhaber aus dem Wallet entfernt, nicht entwertet), `deactivated` (Datenbank-Status deactivated: entwertet durch den Aussteller oder entfernt). Mit `counts=1` trägt die erste Seite `counts` je Zustand für dieselben Filter ohne `status`, dazu `notInWallet` (gültig, eingeladen, in keiner Wallet) und `remindable` (davon fällig für „Erinnern“). `templateId` zeigt nur Pässe einer Vorlage. `isTest`, `isDemo`, `isInternal` (`true`/`1` oder `false`/`0`) filtern nach der Markierung als Test-Pass, Demo-Pass oder eigenes Gerät; `testDevice=1` zeigt Test-Pässe und eigene Geräte zusammen (Handy-Test), `testDevice=0` alle anderen. Die Filter gelten auch für `counts`. `audienceId` zeigt nur Pässe, die diese gespeicherte Zielgruppe des Arbeitsbereichs gerade trifft (dieselbe Regel wie ihre Zählung); eine fremde oder unbekannte Zielgruppe ist ein 422 auf `audienceId`, eine Regel, die sich nicht übersetzen lässt, ebenso. E-Mail und personenbezogene Attribute (customer…, email, name, phone …) sind unter der Rolle org_admin maskiert, z. B. `k•••@verve.com`; Kundensupport sieht sie ungekürzt. Ein API-Token handelt mit der Rolle seines Erstellers (Org-Owner) und bekommt die Werte ungekürzt.","parameters":[{"schema":{"type":"string","maxLength":200},"in":"query","name":"q","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","enum":["active","expired","voided","removed","deactivated"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"customerId","required":false},{"schema":{"type":"string"},"in":"query","name":"utmSource","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"audienceId","required":false},{"schema":{"type":"string","enum":["0","1","true","false"]},"in":"query","name":"isTest","required":false},{"schema":{"type":"string","enum":["0","1","true","false"]},"in":"query","name":"isDemo","required":false},{"schema":{"type":"string","enum":["0","1","true","false"]},"in":"query","name":"isInternal","required":false},{"schema":{"type":"string","enum":["0","1","true","false"]},"in":"query","name":"testDevice","required":false},{"schema":{"type":"string"},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","enum":["0","1","true","false"]},"in":"query","name":"counts","required":false},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateName":{"type":["string","null"]},"templateVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"platform":{"type":"string","enum":["apple","google","both"]},"status":{"type":"string","enum":["active","deactivated"]},"isTest":{"type":"boolean"},"label":{"type":["string","null"]},"isInternal":{"type":"boolean"},"isDemo":{"type":"boolean"},"code":{"type":["string","null"]},"codePending":{"type":"boolean"},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"utm":{"type":"object","properties":{"source":{"type":["string","null"]},"medium":{"type":["string","null"]},"campaign":{"type":["string","null"]},"term":{"type":["string","null"]},"content":{"type":["string","null"]}},"required":["source","medium","campaign","term","content"],"additionalProperties":false},"claimLinkId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"deactivatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redemptionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"generation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"previousTemplateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"expiredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"customerId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"customer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string"}},"required":["id","email"],"additionalProperties":false},{"type":"null"}]},"externalId":{"type":["string","null"]},"invite":{"anyOf":[{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"sentAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"openedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["createdAt","sentAt","openedAt"],"additionalProperties":false},{"type":"null"}]}},"required":["id","serial","workspaceId","templateId","templateName","templateVersion","platform","status","isTest","label","isInternal","isDemo","code","codePending","attributes","utm","claimLinkId","createdAt","activatedAt","deactivatedAt","voidedAt","redeemedAt","validUntil","redemptionCount","generation","previousTemplateId","expiredAt","customerId","customer","externalId","invite"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false},"counts":{"type":"object","properties":{"all":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"voided":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expired":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"removed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inWallet":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inWalletApple":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inWalletGoogle":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notInWallet":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remindable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["all","active","voided","expired","removed","inWallet","inWalletApple","inWalletGoogle","notInWallet","remindable"],"additionalProperties":false}},"required":["data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Pass ausstellen","tags":["passes"],"description":"Stellt einen Pass aus einer veröffentlichten Vorlage aus, z. B. ein Ticket pro Kauf. `attributes` füllt die Felder der Feldliste ({{attr.<key>}}), Pflichtfelder fehlen → 422 mit `fields['attributes.<key>']`. `code` legt den Barcode fest (druckbare Zeichen aus Latin-1, je Vorlage eindeutig, sonst 409 `code_in_use`); das geht nur, wenn die Barcode-Nachricht der veröffentlichten Vorlage {{code}} enthält, sonst 422 `barcode_without_code`. Ohne `code` kommt der Wert aus der Wertquelle der Vorlage, sonst die Seriennummer; `code` in der Antwort ist dieser Wert und steht im Barcode, wenn die Barcode-Nachricht {{code}} enthält. `validUntil` ist das Ablaufdatum dieses Passes. Die Antwort enthält den Apple-Download-Link (ohne Ablauf) und den Google-Speichern-Link. Header `Idempotency-Key` (24 h) macht Wiederholungen sicher. Token-Scope `passes:issue`; im Free-Plan gesperrt.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attributes":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":500},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"code":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[\\x20-\\x7E\\u00A0-\\u00FF]+$"},"validUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"platform":{"default":"both","type":"string","enum":["apple","google","both"]},"customer":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"firstName":{"type":"string","minLength":1,"maxLength":80},"lastName":{"type":"string","minLength":1,"maxLength":80},"consent":{"type":"boolean","enum":[true]}},"required":["email","consent"],"additionalProperties":false},"utm":{"type":"object","properties":{"source":{"type":"string","maxLength":200},"medium":{"type":"string","maxLength":200},"campaign":{"type":"string","maxLength":200},"term":{"type":"string","maxLength":200},"content":{"type":"string","maxLength":200}},"additionalProperties":false},"isTest":{"type":"boolean"}},"required":["templateId"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"header","name":"idempotency-key","required":false}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"code":{"type":"string"},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"apple":{"anyOf":[{"type":"object","properties":{"downloadUrl":{"type":"string","format":"uri"}},"required":["downloadUrl"],"additionalProperties":false},{"type":"null"}]},"google":{"anyOf":[{"type":"object","properties":{"saveUrl":{"type":"string","format":"uri"}},"required":["saveUrl"],"additionalProperties":false},{"type":"null"}]}},"required":["passId","serial","code","validUntil","apple","google"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/generations":{"get":{"summary":"Pass-Verlauf lesen","tags":["passes"],"description":"Alle Generationen eines Passes: welche Vorlage und welche Version wann galten. Grundlage für Zielgruppen mit „Frühere Vorlage“.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"generation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateName":{"type":["string","null"]},"templateVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"campaignId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaignName":{"type":["string","null"]},"appliedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["generation","templateId","templateName","templateVersion","campaignId","campaignName","appliedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/deactivate":{"post":{"summary":"Pass entwerten","tags":["passes"],"description":"Setzt den Pass auf `deactivated` und entwertet ihn (`voidedAt`). Das Wallet zeigt ihn nach dem Push als ungültig; fügt der Inhaber ihn erneut hinzu, bleibt er entwertet, der Download-Link antwortet mit 410. Nicht umkehrbar. Ab der Rolle editor. 409, wenn der Pass schon entwertet ist.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"default":"manual","type":"string","minLength":1,"maxLength":80}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["deactivated"]},"deactivatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"voidedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","status","deactivatedAt","voidedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{passId}/erase-personal-data":{"post":{"summary":"Personenbezogene Daten löschen","tags":["passes"],"description":"Entfernt Name, E-Mail, Telefon und verknüpfte Kontaktdaten des Passes (DSGVO Art. 17), auch an den anderen Pässen desselben Kontakts. Der Pass selbst bleibt gültig; das Wallet übernimmt die Änderung beim nächsten Abruf. Ab der Rolle org_admin.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"passId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"customerErased":{"type":"boolean"},"passesScrubbed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ok","customerErased","passesScrubbed"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}":{"patch":{"summary":"Pass kennzeichnen","tags":["passes"],"description":"Setzt die Bezeichnung (`label`, z. B. „Karim iPhone“) und die Markierung als eigenes Gerät (`isInternal`). Andere Felder lehnt die Route mit 422 ab; Attribute und „gültig bis“ ändert `PATCH /v1/passes/{id}/attributes`, den Inhalt `PATCH /v1/passes/{id}/content`. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}]},"isInternal":{"type":"boolean"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"label":{"type":["string","null"]},"isInternal":{"type":"boolean"}},"required":["id","label","isInternal"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Pass lesen","tags":["passes"],"description":"Ein Pass mit Status, Feldern, Code, Gültigkeit, Kontakt, Generationen, Mitteilungen, den letzten 50 Ereignissen und den Nutzungen. Treue-Buchungen im Verlauf (`pass.loyalty_changed`) tragen `loyalty` mit Art der Regel, Änderung, Stand danach und Ziel; `wallets.firstAddedAt` ist das erste Hinzufügen zu einem Wallet (null, solange der Pass nie in einem lag). Jede Rolle im Workspace des Passes; E-Mail und personenbezogene Attribute sind unter org_admin maskiert, Kundensupport sieht sie ungekürzt. `access` nennt, was die Rolle darf: `canEdit` (editor+), `canErase` (org_admin+), `contactVisible`, `canPush` (editor+ und Kundensupport, nur aktive Pässe), `canResend` (editor+ und Kundensupport). API-Token: Scope passes:read, passes:write oder passes:issue.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateName":{"type":["string","null"]},"templateVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"platform":{"type":"string","enum":["apple","google","both"]},"status":{"type":"string","enum":["active","deactivated"]},"isTest":{"type":"boolean"},"label":{"type":["string","null"]},"isInternal":{"type":"boolean"},"isDemo":{"type":"boolean"},"code":{"type":["string","null"]},"codePending":{"type":"boolean"},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"utm":{"type":"object","properties":{"source":{"type":["string","null"]},"medium":{"type":["string","null"]},"campaign":{"type":["string","null"]},"term":{"type":["string","null"]},"content":{"type":["string","null"]}},"required":["source","medium","campaign","term","content"],"additionalProperties":false},"claimLinkId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"deactivatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redemptionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"generation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"previousTemplateId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"expiredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"customerId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"customer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string"}},"required":["id","email"],"additionalProperties":false},{"type":"null"}]},"externalId":{"type":["string","null"]},"invite":{"anyOf":[{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"sentAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"openedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["createdAt","sentAt","openedAt"],"additionalProperties":false},{"type":"null"}]},"templateValidUntil":{"type":["string","null"]},"generations":{"type":"array","items":{"type":"object","properties":{"generation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateName":{"type":["string","null"]},"templateVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"campaignId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"campaignName":{"type":["string","null"]},"appliedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["generation","templateId","templateName","templateVersion","campaignId","campaignName","appliedAt"],"additionalProperties":false}},"messages":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"at":{"type":"string"},"source":{"type":"string"},"google":{"type":"object","properties":{"outcome":{"type":"string","enum":["sent","rejected","failed","capped","stale"]},"at":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["outcome","at"],"additionalProperties":false}},"required":["text","at","source"],"additionalProperties":false}},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"source":{"type":"string"},"loyalty":{"type":"object","properties":{"kind":{"type":"string","enum":["stamps","points"]},"delta":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["kind","delta","balance","goal"],"additionalProperties":false}},"required":["id","type","occurredAt","source"],"additionalProperties":false}},"redemptions":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"last":{"anyOf":[{"type":"object","properties":{"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"kind":{"type":"string","enum":["redemption","checkin","stamp","points"]},"locationName":{"type":["string","null"]}},"required":["at","kind","locationName"],"additionalProperties":false},{"type":"null"}]}},"required":["count","last"],"additionalProperties":false},"wallets":{"type":"object","properties":{"appleDevices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"google":{"type":"boolean"},"firstAddedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"googleMessagesLeft24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["appleDevices","google","firstAddedAt","googleMessagesLeft24h"],"additionalProperties":false},"access":{"type":"object","properties":{"role":{"type":"string","enum":["super_admin","org_owner","org_admin","editor","support","viewer"]},"canEdit":{"type":"boolean"},"canErase":{"type":"boolean"},"contactVisible":{"type":"boolean"},"canPush":{"type":"boolean"},"canResend":{"type":"boolean"}},"required":["role","canEdit","canErase","contactVisible","canPush","canResend"],"additionalProperties":false}},"required":["id","serial","workspaceId","templateId","templateName","templateVersion","platform","status","isTest","label","isInternal","isDemo","code","codePending","attributes","utm","claimLinkId","createdAt","activatedAt","deactivatedAt","voidedAt","redeemedAt","validUntil","redemptionCount","generation","previousTemplateId","expiredAt","customerId","customer","externalId","invite","templateValidUntil","generations","messages","events","redemptions","wallets","access"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/locations":{"post":{"summary":"Standort verknüpfen","tags":["templates"],"description":"Hängt einen Standort des Workspace an die Vorlage. Höchstens 10 je Vorlage (Apple): der elfte ist ein 409 `location_limit` mit `details.max`; ein schon angehängter Standort ist ein 409 `conflict`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"default":"geofence","type":"string","enum":["geofence","beacon"]},"isPrimary":{"default":false,"type":"boolean"}},"required":["locationId"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"attached":{"type":"boolean"},"repushed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["attached","repushed"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Standorte der Vorlage","tags":["templates"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string"},"isPrimary":{"type":"boolean"},"name":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"radiusM":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["locationId","role","isPrimary","name","lat","lon","radiusM"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/locations/{locationId}":{"delete":{"summary":"Standort-Verknüpfung entfernen","tags":["templates"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"locationId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"detached":{"type":"boolean"},"repushed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["detached","repushed"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/public/passes/{serial}/link-customer":{"post":{"summary":"Kontaktdaten mit Einwilligung hinterlegen","tags":["public"],"description":"Name und E-Mail zu einem Pass, autorisiert über den signierten Link aus dem Pass. Einwilligung je Zweck wie auf der Landing-Seite: `consents` (jeder aktive Pflicht-Zweck gegeben, sonst 422 `consent_required`), oder `consent: true` für den Zweck `service`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":240,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"firstName":{"type":"string","minLength":1,"maxLength":80},"lastName":{"type":"string","maxLength":80},"consent":{"type":"boolean"},"consents":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^(service|marketing_email|warranty|brand_share|custom_[a-z0-9_]{1,30})$"},"given":{"type":"boolean"}},"required":["key","given"]}},"locale":{"default":"de","type":"string","enum":["de","en","fr"]}},"required":["email","firstName"]}}}},"parameters":[{"schema":{"type":"string"},"in":"query","name":"t","required":true},{"schema":{"type":"string"},"in":"path","name":"serial","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"customerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["ok","customerId"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{}}}}}}},"/v1/benchmarks/business-case":{"get":{"summary":"Branchen-Benchmarks","tags":["analytics"],"description":"Referenzwerte je Kanal, gegen die der Business Case vergleicht.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/email-settings":{"get":{"summary":"E-Mail-Absender lesen","tags":["orgs"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"senderName":{"type":["string","null"]},"replyTo":{"type":["string","null"]},"smtp":{"anyOf":[{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"user":{"type":"string"},"fromAddress":{"type":"string"},"hasPassword":{"type":"boolean"}},"required":["host","port","user","fromAddress","hasPassword"],"additionalProperties":false},{"type":"null"}]},"verifiedAt":{"type":["string","null"]},"effectiveFrom":{"type":"string"}},"required":["senderName","replyTo","smtp","verifiedAt","effectiveFrom"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"E-Mail-Absender ändern","tags":["orgs"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"senderName":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"replyTo":{"anyOf":[{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"smtp":{"anyOf":[{"type":"object","properties":{"host":{"type":"string","minLength":1,"maxLength":255},"port":{"type":"integer","minimum":1,"maximum":65535},"user":{"type":"string","minLength":1,"maxLength":255},"password":{"type":"string","minLength":1,"maxLength":512},"fromAddress":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["host","port","user","fromAddress"]},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"senderName":{"type":["string","null"]},"replyTo":{"type":["string","null"]},"smtp":{"anyOf":[{"type":"object","properties":{"host":{"type":"string"},"port":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"user":{"type":"string"},"fromAddress":{"type":"string"},"hasPassword":{"type":"boolean"}},"required":["host","port","user","fromAddress","hasPassword"],"additionalProperties":false},{"type":"null"}]},"verifiedAt":{"type":["string","null"]},"effectiveFrom":{"type":"string"}},"required":["senderName","replyTo","smtp","verifiedAt","effectiveFrom"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/orgs/{id}/email-settings/test":{"post":{"summary":"Test-E-Mail senden","tags":["orgs"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sent":{"type":"boolean"},"to":{"type":"string"},"via":{"type":"string","enum":["platform","org-smtp"]},"effectiveFrom":{"type":"string"}},"required":["sent","to","via","effectiveFrom"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/emails/preview":{"post":{"summary":"E-Mail-Vorschau rendern","tags":["emails"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"templateKind":{"type":"string","enum":["announcement","offer","winback","event_reminder"]},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"subject":{"type":"string","maxLength":160},"body":{"type":"string","maxLength":4000},"slots":{"type":"object","properties":{"ctaLabel":{"type":"string","maxLength":60},"ctaUrl":{"type":"string","format":"uri"},"offerValue":{"type":"string","maxLength":40},"imageAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"includeWalletLink":{"default":true,"type":"boolean"},"locale":{"type":"string","maxLength":10}},"required":["templateKind","templateId"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string"},"html":{"type":"string"},"text":{"type":"string"}},"required":["subject","html","text"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/emails/test":{"post":{"summary":"Test-E-Mail senden","tags":["emails"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"templateKind":{"type":"string","enum":["announcement","offer","winback","event_reminder"]},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"subject":{"type":"string","maxLength":160},"body":{"type":"string","maxLength":4000},"slots":{"type":"object","properties":{"ctaLabel":{"type":"string","maxLength":60},"ctaUrl":{"type":"string","format":"uri"},"offerValue":{"type":"string","maxLength":40},"imageAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"includeWalletLink":{"default":true,"type":"boolean"},"locale":{"type":"string","maxLength":10}},"required":["templateKind","templateId"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sent":{"type":"boolean"},"to":{"type":"string"}},"required":["sent","to"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/content":{"patch":{"summary":"Inhalt eines Test-Passes ändern","tags":["passes"],"description":"Überschreibt Feldwerte (`fieldValues`) oder Labels (`fieldLabels`) eines Test- oder Demo-Passes (Merge; `reset: true` setzt auf die Vorlage zurück), optional mit `pushMessage` als Mitteilung. Für Kundenpässe antwortet die Route mit 422: deren Felder ändert `PATCH /v1/passes/{id}/attributes`, alle Pässe einer Vorlage eine Kampagne. Ab der Rolle editor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fieldValues":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":200}},"fieldLabels":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":80}},"pushMessage":{"type":"string","minLength":1,"maxLength":160},"reset":{"default":false,"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"updated":{"type":"boolean","enum":[true]},"enqueued":{"type":"boolean"},"walletDocumentOverride":{"anyOf":[{"type":"object","properties":{"fieldValues":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":200}},"fieldLabels":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":80}},"stripAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"backTexts":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"value":{"type":"string","maxLength":2000}},"required":["label","value"],"additionalProperties":false}},"locations":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"relevantText":{"type":"string","maxLength":120}},"required":["locationId","relevantText"],"additionalProperties":false}}},"additionalProperties":false},{"type":"null"}]}},"required":["updated","enqueued","walletDocumentOverride"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/passes/bulk":{"post":{"summary":"Pässe gebündelt ausstellen (bis 100)","tags":["passes"],"description":"Wie `POST /v1/workspaces/{workspaceId}/passes`, für bis zu 100 Einträge in einem Aufruf. Jeder Eintrag wird für sich ausgestellt: die Antwort nennt je `index` entweder den Pass mit Links oder den Fehler (`code`, `detail`). Ein fehlerhafter Eintrag hält die anderen nicht auf. Synchron; Token-Scope `passes:issue`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attributes":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":500},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"code":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[\\x20-\\x7E\\u00A0-\\u00FF]+$"},"validUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"platform":{"default":"both","type":"string","enum":["apple","google","both"]},"customer":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"firstName":{"type":"string","minLength":1,"maxLength":80},"lastName":{"type":"string","minLength":1,"maxLength":80},"consent":{"type":"boolean","enum":[true]}},"required":["email","consent"],"additionalProperties":false},"utm":{"type":"object","properties":{"source":{"type":"string","maxLength":200},"medium":{"type":"string","maxLength":200},"campaign":{"type":"string","maxLength":200},"term":{"type":"string","maxLength":200},"content":{"type":"string","maxLength":200}},"additionalProperties":false},"isTest":{"type":"boolean"}},"required":["templateId"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ok":{"type":"boolean","enum":[true]},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"code":{"type":"string"},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"apple":{"anyOf":[{"type":"object","properties":{"downloadUrl":{"type":"string","format":"uri"}},"required":["downloadUrl"],"additionalProperties":false},{"type":"null"}]},"google":{"anyOf":[{"type":"object","properties":{"saveUrl":{"type":"string","format":"uri"}},"required":["saveUrl"],"additionalProperties":false},{"type":"null"}]}},"required":["index","ok","passId","serial","code","validUntil","apple","google"],"additionalProperties":false},{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ok":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["code","detail"],"additionalProperties":false}},"required":["index","ok","error"],"additionalProperties":false}]}}},"required":["results"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/attributes":{"patch":{"summary":"Attribute und Gültigkeit eines Passes ändern","tags":["passes"],"description":"Merge: `set` schreibt Felder (null entfernt), `unset` entfernt Felder; Pflichtfelder der Feldliste bleiben gefüllt. `validUntil` setzt das Ablaufdatum dieses Passes (null = Datum der Vorlage); ein Datum in der Zukunft macht einen abgelaufenen Pass wieder gültig. Die Geräte holen den neuen Inhalt; mit `notify: \"push\"` erscheint `message` als Mitteilung. Token-Scope `passes:issue` oder `passes:write`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"set":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":500},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"unset":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"notify":{"default":"silent","type":"string","enum":["silent","push"]},"message":{"type":"string","minLength":1,"maxLength":180}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":500},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"contentUpdatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["passId","attributes","validUntil","contentUpdatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/passes/attributes/bulk":{"post":{"summary":"Attribute vieler Pässe ändern (bis 1.000)","tags":["passes"],"description":"Setzt Attribute für bis zu 1.000 Pässe des Workspace in einem Aufruf, etwa Region, Tarif oder Charge aus dem eigenen System. Je Eintrag `serial` und wie bei `PATCH /v1/passes/{id}/attributes` `set` (null entfernt) und `unset`; Pflichtfelder der Feldliste bleiben gefüllt, Kontaktfelder (`customer…`) gehören nicht in die Attribute. Alles oder nichts: passt ein Eintrag nicht zur Feldliste seiner Vorlage, antwortet die API 422 mit `fields['items.<i>.attributes.<key>']` und ändert keinen Pass. Unbekannte Seriennummern stehen in `notFound` und halten die anderen nicht auf. Geänderte Pässe laden still nach (keine Mitteilung auf dem Sperrbildschirm); `unchanged` zählt Pässe, bei denen sich nichts ändert. Danach lassen sich die Attribute in Zielgruppen filtern (`attributes.<key>`). Header `Idempotency-Key` (24 h) macht Wiederholungen sicher. Token-Scope `passes:write` oder `passes:issue`; im Free-Plan gesperrt.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"serial":{"type":"string","minLength":1,"maxLength":200},"set":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":500},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"unset":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}},"required":["serial"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"updated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unchanged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notFound":{"type":"array","items":{"type":"string"}}},"required":["updated","unchanged","notFound"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/redemption-policy":{"get":{"summary":"Einlöse-Regel einer Vorlage lesen","tags":["templates"],"description":"`mode`: `unlimited` (beliebig oft), `single` (einmal), `limited` (bis `maxCount`-mal), `daily` (`maxCount`-mal je Kalendertag in der Zeitzone des Workspace, leer = einmal). `voidAfterRedeem`: die Nutzung, die die Regel ausschöpft, entwertet den Pass im Wallet. Eine Vorlage ohne gespeicherte Regel ist unbegrenzt (`updatedAt: null`). Jede Rolle im Workspace.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["unlimited","single","limited","daily"]},"maxCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"voidAfterRedeem":{"type":"boolean"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["mode","maxCount","voidAfterRedeem","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"put":{"summary":"Einlöse-Regel einer Vorlage setzen","tags":["templates"],"description":"Gilt sofort für jede folgende Nutzung aus jeder Quelle. `maxCount` ist Pflicht für `limited` (1 bis 10.000), optional für `daily` (1 bis 100, Vorgabe einmal am Tag) und sonst leer. `voidAfterRedeem` nur mit `single` oder `limited`. Nutzungen zählen mit Art `redemption` und `checkin`, nicht `stamp`. Editor-Rolle oder höher; Sitzung oder API-Token.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["unlimited","single","limited","daily"]},"maxCount":{"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}]},"voidAfterRedeem":{"type":"boolean"}},"required":["mode"]},"example":{"mode":"single","voidAfterRedeem":true}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["unlimited","single","limited","daily"]},"maxCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"voidAfterRedeem":{"type":"boolean"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["mode","maxCount","voidAfterRedeem","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/scan/lookup":{"get":{"summary":"Gescannten Wert prüfen","tags":["redemptions"],"description":"`value` ist der Barcode-Inhalt, die Seriennummer oder die Pass-UUID (auch ein Link, der einen davon trägt), aufgelöst nur in diesem Workspace. `status`: `valid`, `already_redeemed`, `limit_reached`, `expired`, `voided` oder `not_found` (mit `reason: \"ambiguous_value\"`, wenn der Code auf mehreren Pässen steht). `actions` sind die Knöpfe des Scanners, die erste ist die Hauptaktion; `enabled: false` trägt `reason`. Stempel und Prämie folgen der Treue-Regel der Vorlage (`GET /v1/templates/{id}/loyalty-rules`), `display.lines` beginnt dann mit dem Stand („7 / 10 Stempel“, „250 Punkte · Gold“). Ein Scanner-Gerät sieht nur seine freigegebenen Aktionen; ein Pass einer Vorlage, die es nicht nutzen darf, oder ohne freigegebene Aktion ist 403 `device_not_allowed`. Schreibt nichts. Browser-Sitzung mit Rolle editor oder höher oder ein gekoppeltes Scanner-Gerät (`Authorization: Bearer dwsd_…`); 300 Aufrufe je Minute und Person oder Gerät. Ist der Scanner für die Organisation nicht eingeschaltet (nur doWallet schaltet ihn ein): 403 `feature_disabled`, für Personen wie für Geräte.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":512},"in":"query","name":"value","required":true},{"schema":{"type":"string","enum":["de","en","fr"]},"in":"query","name":"locale","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["valid","already_redeemed","limit_reached","expired","voided","not_found"]},"reason":{"type":"string","enum":["ambiguous_value"]},"pass":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateName":{"type":"string"},"passType":{"type":"string"},"useCase":{"type":"string"},"isTest":{"type":"boolean"},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","serial","templateId","templateName","passType","useCase","isTest","validUntil","expiredAt","voidedAt","redeemedAt"],"additionalProperties":false},{"type":"null"}]},"display":{"type":"object","properties":{"title":{"type":"string"},"subtitle":{"type":"string"},"lines":{"type":"array","items":{"type":"string"}}},"required":["title","subtitle","lines"],"additionalProperties":false},"policy":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["unlimited","single","limited","daily"]},"maxCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"voidAfterRedeem":{"type":"boolean"}},"required":["mode","maxCount","voidAfterRedeem"],"additionalProperties":false},{"type":"null"}]},"useCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastRedemption":{"anyOf":[{"type":"object","properties":{"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"kind":{"type":"string","enum":["redemption","checkin"]},"locationName":{"type":["string","null"]}},"required":["at","kind","locationName"],"additionalProperties":false},{"type":"null"}]},"actions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]},"label":{"type":"string"},"primary":{"type":"boolean"},"enabled":{"type":"boolean"},"reason":{"type":"string"}},"required":["key","label","primary","enabled"],"additionalProperties":false}},"loyalty":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["stamps","points"]},"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reward":{"type":["string","null"]},"tier":{"type":["string","null"]},"rewardAvailable":{"type":"boolean"},"earnPerEuro":{"type":["number","null"]},"pointsDefault":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","balance","goal","reward","tier","rewardAvailable"],"additionalProperties":false},{"type":"null"}]}},"required":["status","pass","display","policy","useCount","lastRedemption","actions","loyalty"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/scans":{"post":{"summary":"Scan ausführen (Einlösen oder Einlass)","tags":["redemptions"],"description":"`action` `redeem` schreibt eine Einlösung, `checkin` einen Einlass, beide als Nutzung mit Quelle `app` und dem Scanner als `payload.actor` (Person oder Gerät). Die Einlöse-Regel der Vorlage gilt: eine abgelehnte Nutzung antwortet 409 mit `already_redeemed`, `limit_reached`, `pass_expired` oder `pass_voided`, `details.lastRedemption` und der aktuellen Ansicht. Schöpft die Nutzung die Regel aus und ist Entwerten eingestellt, ist der Pass danach im Wallet entwertet. 200 liefert die Ansicht nach der Nutzung, jeder gebuchte Scan schreibt den Audit-Eintrag `pass.scan`. `stamp` bucht +1 Stempel (Nutzung der Art `stamp`), `reward` löst die Prämie ein (−Ziel, Nutzung der Art `redemption` mit `payload.reason: \"reward\"`, gegen die Einlöse-Regel geprüft); beides auch im Free-Plan. Kein Pass zum Wert: 404; Code auf mehreren Pässen: 409 `ambiguous_value`; Aktion nicht angeboten: 422; Stempel oder Prämie ohne Treue-Regel: 422 `loyalty_rule_missing`; Prämie noch nicht erreicht: 409 `reward_not_available`. Ein Scanner-Gerät bucht immer an seinem festen Standort (ein anderer `locationId` ist 403) und nur freigegebene Aktionen und Vorlagen (sonst 403 `device_not_allowed`); Nutzung und Audit tragen dann `payload.actor.kind = \"device\"` und keine Person. Ein widerrufenes Gerät bekommt 401 `device_revoked`. Header `Idempotency-Key` (24 h, je Person oder Gerät) macht Wiederholungen sicher. Browser-Sitzung mit Rolle editor oder höher oder ein gekoppeltes Scanner-Gerät; 300 Aufrufe je Minute und Person oder Gerät. Ist der Scanner für die Organisation nicht eingeschaltet (nur doWallet schaltet ihn ein): 403 `feature_disabled`, für Personen wie für Geräte.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":512},"action":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locale":{"type":"string","enum":["de","en","fr"]},"amountCents":{"type":"integer","minimum":1,"maximum":100000000},"points":{"type":"integer","minimum":1,"maximum":100000}},"required":["value","action"]},"example":{"value":"7F3K2Q9MA1B2","action":"redeem"}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["valid","already_redeemed","limit_reached","expired","voided","not_found"]},"reason":{"type":"string","enum":["ambiguous_value"]},"pass":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateName":{"type":"string"},"passType":{"type":"string"},"useCase":{"type":"string"},"isTest":{"type":"boolean"},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","serial","templateId","templateName","passType","useCase","isTest","validUntil","expiredAt","voidedAt","redeemedAt"],"additionalProperties":false},{"type":"null"}]},"display":{"type":"object","properties":{"title":{"type":"string"},"subtitle":{"type":"string"},"lines":{"type":"array","items":{"type":"string"}}},"required":["title","subtitle","lines"],"additionalProperties":false},"policy":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["unlimited","single","limited","daily"]},"maxCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"voidAfterRedeem":{"type":"boolean"}},"required":["mode","maxCount","voidAfterRedeem"],"additionalProperties":false},{"type":"null"}]},"useCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastRedemption":{"anyOf":[{"type":"object","properties":{"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"kind":{"type":"string","enum":["redemption","checkin"]},"locationName":{"type":["string","null"]}},"required":["at","kind","locationName"],"additionalProperties":false},{"type":"null"}]},"actions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]},"label":{"type":"string"},"primary":{"type":"boolean"},"enabled":{"type":"boolean"},"reason":{"type":"string"}},"required":["key","label","primary","enabled"],"additionalProperties":false}},"loyalty":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["stamps","points"]},"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reward":{"type":["string","null"]},"tier":{"type":["string","null"]},"rewardAvailable":{"type":"boolean"},"earnPerEuro":{"type":["number","null"]},"pointsDefault":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","balance","goal","reward","tier","rewardAvailable"],"additionalProperties":false},{"type":"null"}]},"result":{"type":"string","enum":["ok"]},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["status","pass","display","policy","useCount","lastRedemption","actions","loyalty","result","eventId"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/inbound-endpoints":{"get":{"summary":"Empfangs-URLs auflisten","tags":["webhooks"],"description":"Empfangs-URLs des Workspace (ohne widerrufene), neueste zuerst, mit dem Zeitpunkt der letzten gültig signierten Meldung. Das Secret steht nie in dieser Liste. Org-Admin.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"kind":{"type":"string","enum":["pos","clearing","ticketing","shop","other"]},"url":{"type":"string"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","kind","url","lastUsedAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Empfangs-URL anlegen","tags":["webhooks"],"description":"Legt eine Empfangs-URL für eine Kasse, ein Clearing-, Ticketing- oder Shop-System an (`kind`: pos, clearing, ticketing, shop, other). Die Antwort enthält das Signatur-Secret genau einmal. Höchstens 20 je Workspace. Org-Admin; nicht im Free-Plan.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"kind":{"default":"pos","type":"string","enum":["pos","clearing","ticketing","shop","other"]}},"required":["name"]},"example":{"name":"EDEKA-Kasse","kind":"pos"}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"kind":{"type":"string","enum":["pos","clearing","ticketing","shop","other"]},"url":{"type":"string"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"secret":{"type":"string"}},"required":["id","name","kind","url","lastUsedAt","createdAt","secret"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/inbound-endpoints/{id}/rotate":{"post":{"summary":"Secret einer Empfangs-URL erneuern","tags":["webhooks"],"description":"Erzeugt ein neues Signatur-Secret und gibt es genau einmal zurück. Das alte Secret gilt ab sofort nicht mehr: Meldungen damit bekommen 401, bis das sendende System das neue Secret nutzt. Die URL bleibt gleich. Org-Admin.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"kind":{"type":"string","enum":["pos","clearing","ticketing","shop","other"]},"url":{"type":"string"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"secret":{"type":"string"}},"required":["id","name","kind","url","lastUsedAt","createdAt","secret"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/inbound-endpoints/{id}":{"delete":{"summary":"Empfangs-URL widerrufen","tags":["webhooks"],"description":"Sofort wirksam: Meldungen an diese URL bekommen ab jetzt 404. Bereits gemeldete Nutzungen bleiben erhalten. Org-Admin.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/incoming/{webhookId}":{"post":{"summary":"Nutzung von Kasse, Clearing, Ticketing oder Shop melden","tags":["webhooks"],"description":"Ohne Token, signiert: `X-DoWallet-Signature: t=<unix>,v1=<hex(hmac_sha256(secret, t + \".\" + body))>` über den Body genau so, wie er gesendet wird (formatiertes JSON ist erlaubt); `t` höchstens 5 Minuten alt. `:webhookId` ist die ID einer Empfangs-URL (`POST /v1/workspaces/{workspaceId}/inbound-endpoints`) oder übergangsweise eines ausgehenden Webhooks; ein nach Zustellfehlern abgeschalteter Webhook nimmt weiter an. Body `{ \"type\": \"redemption\", \"passId\"?, \"payload\": { \"serial\"? | \"code\"?, \"redeemedAt\"?, \"amountCents\"?, \"locationName\"?, \"locationRef\"?, \"kind\"?, \"externalId\"? } }`. Typen `redemption`, `redemptionLogged`, `conversion`, `purchase` und `pos.checkin` (Einlass) werden eine Nutzung; weitere `pos.*` werden als Ereignis gespeichert. Antworten: 200 `{ accepted: true }`, auch für eine schon gemeldete `externalId` (`duplicate: true`); 409 `already_redeemed`, `limit_reached`, `pass_voided` oder `pass_expired` mit `details.lastRedemptionAt`, wenn die Einlöse-Regel der Vorlage die Nutzung ablehnt; 422 ohne passenden Pass; 401 bei falscher Signatur; 404 für eine unbekannte oder widerrufene URL. Ratenklasse: 1.200 Aufrufe je Minute und URL, höchstens 3.000 je Minute und IP über alle URLs.","parameters":[{"schema":{"type":"string"},"in":"path","name":"webhookId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"boolean","enum":[true]},"duplicate":{"type":"boolean"}},"required":["accepted"],"additionalProperties":false},"example":{"accepted":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/analytics/funnel":{"get":{"summary":"Trichter je Quelle, Kanal oder Kampagne","tags":["analytics"],"description":"Seitenaufrufe, ausgestellte Pässe, geöffnet (Apple-Download, Google-Speichern-Klick), im Wallet (Apple, Google), Push zugestellt und bestätigt, genutzt und wiederholt genutzt, dazu Budget und Kosten je Wallet-Pass und je Nutzung. Kohorte: die Pässe des Zeitraums mit allen späteren Schritten; `dimension` = source, channel oder campaign.","parameters":[{"schema":{"default":"source","type":"string","enum":["source","channel","campaign"]},"in":"query","name":"dimension","required":false,"description":"source = UTM-Quelle der Pässe, channel = Kanal der Landing-Seite (Quelle und Seite), campaign = Kampagne (ihre adressierten Pässe)."},{"schema":{"type":"string"},"in":"query","name":"from","required":false,"description":"Tag (YYYY-MM-DD, Zeitzone des Workspace) oder Zeitpunkt; Standard: die letzten 30 Tage."},{"schema":{"type":"string"},"in":"query","name":"to","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"claimLinkId","required":false,"description":"Nur diese Landing-Seite (source, channel)."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"campaignId","required":false,"description":"Nur diese Kampagne (campaign)."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"dimension":{"type":"string","enum":["source","channel","campaign"]},"range":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"to":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","to"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Quelle, Kanal-ID oder Kampagnen-ID; (direct) ohne Quelle, (none) ohne Kanal."},"label":{"type":"string"},"views":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Seitenaufrufe im Zeitraum (landing.viewed, je Adresse und Seite alle zehn Minuten); null bei Kampagnen."},"claims":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Ausgestellte Pässe des Zeitraums (bei Kampagnen: adressierte Pässe)."},"downloadsApple":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Pässe, deren .pkpass geladen wurde."},"savesGoogle":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Pässe, deren Google-Speichern-Link geklickt wurde."},"addedApple":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pässe mit Apple-Registrierung (je einmal, auch wenn später entfernt)."},"addedGoogle":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pässe mit Google-Speichern."},"pushDelivered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pässe, die mindestens ein Push erreichte (APNs angenommen oder Google-Mitteilung gesendet)."},"pushConfirmed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pässe, deren Gerät die Aktualisierung geholt hat (Apple)."},"redeemedPasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pässe mit mindestens einer Nutzung."},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Nutzungen gesamt."},"repeatPasses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pässe mit zwei oder mehr Nutzungen."},"costCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget des Kanals oder der Kampagne in Cent, null ohne Angabe."},"costPerAddedCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget je Pass im Wallet (Apple + Google), gerundet; null ohne Budget oder ohne Pässe."},"costPerRedemptionCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Budget je Nutzung, gerundet."}},"required":["key","label","views","claims","downloadsApple","savesGoogle","addedApple","addedGoogle","pushDelivered","pushConfirmed","redeemedPasses","redemptions","repeatPasses","costCents","costPerAddedCents","costPerRedemptionCents"],"additionalProperties":false}}},"required":["dimension","range","data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/analytics/funnel.csv":{"get":{"summary":"Trichter als CSV","tags":["analytics"],"description":"Dieselben Zeilen wie `GET …/analytics/funnel` als CSV für Excel (Semikolon, UTF-8 mit BOM).","parameters":[{"schema":{"default":"source","type":"string","enum":["source","channel","campaign"]},"in":"query","name":"dimension","required":false,"description":"source = UTM-Quelle der Pässe, channel = Kanal der Landing-Seite (Quelle und Seite), campaign = Kampagne (ihre adressierten Pässe)."},{"schema":{"type":"string"},"in":"query","name":"from","required":false,"description":"Tag (YYYY-MM-DD, Zeitzone des Workspace) oder Zeitpunkt; Standard: die letzten 30 Tage."},{"schema":{"type":"string"},"in":"query","name":"to","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"claimLinkId","required":false,"description":"Nur diese Landing-Seite (source, channel)."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"campaignId","required":false,"description":"Nur diese Kampagne (campaign)."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"CSV-Datei (text/csv)","content":{"application/json":{"schema":{"type":"string","description":"CSV-Datei (text/csv)"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/analytics/breakdown":{"get":{"summary":"Nutzungen und Pässe je Vorlage, Kampagne, Standort oder Quelle","tags":["analytics"],"description":"`by`: `template` (Vorlage), `campaign` (Kampagne), `location` (Filiale wie im Protokoll, ohne Groß-/Kleinschreibung) oder `source` (Kanal des Passes, utm_source). `from`/`to`: Zeitstempel oder Kalendertag in der Zeitzone des Workspace; Vorgabe die letzten 30 Kalendertage, höchstens 366 Tage. `campaignId` und `templateId` grenzen ein wie im Protokoll. `promotionId` grenzt auf eine Aktion ein: bei `campaign` auf ihre Kampagnen, sonst auf Pässe und Nutzungen ihrer Vorlagen; eine Aktion eines anderen Workspace ist 404 `promotion_not_found`. Je Zeile: `redemptions` = Nutzungen im Zeitraum jeder Art (die Zahl des Protokolls mit demselben Filter), davon `checkins` (Einlass) und `stamps` (Stempel), `amountCents` = gemeldete Beträge. `passesIssued` = neue Pässe im Zeitraum (Vorlage, Quelle) bzw. erreichte Pässe über die ganze Laufzeit (Kampagne, gesendete Empfänger); `activePasses` = jetzt aktive Pässe (nicht deaktiviert, nicht abgelaufen, nicht entwertet); beide null, wo sie nicht gelten (Standort, Zeile ohne Vorlage oder Kampagne). `key` null = ohne Vorlage, Kampagne, Filiale bzw. Quelle (direkt); `label` ist dann leer. Kampagnen erscheinen mit Nutzungen im Zeitraum oder mit Start im Zeitraum. Meiste Nutzungen zuerst, die Zeile ohne `key` zuletzt, höchstens 500 Zeilen. Jede Rolle im Workspace, auch im Free-Plan.","parameters":[{"schema":{"type":"string","enum":["template","campaign","location","source"]},"in":"query","name":"by","required":true},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"from","required":false},{"schema":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}]},"in":"query","name":"to","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"campaignId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"promotionId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"by":{"type":"string","enum":["template","campaign","location","source"]},"range":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"to":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","to"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"key":{"type":["string","null"]},"label":{"type":"string"},"passesIssued":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"activePasses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"redemptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checkins":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stamps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["key","label","passesIssued","activePasses","redemptions","checkins","stamps","amountCents"],"additionalProperties":false}}},"required":["by","range","data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/scanner-devices":{"get":{"summary":"Scanner-Geräte auflisten","tags":["redemptions"],"description":"Alle Scanner-Geräte des Arbeitsbereichs, neueste zuerst, auch widerrufene (`state: \"revoked\"`). `state`: `waiting` (Kopplungscode offen), `code_expired` (Code abgelaufen, nie gekoppelt), `paired`, `expired` (Freigabe abgelaufen), `revoked`. Nur Browser-Sitzung mit Admin-Rechten im Arbeitsbereich. Ist der Scanner für die Organisation nicht eingeschaltet (nur doWallet schaltet ihn ein), antwortet die Route 403 `feature_disabled`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"locationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"locationName":{"type":["string","null"]},"allowedActions":{"type":"array","items":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]}},"templateIds":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"type":"null"}]},"pointsDefault":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"state":{"type":"string","enum":["waiting","code_expired","paired","expired","revoked"]},"paired":{"type":"boolean"},"pairExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","name","locationId","locationName","allowedActions","templateIds","pointsDefault","state","paired","pairExpiresAt","expiresAt","revokedAt","lastSeenAt","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Scanner-Gerät anlegen","tags":["redemptions"],"description":"Legt ein Handy ohne Konto an, das nur scannt: `name` (1 bis 60 Zeichen), fester Standort `locationId` (optional), `allowedActions` (mindestens eine aus `redeem`, `checkin`, `stamp`, `reward`, `points`), optional `templateIds` (nur Pässe dieser Vorlagen; fehlt = alle) und `expiresAt` (Ende der Freigabe). Mit `points` bucht das Gerät auf einer Punktekarte „Punkte buchen“; `pointsDefault` (1 bis 100.000) sind dann feste Punkte je Scan, ohne Angabe fragt das Gerät nach Betrag oder Punkten. Antwort 201 mit dem Kopplungscode `pairCode` (8 Zeichen, einmalig, 15 Minuten gültig) und `pairUrl` für den QR: das zweite Handy öffnet ihn und scannt danach ohne Anmeldung. Nur Browser-Sitzung mit Admin-Rechten im Arbeitsbereich. Audit `scanner_device.create` (ohne Code). Ist der Scanner für die Organisation nicht eingeschaltet (nur doWallet schaltet ihn ein), antwortet die Route 403 `feature_disabled`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"locationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"allowedActions":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]}},"templateIds":{"anyOf":[{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"pointsDefault":{"anyOf":[{"type":"integer","minimum":1,"maximum":100000},{"type":"null"}]}},"required":["name","allowedActions"]},"example":{"name":"Theke","allowedActions":["redeem"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"device":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"locationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"locationName":{"type":["string","null"]},"allowedActions":{"type":"array","items":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]}},"templateIds":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"type":"null"}]},"pointsDefault":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"state":{"type":"string","enum":["waiting","code_expired","paired","expired","revoked"]},"paired":{"type":"boolean"},"pairExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","name","locationId","locationName","allowedActions","templateIds","pointsDefault","state","paired","pairExpiresAt","expiresAt","revokedAt","lastSeenAt","createdAt"],"additionalProperties":false},"pairCode":{"type":"string"},"pairUrl":{"type":"string","format":"uri"},"pairExpiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["device","pairCode","pairUrl","pairExpiresAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/scanner-devices/{id}":{"patch":{"summary":"Scanner-Gerät ändern","tags":["redemptions"],"description":"Ändert `name`, `locationId` (null = ohne Standort), `allowedActions`, `templateIds` (null = alle Vorlagen), `expiresAt` (null = unbegrenzt) oder `pointsDefault` (feste Punkte je Scan mit der Aktion `points`, null = fragen). Gilt ab dem nächsten Scan des Geräts, ohne neue Kopplung. Ein widerrufenes Gerät lässt sich nicht mehr ändern (409). Nur Browser-Sitzung mit Admin-Rechten im Arbeitsbereich. Audit `scanner_device.update`. Ist der Scanner für die Organisation nicht eingeschaltet (nur doWallet schaltet ihn ein), antwortet die Route 403 `feature_disabled`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"locationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"allowedActions":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]}},"templateIds":{"anyOf":[{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"pointsDefault":{"anyOf":[{"type":"integer","minimum":1,"maximum":100000},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"locationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"locationName":{"type":["string","null"]},"allowedActions":{"type":"array","items":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]}},"templateIds":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"type":"null"}]},"pointsDefault":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"state":{"type":"string","enum":["waiting","code_expired","paired","expired","revoked"]},"paired":{"type":"boolean"},"pairExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","name","locationId","locationName","allowedActions","templateIds","pointsDefault","state","paired","pairExpiresAt","expiresAt","revokedAt","lastSeenAt","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Scanner-Gerät widerrufen","tags":["redemptions"],"description":"Setzt `revokedAt` und verwirft einen offenen Kopplungscode. Der nächste Scan des Handys antwortet 401 `device_revoked`. Endgültig: ein widerrufenes Gerät lässt sich nicht wieder freigeben, dafür ein neues anlegen. Ein zweites DELETE antwortet ebenfalls 204. Nur Browser-Sitzung mit Admin-Rechten im Arbeitsbereich. Audit `scanner_device.revoke`. Ist der Scanner für die Organisation nicht eingeschaltet (nur doWallet schaltet ihn ein), antwortet die Route 403 `feature_disabled`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/scanner-devices/{id}/pair-code":{"post":{"summary":"Neuen Kopplungscode ausgeben","tags":["redemptions"],"description":"Neuer Code (8 Zeichen, einmalig, 15 Minuten gültig) für dasselbe Gerät, etwa für ein neues Handy oder nach einem abgelaufenen Code; ein offener älterer Code verfällt. Ist das Gerät schon gekoppelt, scannt das bisherige Handy weiter, bis der neue Code eingelöst ist; danach antwortet es 401 `device_revoked`. Ein widerrufenes Gerät bekommt keinen Code (409). Nur Browser-Sitzung mit Admin-Rechten im Arbeitsbereich. Audit `scanner_device.pair_code` (ohne Code). Ist der Scanner für die Organisation nicht eingeschaltet (nur doWallet schaltet ihn ein), antwortet die Route 403 `feature_disabled`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"device":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"locationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"locationName":{"type":["string","null"]},"allowedActions":{"type":"array","items":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]}},"templateIds":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"type":"null"}]},"pointsDefault":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"state":{"type":"string","enum":["waiting","code_expired","paired","expired","revoked"]},"paired":{"type":"boolean"},"pairExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastSeenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workspaceId","name","locationId","locationName","allowedActions","templateIds","pointsDefault","state","paired","pairExpiresAt","expiresAt","revokedAt","lastSeenAt","createdAt"],"additionalProperties":false},"pairCode":{"type":"string"},"pairUrl":{"type":"string","format":"uri"},"pairExpiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["device","pairCode","pairUrl","pairExpiresAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/public/scanner/pair":{"post":{"summary":"Handy als Scanner-Gerät koppeln","tags":["public"],"description":"Löst einen Kopplungscode ein (aus „Scanner-Gerät anlegen“ oder „Neuen Kopplungscode ausgeben“) und liefert einmalig den Geräte-Token `dwsd_…` samt Name, Arbeitsbereich, Standort und erlaubten Aktionen. Der Token erreicht nur den Scanner (`GET …/scan/lookup`, `POST …/scans`), jede andere Route antwortet 403 `device_not_allowed`. Falscher, abgelaufener oder schon benutzter Code: 404 `pair_code_invalid`. Ohne Anmeldung; höchstens 30 Versuche je 5 Minuten und IP. Ist der Scanner für die Organisation nicht eingeschaltet (nur doWallet schaltet ihn ein): 403 `feature_disabled`, der Code bleibt gültig.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":32}},"required":["code"]},"example":{"code":"K7QM-3XPD"}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"device":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceName":{"type":"string"},"locationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"locationName":{"type":["string","null"]},"allowedActions":{"type":"array","items":{"type":"string","enum":["redeem","checkin","stamp","reward","points"]}},"orgSlug":{"type":"string"}},"required":["id","name","workspaceId","workspaceName","locationId","locationName","allowedActions","orgSlug"],"additionalProperties":false}},"required":["token","device"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/audiences/attribute-keys":{"get":{"summary":"Attribut-Schlüssel für Zielgruppen","tags":["audiences"],"description":"Die Schlüssel, nach denen eine Zielgruppe mit `attributes.<key>` filtern kann: aus den Feldlisten der Vorlagen (`declared`) und aus einer Stichprobe der neuesten 5.000 Pässe des Workspace. `count` = Pässe der Stichprobe mit einem Wert, `sample` = bis zu 5 häufige Werte (leer bei personenbezogenen Schlüsseln wie E-Mail, Name oder Telefon), `label` und `type` aus der Feldliste, `valueType` (string, number, date, boolean) aus der Feldliste oder der Stichprobe: danach vergleicht ein Filter mit `type` typgerecht. Kontaktfelder (`customerEmail`, `customerName` …) erscheinen nicht. Jede Rolle im Workspace; Token-Scope `audiences:read`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sample":{"type":"array","items":{"type":"string"}},"declared":{"type":"boolean"},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"valueType":{"type":"string","enum":["string","number","date","boolean"]}},"required":["key","count","sample","declared","label","type","valueType"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/consent-purposes":{"get":{"summary":"Zwecke der Einwilligung auflisten","tags":["customers"],"description":"Alle Zwecke des Arbeitsbereichs, auch inaktive: service (immer aktiv und Pflicht), marketing_email, warranty, brand_share und eigene (custom_<slug>). Jede Rolle im Arbeitsbereich.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"text":{"type":"string"},"required":{"type":"boolean"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"boolean"},"textDraft":{"type":"boolean"},"createdAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["key","label","text","required","version","active","textDraft","createdAt","updatedAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Zweck der Einwilligung anlegen","tags":["customers"],"description":"Legt warranty, brand_share oder einen eigenen Zweck (custom_<slug>) an. service und marketing_email gibt es in jedem Arbeitsbereich schon, sie ändert PATCH. Höchstens 20 Zwecke. Admin des Arbeitsbereichs, nur mit Browser-Sitzung.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","pattern":"^(service|marketing_email|warranty|brand_share|custom_[a-z0-9_]{1,30})$"},"label":{"type":"string","minLength":1,"maxLength":80},"text":{"type":"string","minLength":1,"maxLength":1000},"required":{"default":false,"type":"boolean"},"active":{"default":true,"type":"boolean"}},"required":["key","label","text"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"text":{"type":"string"},"required":{"type":"boolean"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"boolean"},"textDraft":{"type":"boolean"},"createdAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["key","label","text","required","version","active","textDraft","createdAt","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/consent-purposes/{key}":{"patch":{"summary":"Zweck der Einwilligung ändern","tags":["customers"],"description":"Bezeichnung, Text, Pflicht und aktiv. Eine Textänderung zählt die Version hoch, neue Einwilligungen halten die neue Version fest. service bleibt aktiv und Pflicht (422). Admin des Arbeitsbereichs, nur mit Browser-Sitzung.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80},"text":{"type":"string","minLength":1,"maxLength":1000},"required":{"type":"boolean"},"active":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true},{"schema":{"type":"string","pattern":"^(service|marketing_email|warranty|brand_share|custom_[a-z0-9_]{1,30})$"},"in":"path","name":"key","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"text":{"type":"string"},"required":{"type":"boolean"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"boolean"},"textDraft":{"type":"boolean"},"createdAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["key","label","text","required","version","active","textDraft","createdAt","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/locations/import":{"post":{"summary":"Standorte importieren","tags":["locations"],"description":"Legt bis zu 2.000 Standorte je Aufruf an oder gleicht sie ab. Jede Zeile braucht `name`, `lat` und `lon` (kein Geocoding); der Radius liegt zwischen 10 und 5.000 m (ohne Angabe 150). `mode: \"upsert\"` ändert den Standort mit derselben Filialnummer (`externalRef`) statt einen zweiten anzulegen, `mode: \"create\"` meldet eine vergebene Nummer als Fehler der Zeile. `dryRun: true` prüft nur und schreibt nichts. Die Antwort nennt je Zeile (`results[].index` = Position in `rows`) `ok`, `action` (created | updated) und bei Fehlern `error.code` und einen deutschen Satz; eine falsche Zeile hält die anderen nicht auf. Ändert ein Abgleich Koordinaten, Radius oder Beacon eines Standorts an einer Vorlage, laden deren aktive Pässe neu (`repushed`). Ab der Rolle Bearbeiter, Sitzung oder API-Token (Scope `locations:write`). Im kostenlosen Paket nicht enthalten (402).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"minItems":1,"maxItems":2000,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name der Filiale, 1 bis 120 Zeichen."},"address":{"description":"Straße und Hausnummer, höchstens 240 Zeichen.","type":["string","null"]},"zip":{"description":"PLZ, höchstens 16 Zeichen.","type":["string","null"]},"city":{"description":"Stadt, höchstens 120 Zeichen.","type":["string","null"]},"lat":{"type":"number","description":"Breitengrad, -90 bis 90. Pflicht, es gibt kein Geocoding."},"lon":{"type":"number","description":"Längengrad, -180 bis 180. Pflicht."},"radiusM":{"description":"Radius in Metern, ganze Zahl von 10 bis 5.000. Ohne Angabe 150 (neu) bzw. unverändert (Abgleich).","type":["number","null"]},"externalRef":{"description":"Filialnummer, höchstens 80 Zeichen, je Workspace eindeutig. Schlüssel für mode upsert.","type":["string","null"]},"beaconUuid":{"description":"iBeacon-UUID.","type":["string","null"]},"beaconMajor":{"description":"iBeacon-Major, 0 bis 65535; nur mit beaconUuid.","type":["number","null"]},"beaconMinor":{"description":"iBeacon-Minor, 0 bis 65535; nur mit beaconUuid.","type":["number","null"]}},"required":["name","lat","lon"]}},"mode":{"default":"create","description":"create = jede Zeile neu; upsert = Zeilen mit vorhandener Filialnummer ändern diesen Standort.","type":"string","enum":["create","upsert"]},"dryRun":{"default":false,"description":"true = nur prüfen, nichts schreiben (Probelauf).","type":"boolean"}},"required":["rows"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Position der Zeile in `rows`, ab 0."},"ok":{"type":"boolean"},"action":{"description":"Was mit der Zeile geschieht (im Probelauf: geschähe).","type":"string","enum":["created","updated"]},"locationId":{"description":"Der angelegte oder geänderte Standort; im Probelauf nur bei updated.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"error":{"type":"object","properties":{"code":{"type":"string","enum":["name_required","too_long","coordinates_invalid","radius_invalid","beacon_invalid","external_ref_duplicate","external_ref_taken","location_gone","write_failed"]},"field":{"description":"Feld der Zeile, das den Fehler auslöst, sonst null.","type":["string","null"]},"message":{"type":"string","description":"Deutscher Satz für die Oberfläche."},"locationId":{"description":"external_ref_taken: der Standort, der die Nummer trägt.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"duplicateOf":{"description":"external_ref_duplicate: Index der ersten Zeile mit dieser Nummer.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code","field","message"],"additionalProperties":false}},"required":["index","ok"],"additionalProperties":false}},"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"updated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dryRun":{"type":"boolean"},"repushed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Aktive Pässe, die neu laden, weil ein Abgleich Koordinaten, Radius oder Beacon eines Standorts an ihrer Vorlage geändert hat."}},"required":["results","created","updated","failed","dryRun","repushed"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/loyalty-rules":{"get":{"summary":"Treue-Regel einer Vorlage lesen","tags":["templates"],"description":"`kind` `stamps`: `goal` Stempel ergeben die Prämie `reward`; `afterReward` sagt, was beim Einlösen passiert (`carry`: minus das Ziel, der Überhang bleibt; `reset`: die Karte startet bei 0), `rewardType` und `rewardValue` die Art und den Wert der Prämie, `startStamps` die Startstempel beim Ausstellen, `dailyCap` die Stempel je Karte und Tag, `paused` ob das Programm pausiert ist. `kind` `points`: `earnPerEuro` Punkte je Euro einer Nutzung mit Betrag (abgerundet), `tiers` die Stufen aufsteigend nach `minPoints`. `kindLocked`: die Art ist fest, weil es echte Buchungen gibt. Eine Vorlage ohne Regel antwortet 404 `loyalty_rule_missing`. Jede Rolle im Workspace; Token-Scope `templates:read`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["stamps","points"]},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reward":{"type":["string","null"]},"earnPerEuro":{"type":["number","null"]},"tiers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":30},"minPoints":{"type":"integer","minimum":0,"maximum":100000000}},"required":["name","minPoints"],"additionalProperties":false}},"afterReward":{"type":"string","enum":["carry","reset"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"startStamps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dailyCap":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"paused":{"type":"boolean"},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"kindLocked":{"type":"boolean"}},"required":["templateId","kind","goal","reward","earnPerEuro","tiers","afterReward","rewardType","rewardValue","startStamps","dailyCap","paused","pausedAt","updatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"put":{"summary":"Treue-Regel einer Vorlage speichern","tags":["templates"],"description":"Speichert das Programm einer Treuekarte (Zweck `loyalty`, sonst 422) ausdrücklich, ohne Autosave: gilt sofort für jede folgende Buchung aus jeder Quelle; die Vorlage muss nicht neu veröffentlicht werden. `stamps`: `goal` Pflicht (1 bis 100), `reward` optional (höchstens 60 Zeichen), `afterReward` `carry` | `reset`, `rewardType` `item` | `percent` (`rewardValue` 1 bis 100) | `amount` (`rewardValue` in Cent), `startStamps` 0 bis Ziel − 1, `dailyCap` 1 bis 100 oder null, `paused` true | false. Felder, die fehlen, behalten den gespeicherten Wert. `points`: `goal`, `reward` und die Programm-Einstellungen leer, `earnPerEuro` optional (bis 1.000, zwei Nachkommastellen), `tiers` optional (bis 10, aufsteigend nach `minPoints`, Namen bis 30 Zeichen). Sonst 422 mit `fields`. `baseUpdatedAt`: das `updatedAt`, das der Editor geladen hat; wurde die Regel inzwischen geändert, 409 `conflict` mit `details.currentUpdatedAt`. Die Art ändert sich nicht mehr, sobald es echte Buchungen gibt (409 `loyalty_kind_locked`). Ein niedrigeres Ziel legt für jeden Pass, der es jetzt erreicht, eine offene Prämie an (`createdRewards`); erreichte Prämien behalten ihre Bedingungen. „Prämie bereit“ dazu geht nicht sofort aus der Anfrage, sondern als Hintergrundjob ab `rewardMessagesAt` (sofort, zwischen 20 und 9 Uhr Europe/Berlin ab 9 Uhr, große Programme in Abschnitten). Ändern Ziel, Prämie, Stufen oder Art die Anzeige, laden die Pässe neu (still). Editor-Rolle oder höher; Sitzung oder Token mit `templates:write`. Audit `template.loyalty_rules.update`. Ohne das Modul Treue der Organisation 403 `module_disabled`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["stamps","points"]},"goal":{"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"reward":{"anyOf":[{"type":"string","minLength":1,"maxLength":60},{"type":"null"}]},"earnPerEuro":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000},{"type":"null"}]},"tiers":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":30},"minPoints":{"type":"integer","minimum":0,"maximum":100000000}},"required":["name","minPoints"]}},"afterReward":{"type":"string","enum":["carry","reset"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000000},{"type":"null"}]},"startStamps":{"type":"integer","minimum":0,"maximum":99},"dailyCap":{"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"paused":{"type":"boolean"},"baseUpdatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["kind"]},"examples":{"example1":{"value":{"kind":"stamps","goal":10,"reward":"1 Kaffee","afterReward":"carry","rewardType":"item","rewardValue":320,"startStamps":1,"dailyCap":1}},"example2":{"value":{"kind":"points","earnPerEuro":1,"tiers":[{"name":"Silber","minPoints":0},{"name":"Gold","minPoints":100}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["stamps","points"]},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reward":{"type":["string","null"]},"earnPerEuro":{"type":["number","null"]},"tiers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":30},"minPoints":{"type":"integer","minimum":0,"maximum":100000000}},"required":["name","minPoints"],"additionalProperties":false}},"afterReward":{"type":"string","enum":["carry","reset"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"startStamps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dailyCap":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"paused":{"type":"boolean"},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"kindLocked":{"type":"boolean"},"createdRewards":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rewardMessagesAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["templateId","kind","goal","reward","earnPerEuro","tiers","afterReward","rewardType","rewardValue","startStamps","dailyCap","paused","pausedAt","updatedAt","createdRewards","rewardMessagesAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Treue-Programm entfernen","tags":["templates"],"description":"Entfernt das Programm einer Vorlage, solange es keine echten Daten hat: Buchungen, Mitglieder mit Stand und Prämien zählen nur auf echten Pässen (nicht Test, nicht intern) und ohne Demo-Stempel. Sonst 409 `loyalty_rule_in_use` mit `details.bookings`, `details.members`, `details.rewards`; das Programm lässt sich dann pausieren. Danach steht jeder Pass der Vorlage auf Stand 0 ohne Stufe, Verlauf und Prämien des Programms sind gelöscht, die Pässe laden neu. Antwort 204. Editor-Rolle oder höher; Token-Scope `templates:write`. Audit `template.loyalty_rule_delete`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Entfernt"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/loyalty-rules/preview":{"post":{"summary":"Änderung der Treue-Regel vorab prüfen","tags":["templates"],"description":"Derselbe Body wie `PUT …/loyalty-rules`, gespeichert wird nichts. Antwort: `members` (echte, aktive Mitglieder), `rewardReadyNow` und `rewardReadyAfter` (Mitglieder mit offener Prämie jetzt und nach der Änderung), `newRewards` und `newRewardsMembers` (Pässe, die sofort eine Prämie bekämen, alle und nur Mitglieder), `passesRepushed` (Pässe, die neu laden), `kindLocked`. Für den Hinweis im Editor: „Mit 8 statt 10 Stempeln hätten 70 Mitglieder sofort eine Prämie.“ Ungültige Werte 422 wie beim Speichern. Editor-Rolle oder höher; Token-Scope `templates:write`. Ohne das Modul Treue 403 `module_disabled`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["stamps","points"]},"goal":{"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"reward":{"anyOf":[{"type":"string","minLength":1,"maxLength":60},{"type":"null"}]},"earnPerEuro":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000},{"type":"null"}]},"tiers":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":30},"minPoints":{"type":"integer","minimum":0,"maximum":100000000}},"required":["name","minPoints"]}},"afterReward":{"type":"string","enum":["carry","reset"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000000},{"type":"null"}]},"startStamps":{"type":"integer","minimum":0,"maximum":99},"dailyCap":{"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"paused":{"type":"boolean"},"baseUpdatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["kind"]},"example":{"kind":"stamps","goal":8,"reward":"1 Kaffee"}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rewardReadyNow":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rewardReadyAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newRewards":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newRewardsMembers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passesRepushed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kindLocked":{"type":"boolean"}},"required":["members","rewardReadyNow","rewardReadyAfter","newRewards","newRewardsMembers","passesRepushed","kindLocked"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/loyalty":{"post":{"summary":"Stempel oder Punkte korrigieren","tags":["passes"],"description":"`delta` (ganze Zahl, ±100.000, nicht 0) bucht auf den Stand des Passes nach der Treue-Regel seiner Vorlage; `reason` (höchstens 80 Zeichen) steht im Verlauf und ist bei einem Minus Pflicht (422). `reward`, `welcome` und `demo` sind reserviert. Aus der App ist das eine Korrektur: keine Nutzung, zählt nicht für das Tageslimit und nicht als vergebener Stempel. Für einen Stempel als Nutzung gibt es `POST /v1/passes/{id}/loyalty/stamp`, zum Einlösen `POST /v1/passes/{id}/loyalty/redeem`. Antwort: Stand danach `balance`, Stufe `tier` und `rewardAvailable` (eine offene Prämie). Erreicht der Stand das Ziel, entsteht eine offene Prämie („Prämie bereit“); fällt er unter das Ziel einer offenen Prämie, verfällt sie. Webhook `pass.loyalty_changed`. Ohne Treue-Regel 422 `loyalty_rule_missing`; ein Stand unter 0 409 `insufficient_points`; ein entwerteter oder abgelaufener Pass 409 `pass_voided` bzw. `pass_expired`. Ohne das Modul Treue 403 `module_disabled`. Editor-Rolle oder höher. Aus einer Browser-Sitzung auch im Free-Plan (Quelle `manual`; der Test-Stempel aus /demo mit `demo: true`, nur ein Plus, Quelle `demo`, zählt nie als echte Buchung); mit API-Token (Scope `passes:write`) nur im bezahlten Plan, sonst 402 (Quelle `api`; ein Plus zählt dort als vergebener Stempel, mit Pause und Tageslimit 409 `loyalty_paused` bzw. `loyalty_daily_cap`). Header `Idempotency-Key` (24 h) macht Wiederholungen sicher. 300 Aufrufe je Minute und Person oder Token.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"delta":{"type":"integer","minimum":-100000,"maximum":100000},"reason":{"type":"string","minLength":1,"maxLength":80},"demo":{"type":"boolean"}},"required":["delta"]},"example":{"delta":-2,"reason":"Doppelt gestempelt"}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tier":{"type":["string","null"]},"rewardAvailable":{"type":"boolean"}},"required":["balance","tier","rewardAvailable"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Treue-Verlauf eines Passes","tags":["passes"],"description":"Jede Buchung, neueste zuerst: `delta`, Stand danach `balanceAfter`, `reason`, `source` (`scan`, `api`, `inbound`, `csv`, `manual`, `demo`, `system`), `kind` (`earn` vergeben, `redeem` eingelöst, `correct` korrigiert, `welcome` Startstempel), `occurredAt` (Zeitpunkt der Nutzung) und `createdAt`. Dazu der aktuelle Stand `balance`, `tier`, `rewardAvailable` (eine offene Prämie), `goal`, `stampsLeft` und `rewards` (`open`: offene Prämien, älteste zuerst; `recent`: die letzten fünf eingelösten oder verfallenen). Cursor über `pagination.nextCursor`, `limit` 1 bis 200 (Standard 50). Jede Rolle im Workspace; Token-Scope `passes:read` oder `passes:write`.","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tier":{"type":["string","null"]},"rewardAvailable":{"type":"boolean"},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"stampsLeft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rewards":{"type":"object","properties":{"open":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}},"recent":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}}},"required":["open","recent"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"delta":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"balanceAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"type":["string","null"]},"source":{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},"kind":{"type":"string","enum":["earn","redeem","correct","welcome","reward_earned"]},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","delta","balanceAfter","reason","source","kind","occurredAt","createdAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["balance","tier","rewardAvailable","goal","stampsLeft","rewards","data","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/loyalty/stamp":{"post":{"summary":"Stempel geben (Nutzung)","tags":["passes"],"description":"„+1 Stempel“ aus der App (Pass-Detail, Mitglieder): eine Nutzung der Art `stamp` wie am Scanner, sie steht in den Nutzungen, startet Automatisierungen mit dem Auslöser „genutzt“ und zählt für das Tageslimit des Programms. `count` (1 bis 10, Standard 1) bucht mehrere Stempel als eine Nutzung; `locationId` optional. Nur Stempelkarten (sonst 422). Pausiert 409 `loyalty_paused`, Tageslimit erreicht 409 `loyalty_daily_cap` („Heute schon gestempelt“), ein entwerteter oder abgelaufener Pass 409. Ohne das Modul Treue 403 `module_disabled`. Antwort: Stand, Ziel, `stampsLeft`, offene und letzte Prämien und die `eventId` der Nutzung. Nur mit Anmeldung im Browser (API-Tokens melden Nutzungen über die Sammel-API), Editor-Rolle oder höher, jeder Plan. Audit `pass.loyalty.stamp`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{"count":1},"type":"object","properties":{"count":{"default":1,"type":"integer","minimum":1,"maximum":10},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tier":{"type":["string","null"]},"rewardAvailable":{"type":"boolean"},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"stampsLeft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rewards":{"type":"object","properties":{"open":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}},"recent":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}}},"required":["open","recent"],"additionalProperties":false},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"redeemed":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}},"required":["balance","tier","rewardAvailable","goal","stampsLeft","rewards"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/loyalty/earn":{"post":{"summary":"Punkte buchen (Nutzung)","tags":["passes"],"description":"„Punkte buchen“ aus der App (Pass-Detail, Mitglieder) auf einer Punktekarte: eine Nutzung der Art `points`, sie steht in den Nutzungen und startet Automatisierungen mit dem Auslöser „genutzt“. `amountCents` (Einkaufsbetrag in Cent) bucht `earnPerEuro` Punkte je Euro, abgerundet; `points` (1 bis 100.000) bucht genau diese Punkte und gewinnt, wenn beides kommt (der Betrag steht dann nur an der Nutzung). Eins von beiden ist Pflicht. Nur Punktekarten (eine Stempelkarte 422, dafür `POST /v1/passes/{id}/loyalty/stamp`). Ohne Punkte je Euro an der Regel und ohne `points` 422; ein Betrag, der 0 Punkte ergibt, 422. Ein entwerteter oder abgelaufener Pass 409. Ohne das Modul Treue 403 `module_disabled`. Antwort: Stand, Stufe und die `eventId` der Nutzung. Nur mit Anmeldung im Browser (API-Tokens melden Nutzungen über die Sammel-API), Editor-Rolle oder höher, jeder Plan. Audit `pass.loyalty.earn`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"points":{"type":"integer","minimum":1,"maximum":100000},"amountCents":{"type":"integer","minimum":1,"maximum":100000000},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tier":{"type":["string","null"]},"rewardAvailable":{"type":"boolean"},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"stampsLeft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rewards":{"type":"object","properties":{"open":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}},"recent":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}}},"required":["open","recent"],"additionalProperties":false},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"redeemed":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}},"required":["balance","tier","rewardAvailable","goal","stampsLeft","rewards"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/loyalty/redeem":{"post":{"summary":"Prämie einlösen","tags":["passes"],"description":"Löst die offene Prämie `rewardId` ein, ohne sie die älteste offene. Eine Nutzung der Art `redemption` mit `reason: \"reward\"` wie am Scanner. Gebucht wird nach den Bedingungen, mit denen die Prämie erreicht wurde: `carry` minus ihr Ziel (der Überhang bleibt, reicht er wieder, ist sofort die nächste Prämie offen), `reset` minus den ganzen Stand. Geht auch, während das Programm pausiert ist. Keine offene Prämie 409 `reward_not_available`; ein entwerteter oder abgelaufener Pass 409. Ohne das Modul Treue 403 `module_disabled`. Antwort: Stand, Ziel, offene und letzte Prämien, `redeemed` und die `eventId` der Nutzung. Editor-Rolle oder höher; Sitzung (jeder Plan, Quelle `manual`) oder API-Token mit `passes:write` (nur im bezahlten Plan, sonst 402; Quelle `api`). Header `Idempotency-Key` (24 h). Audit `pass.loyalty.redeem`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"rewardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tier":{"type":["string","null"]},"rewardAvailable":{"type":"boolean"},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"stampsLeft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rewards":{"type":"object","properties":{"open":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}},"recent":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}}},"required":["open","recent"],"additionalProperties":false},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"redeemed":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["earned","redeemed","voided","expired"]},"label":{"type":["string","null"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"redeemedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"redeemedSource":{"anyOf":[{"type":"string","enum":["scan","api","inbound","csv","manual","demo","system"]},{"type":"null"}]},"voidedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","status","label","rewardType","rewardValue","goal","earnedAt","redeemedAt","redeemedSource","voidedAt"],"additionalProperties":false}},"required":["balance","tier","rewardAvailable","goal","stampsLeft","rewards"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/loyalty/programs":{"get":{"summary":"Treue-Programme eines Workspace","tags":["templates"],"description":"Jedes Programm (die Treue-Regel einer Vorlage) mit Vorlagenname, Zustand der Vorlage (archivierte zuletzt, „Programm entfernen“ geht auch dort), `members` (echte, aktive Mitglieder), `openRewards` mit Wert in Cent (Art `item` und `amount`) und `nearGoal` (Mitglieder kurz vor der Prämie). `templatesWithoutProgram`: Treuekarten ohne Programm (nicht archiviert), für „Programm anlegen“. Jede Rolle im Workspace; Token-Scope `templates:read`. Ohne das Modul Treue 403 `module_disabled`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["stamps","points"]},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reward":{"type":["string","null"]},"earnPerEuro":{"type":["number","null"]},"tiers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":30},"minPoints":{"type":"integer","minimum":0,"maximum":100000000}},"required":["name","minPoints"],"additionalProperties":false}},"afterReward":{"type":"string","enum":["carry","reset"]},"rewardType":{"type":"string","enum":["item","percent","amount"]},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"startStamps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dailyCap":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"paused":{"type":"boolean"},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"kindLocked":{"type":"boolean"},"name":{"type":"string"},"templateStatus":{"type":"string","enum":["draft","published","archived"]},"archived":{"type":"boolean"},"members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openRewards":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openRewardsValueCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nearGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templateId","kind","goal","reward","earnPerEuro","tiers","afterReward","rewardType","rewardValue","startStamps","dailyCap","paused","pausedAt","updatedAt","name","templateStatus","archived","members","openRewards","openRewardsValueCents","nearGoal"],"additionalProperties":false}},"templatesWithoutProgram":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"status":{"type":"string"}},"required":["id","name","status"],"additionalProperties":false}}},"required":["data","templatesWithoutProgram"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/loyalty/overview":{"get":{"summary":"Treue-Übersicht","tags":["analytics"],"description":"Kennzahlen der Programme eines Workspace (oder eines mit `templateId` bzw. `program`) für `range` 7, 30 oder 90 Tage (auch `7d`), Tage in der Zeitzone des Workspace, jeweils mit dem Zeitraum davor (`prev`): Mitglieder, neue Mitglieder, vergebene Stempel und Punkte, erreichte und eingelöste Prämien, Einlösequote (von den im Zeitraum erreichten Prämien die bis jetzt eingelösten, null ohne erreichte), offene Prämien mit Wert. `series`: je Tag die Werte und der Tag im Zeitraum davor. `distribution`: Stempelverteilung je Stempelprogramm (höchstens 12 Balken, der letzte ist „Prämie bereit“). `segments`: Fast geschafft, Prämie bereit, Nicht abgeholt (14 Tage), Lange nicht da (60 Tage), Neu (30 Tage), Noch kein Stempel, nach denselben Regeln wie die Mitglieder-Liste und Zielgruppen. Gezählt werden nur echte Pässe (nicht Test, nicht intern) und keine Demo-Stempel. Bis zu 60 Sekunden zwischengespeichert. Jede Rolle im Workspace; Token-Scope `passes:read`. Ohne das Modul Treue 403 `module_disabled`.","parameters":[{"schema":{"default":"30","type":"string","enum":["7","30","90","7d","30d","90d"]},"in":"query","name":"range","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"program","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"range":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timezone":{"type":"string"},"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"to":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"prevFrom":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"programs":{"type":"array","items":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"archived":{"type":"boolean"},"kind":{"type":"string","enum":["stamps","points"]},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reward":{"type":["string","null"]},"rewardType":{"type":"string"},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"afterReward":{"type":"string"},"paused":{"type":"boolean"},"members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openRewards":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nearGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["templateId","name","archived","kind","goal","reward","rewardType","rewardValue","afterReward","paused","members","openRewards","nearGoal"],"additionalProperties":false}},"kpis":{"type":"object","properties":{"members":{"type":"object","properties":{"value":{"type":"number"},"prev":{"type":"number"}},"required":["value","prev"],"additionalProperties":false},"newMembers":{"type":"object","properties":{"value":{"type":"number"},"prev":{"type":"number"}},"required":["value","prev"],"additionalProperties":false},"stampsGiven":{"type":"object","properties":{"value":{"type":"number"},"prev":{"type":"number"}},"required":["value","prev"],"additionalProperties":false},"pointsGiven":{"type":"object","properties":{"value":{"type":"number"},"prev":{"type":"number"}},"required":["value","prev"],"additionalProperties":false},"rewardsEarned":{"type":"object","properties":{"value":{"type":"number"},"prev":{"type":"number"}},"required":["value","prev"],"additionalProperties":false},"rewardsRedeemed":{"type":"object","properties":{"value":{"type":"number"},"prev":{"type":"number"}},"required":["value","prev"],"additionalProperties":false},"redemptionRate":{"type":"object","properties":{"value":{"type":["number","null"]},"prev":{"type":["number","null"]},"earned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"redeemed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prevEarned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prevRedeemed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["value","prev","earned","redeemed","prevEarned","prevRedeemed"],"additionalProperties":false},"openRewards":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"valueCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count","valueCents"],"additionalProperties":false}},"required":["members","newMembers","stampsGiven","pointsGiven","rewardsEarned","rewardsRedeemed","redemptionRate","openRewards"],"additionalProperties":false},"series":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"stamps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rewardsEarned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rewardsRedeemed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newMembers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prevDate":{"type":"string"},"prevStamps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prevPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prevRewardsEarned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prevRewardsRedeemed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prevNewMembers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["date","stamps","points","rewardsEarned","rewardsRedeemed","newMembers","prevDate","prevStamps","prevPoints","prevRewardsEarned","prevRewardsRedeemed","prevNewMembers"],"additionalProperties":false}},"distribution":{"type":"array","items":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"goal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"buckets":{"type":"array","items":{"type":"object","properties":{"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rewardReady":{"type":"boolean"}},"required":["from","to","count","rewardReady"],"additionalProperties":false}}},"required":["templateId","name","goal","buckets"],"additionalProperties":false}},"segments":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["near_goal","reward_ready","unclaimed","inactive","new","no_stamp"]},"label":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["key","label","count"],"additionalProperties":false}},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["range","timezone","from","to","prevFrom","programs","kpis","series","distribution","segments","generatedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/loyalty/members":{"get":{"summary":"Treue-Mitglieder","tags":["passes"],"description":"Echte, aktive Pässe der Programme (oder eines mit `program` bzw. `templateId`), mit Stand, Ziel, `stampsLeft`, Stufe, ältester offener Prämie, letztem Stempel (`lastEarnAt`), letzter Buchung und Inhaber. `segment`: `near_goal`, `reward_ready`, `unclaimed`, `inactive`, `new`, `no_stamp` (dieselben Regeln wie die Übersicht). `q`: Seriennummer, Code oder eigene Kennung, mit Kontaktsicht auch E-Mail und Name. `sort`: `near_goal` (am nächsten an der Prämie zuerst, Standard), `recent` (letzter Stempel), `joined` (neueste zuerst). Name und E-Mail des Inhabers sieht ungekürzt nur, wer mindestens Org-Admin oder Kundensupport ist, sonst maskiert („k•••@verve.com“). Cursor über `pagination.nextCursor`, `limit` 1 bis 200 (Standard 50), `total` zählt den ganzen Filter. Jede Rolle im Workspace; Token-Scope `passes:read`. Ohne das Modul Treue 403 `module_disabled`.","parameters":[{"schema":{"type":"string","enum":["near_goal","reward_ready","unclaimed","inactive","new","no_stamp"]},"in":"query","name":"segment","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"program","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","maxLength":200},"in":"query","name":"q","required":false},{"schema":{"default":"near_goal","type":"string","enum":["near_goal","recent","joined"]},"in":"query","name":"sort","required":false},{"schema":{"type":"string"},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serial":{"type":"string"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"programName":{"type":"string"},"kind":{"type":"string","enum":["stamps","points"]},"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"goal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"stampsLeft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"tier":{"type":["string","null"]},"openRewards":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openReward":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"label":{"type":["string","null"]},"rewardType":{"type":"string"},"rewardValue":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","label","rewardType","rewardValue","earnedAt"],"additionalProperties":false},{"type":"null"}]},"lastEarnAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastBookingAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"joinedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"platform":{"type":"string","enum":["apple","google","both"]},"externalId":{"type":["string","null"]},"holder":{"anyOf":[{"type":"object","properties":{"customerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":["string","null"]},"email":{"type":["string","null"]}},"required":["customerId","name","email"],"additionalProperties":false},{"type":"null"}]}},"required":["passId","serial","templateId","programName","kind","balance","goal","stampsLeft","tier","openRewards","openReward","lastEarnAt","lastBookingAt","joinedAt","platform","externalId","holder"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pagination":{"type":"object","properties":{"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"required":["nextCursor","hasMore"],"additionalProperties":false}},"required":["data","total","pagination"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/loyalty/members.csv":{"get":{"summary":"Treue-Mitglieder als CSV","tags":["passes"],"description":"Dieselben Filter wie `GET …/loyalty/members` (`segment`, `program`, `q`, `sort`), alle Zeilen (höchstens 100.000) als CSV mit Semikolon, UTF-8. Name und E-Mail nur für Org-Admins und den Kundensupport und nur von Kontakten mit aktiver Einwilligung. Editor-Rolle oder höher; Token-Scope `passes:read`. In einer Übernahme nur zum Lesen 403 `impersonation_read_only` wie bei den anderen Kontakt-Exporten. 30 Exporte je Minute und Person oder Token. Audit `loyalty.members_export`. Ohne das Modul Treue 403 `module_disabled`.","parameters":[{"schema":{"type":"string","enum":["near_goal","reward_ready","unclaimed","inactive","new","no_stamp"]},"in":"query","name":"segment","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"program","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"templateId","required":false},{"schema":{"type":"string","maxLength":200},"in":"query","name":"q","required":false},{"schema":{"default":"near_goal","type":"string","enum":["near_goal","recent","joined"]},"in":"query","name":"sort","required":false},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"CSV-Datei (text/csv)","content":{"application/json":{"schema":{"type":"string","description":"CSV-Datei (text/csv)"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/loyalty-automations":{"get":{"summary":"Treue-Automatik einer Vorlage lesen","tags":["templates"],"description":"Die automatischen Nachrichten eines Stempel-Programms: `near_goal` („Fast geschafft“, Vorgabe aus, `params.stampsLeft` 1 bis 5) und `reward_ready` („Prämie bereit“, Vorgabe an, Text wie bisher „Prämie verfügbar: …“). Je Fall: `enabled`, der Text, der rausgeht (`message`, eigener Text oder die Vorgabe in der Sprache des Arbeitsbereichs, `isDefault`), `sample` mit den Werten des Programms, `lockScreenFits` (höchstens 90 Zeichen) und die Zahlen der letzten 30 Tage. Höchstens eine Treue-Nachricht je Karte und Tag (außer „Prämie bereit“), höchstens 3 sichtbare Nachrichten je Karte in 24 Stunden. Jede Rolle im Workspace; Token-Scope `templates:read`. Ohne Treue-Modul 403 `module_disabled`, ohne Treue-Regel 404 `loyalty_rule_missing`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"available":{"type":"boolean"},"tokens":{"type":"array","items":{"type":"string"}},"limits":{"type":"object","properties":{"messageMax":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lockScreenMax":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"perDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"per24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quietHours":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"timeZone":{"type":"string"}},"required":["from","to","timeZone"],"additionalProperties":false}},"required":["messageMax","lockScreenMax","perDay","per24h","quietHours"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["near_goal","reward_ready"]},"enabled":{"type":"boolean"},"message":{"type":"string"},"isDefault":{"type":"boolean"},"defaultMessage":{"type":"string"},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},"sample":{"type":"string"},"lockScreenFits":{"type":"boolean"},"capExempt":{"type":"boolean"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"stats":{"type":"object","properties":{"sent30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sent30d","skipped30d"],"additionalProperties":false}},"required":["key","enabled","message","isDefault","defaultMessage","params","sample","lockScreenFits","capExempt","updatedAt","stats"],"additionalProperties":false}}},"required":["templateId","available","tokens","limits","items"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"put":{"summary":"Treue-Automatik einer Vorlage speichern","tags":["templates"],"description":"Speichert die genannten Fälle (`items`, je `key` höchstens einmal); ein weggelassenes Feld behält seinen Wert. `message`: eigener Text (1 bis 160 Zeichen, gilt für alle Sprachen) oder `null` für die Vorgabe in der Sprache der Karte. Erlaubte Platzhalter: `{{stampsLeft}}`, `{{loyaltyReward}}`, `{{pointsBalance}}`, `{{loyaltyGoal}}`; ein anderer ist 422 mit `fields`. `near_goal.params.stampsLeft` (1 bis 5): die Nachricht kommt, sobald noch so viele Stempel oder weniger fehlen, einmal je Runde. Nur für Stempel-Programme (sonst 422). Editor-Rolle oder höher; Sitzung oder Token mit `templates:write`. Audit `template.loyalty_automation_update`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"minItems":1,"maxItems":2,"type":"array","items":{"oneOf":[{"type":"object","properties":{"key":{"type":"string","enum":["near_goal"]},"enabled":{"type":"boolean"},"message":{"anyOf":[{"type":"string","minLength":1,"maxLength":160},{"type":"null"}]},"params":{"type":"object","properties":{"stampsLeft":{"type":"integer","minimum":1,"maximum":5}},"required":["stampsLeft"],"additionalProperties":false}},"required":["key"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","enum":["reward_ready"]},"enabled":{"type":"boolean"},"message":{"anyOf":[{"type":"string","minLength":1,"maxLength":160},{"type":"null"}]},"params":{"type":"object","properties":{},"additionalProperties":false}},"required":["key"],"additionalProperties":false}]}}},"required":["items"],"additionalProperties":false},"example":{"items":[{"key":"near_goal","enabled":true,"params":{"stampsLeft":2},"message":"Fast geschafft: Nur noch {{stampsLeft}} Stempel bis zu {{loyaltyReward}}."},{"key":"reward_ready","enabled":true,"message":null}]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"available":{"type":"boolean"},"tokens":{"type":"array","items":{"type":"string"}},"limits":{"type":"object","properties":{"messageMax":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lockScreenMax":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"perDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"per24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quietHours":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"timeZone":{"type":"string"}},"required":["from","to","timeZone"],"additionalProperties":false}},"required":["messageMax","lockScreenMax","perDay","per24h","quietHours"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["near_goal","reward_ready"]},"enabled":{"type":"boolean"},"message":{"type":"string"},"isDefault":{"type":"boolean"},"defaultMessage":{"type":"string"},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},"sample":{"type":"string"},"lockScreenFits":{"type":"boolean"},"capExempt":{"type":"boolean"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"stats":{"type":"object","properties":{"sent30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sent30d","skipped30d"],"additionalProperties":false}},"required":["key","enabled","message","isDefault","defaultMessage","params","sample","lockScreenFits","capExempt","updatedAt","stats"],"additionalProperties":false}}},"required":["templateId","available","tokens","limits","items"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/templates/{id}/loyalty-automations/test-send":{"post":{"summary":"Treue-Nachricht an einen Test-Pass senden","tags":["templates"],"description":"Schickt die Nachricht eines Falls (`key`) sofort an einen Test- oder Demo-Pass dieser Vorlage (`passId`), mit dem Stand dieses Passes in den Platzhaltern. `message` probiert einen noch nicht gespeicherten Text aus; ohne ihn geht der gespeicherte Text oder die Vorgabe raus. Die Grenzen je Karte und das Push-Kontingent gelten für den Test nicht. Wie jede Erinnerung nur zwischen 9 und 20 Uhr (Europe/Berlin); in der Ruhezeit 409 mit `details.retryAt`. Nur für Stempel-Programme. Editor-Rolle oder höher; Sitzung oder Token mit `templates:write`. Höchstens 5 Tests je Minute.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","enum":["near_goal","reward_ready"]},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"message":{"type":"string","minLength":1,"maxLength":160}},"required":["key","passId"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sent":{"type":"boolean","enum":[true]},"passId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"message":{"type":"string"}},"required":["sent","passId","message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/triggers/{key}":{"post":{"summary":"Ereignis melden (Auslöser einer Automatisierung)","tags":["flows"],"description":"Startet jede aktive Automatisierung dieses Workspace mit dem Auslöser „Externes Ereignis“ und diesem `key` (2–40 Zeichen a–z, 0–9, _ und -). Eingeschrieben werden die aktiven Pässe der Vorlage des Flows in seiner Zielgruppe, mit `serial` nur dieser eine Pass, mit `testOnly: true` nur Test-Pässe. `payload` (JSON-Objekt, höchstens 16 KB) steht den Formeln der Schritte als `event.<pfad>` zur Verfügung, etwa „Rabatt {{= min(event.goals*5, 25) }} %“. Jeder Aufruf ist ein eigenes Vorkommen: ein Pass läuft bei jedem Aufruf erneut durch den Ablauf; ein laufender Durchlauf desselben Passes wird dabei beendet. Header `Idempotency-Key` (24 h) macht Wiederholungen sicher. Grenzen: 120 Aufrufe pro Minute je Person oder Token. Ein Aufruf an alle Pässe (ohne `serial`, ohne `testOnly`) sperrt jede Automatisierung, die er startet, für 60 Sekunden; ist jede passende Automatisierung gesperrt → 429 `rate_limited` mit `Retry-After`. Aufrufe mit `serial` und Testereignisse sperren nichts. Antwort 202 mit `matchedFlows` und `enrolled`; die Schritte laufen danach im Hintergrund. Rolle Editor oder höher, Token-Scope `events:write`; im Free-Plan gesperrt (402). Unbekannte `serial` → 404.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"default":{},"description":"Nutzlast des Ereignisses als JSON-Objekt, höchstens 16 KB, in den Formeln der Schritte als event.<pfad> (etwa event.goals).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"serial":{"description":"Nur dieser Pass (Seriennummer). Ohne: alle aktiven Pässe der Vorlage in der Zielgruppe des Flows.","type":"string","minLength":1,"maxLength":200},"testOnly":{"default":false,"description":"true = nur Test-Pässe (Seite Test-Pass, Test-Landing-Seite), zum Ausprobieren („Testereignis senden“). Sonst nur echte Pässe.","type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true},{"schema":{"type":"string","pattern":"^[a-z0-9_-]{2,40}$"},"in":"path","name":"key","required":true}],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"matchedFlows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Aktive Automatisierungen dieses Workspace mit diesem Ereignis."},"enrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Neu eingeschriebene Pässe über alle diese Automatisierungen."}},"required":["matchedFlows","enrolled"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/request-review":{"post":{"summary":"Kampagne zur Freigabe senden","tags":["campaigns"],"description":"Setzt `approvalState` auf in_review und schreibt die Anfrage mit optionalem Kommentar (höchstens 2000 Zeichen) in den Verlauf. Jede Person, die im Arbeitsbereich freigeben darf, bekommt eine Mail mit Direktlink, außer der anfragenden. Ab der Rolle editor, nur für Entwürfe und geplante Kampagnen, aus none oder changes_requested (sonst 409 conflict).","requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"comment":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"approvalState":{"type":"string","enum":["none","in_review","changes_requested","approved"]},"notified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Wie viele Personen eine Mail bekommen haben."}},"required":["approvalState","notified"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/approve":{"post":{"summary":"Kampagne freigeben","tags":["campaigns"],"description":"Gibt eine Kampagne in in_review frei (`approvalState` approved), optional mit Kommentar. Danach geht „Senden“ oder „Planen“; eine geplante Kampagne sendet zu ihrer Zeit. Nur wer im Arbeitsbereich freigeben darf (Inhaber, Admins, Häkchen „darf Kampagnen freigeben“), und nie die Person, die angefragt hat (409 conflict, Vier-Augen-Regel). Die anfragende Person bekommt eine Mail.","requestBody":{"required":true,"content":{"application/json":{"schema":{"default":{},"type":"object","properties":{"comment":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"approvalState":{"type":"string","enum":["none","in_review","changes_requested","approved"]},"notified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Wie viele Personen eine Mail bekommen haben."}},"required":["approvalState","notified"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/request-changes":{"post":{"summary":"Änderungen an einer Kampagne anfordern","tags":["campaigns"],"description":"Setzt eine Kampagne in in_review auf changes_requested, mit Pflicht-Kommentar (was sich ändern soll). Rechte wie beim Freigeben, nie die anfragende Person (409 conflict). Die anfragende Person bekommt eine Mail und sendet die Kampagne nach der Änderung erneut zur Freigabe.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comment":{"type":"string","minLength":1,"maxLength":2000}},"required":["comment"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"approvalState":{"type":"string","enum":["none","in_review","changes_requested","approved"]},"notified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Wie viele Personen eine Mail bekommen haben."}},"required":["approvalState","notified"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/comments":{"post":{"summary":"Kampagne kommentieren","tags":["campaigns"],"description":"Schreibt einen Kommentar (1 bis 2000 Zeichen) in den Verlauf der Kampagne, ohne den Zustand der Freigabe zu ändern. Jede Rolle im Arbeitsbereich.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"comment":{"type":"string","minLength":1,"maxLength":2000}},"required":["comment"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"actor":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},{"type":"null"}],"description":"Wer den Schritt gemacht hat; null = System (etwa der angehaltene geplante Versand) oder ein gelöschtes Konto."},"decision":{"type":"string","enum":["requested","approved","changes_requested","comment"]},"comment":{"type":["string","null"]},"note":{"anyOf":[{"type":"string","enum":["schedule_blocked","edited_after_approval","edited_in_review"]},{"type":"null"}],"description":"Eintrag des Systems mit festem Text: schedule_blocked (geplanter Versand angehalten, Freigabe fehlt), edited_after_approval, edited_in_review (Inhalt nach Freigabe bzw. Anfrage geändert). Sonst null."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","actor","decision","comment","note","createdAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/campaigns/{id}/reviews":{"get":{"summary":"Verlauf der Freigabe lesen","tags":["campaigns"],"description":"Anfragen, Freigaben, angeforderte Änderungen und Kommentare der Kampagne, älteste zuerst. `actor` null = System. `me` sagt, was die aufrufende Person gerade darf: `canDecide` (freigeben oder Änderungen anfordern) und `isRequester` (hat die offene Anfrage gestellt). Jede Rolle im Arbeitsbereich.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"actor":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},{"type":"null"}],"description":"Wer den Schritt gemacht hat; null = System (etwa der angehaltene geplante Versand) oder ein gelöschtes Konto."},"decision":{"type":"string","enum":["requested","approved","changes_requested","comment"]},"comment":{"type":["string","null"]},"note":{"anyOf":[{"type":"string","enum":["schedule_blocked","edited_after_approval","edited_in_review"]},{"type":"null"}],"description":"Eintrag des Systems mit festem Text: schedule_blocked (geplanter Versand angehalten, Freigabe fehlt), edited_after_approval, edited_in_review (Inhalt nach Freigabe bzw. Anfrage geändert). Sonst null."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","actor","decision","comment","note","createdAt"],"additionalProperties":false}},"approvalState":{"type":"string","enum":["none","in_review","changes_requested","approved"]},"me":{"type":"object","properties":{"canApprove":{"type":"boolean","description":"Darf in diesem Arbeitsbereich freigeben."},"isRequester":{"type":"boolean","description":"Hat die letzte Anfrage gestellt (und darf sie deshalb nicht selbst freigeben)."},"canDecide":{"type":"boolean","description":"Darf jetzt freigeben oder Änderungen anfordern: canApprove, nicht isRequester, Kampagne in in_review und noch nicht gesendet."}},"required":["canApprove","isRequester","canDecide"],"additionalProperties":false}},"required":["data","approvalState","me"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/approval-settings":{"get":{"summary":"Freigabe-Regeln lesen","tags":["campaigns"],"description":"Ob Kampagnen des Arbeitsbereichs vor dem Senden eine Freigabe brauchen, und wer freigeben darf (Inhaber, Admins und Personen mit dem Häkchen). Jede Rolle im Arbeitsbereich darf lesen, damit Bearbeiter vor dem Senden wissen, dass eine Freigabe nötig ist; E-Mail-Adressen der Freigeber nur für Admins.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"true = Kampagnen dieses Arbeitsbereichs senden erst nach einer Freigabe."},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"approvers":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"email":{"description":"Nur für Admins des Arbeitsbereichs, sonst null.","type":["string","null"]},"canApprove":{"type":"boolean","description":"true = Häkchen „darf Kampagnen freigeben“; false = darf als Inhaber oder Admin."}},"required":["userId","name","email","canApprove"],"additionalProperties":false},"description":"Wer in diesem Arbeitsbereich freigeben darf."}},"required":["required","updatedAt","approvers"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"put":{"summary":"Freigabe-Regeln ändern","tags":["campaigns"],"description":"Schaltet die Pflicht zur Freigabe für Kampagnen des Arbeitsbereichs an oder aus. Admin des Arbeitsbereichs, nur mit Browser-Sitzung (ein API-Token soll die Vier-Augen-Regel nicht abschalten). Mit der Pflicht antwortet jedes Senden ohne Freigabe mit 409 approval_required, und eine geplante Kampagne ohne Freigabe wird zu ihrer Zeit angehalten. Audit workspace.approval_settings.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean"}},"required":["required"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"required":{"type":"boolean","description":"true = Kampagnen dieses Arbeitsbereichs senden erst nach einer Freigabe."},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"approvers":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"email":{"description":"Nur für Admins des Arbeitsbereichs, sonst null.","type":["string","null"]},"canApprove":{"type":"boolean","description":"true = Häkchen „darf Kampagnen freigeben“; false = darf als Inhaber oder Admin."}},"required":["userId","name","email","canApprove"],"additionalProperties":false},"description":"Wer in diesem Arbeitsbereich freigeben darf."}},"required":["required","updatedAt","approvers"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/approvals/inbox":{"get":{"summary":"Freigaben für die Mitteilungszentrale","tags":["campaigns"],"description":"`pending`: Kampagnen in in_review, die die anfragende Person freigeben darf (nicht ihre eigenen Anfragen). `decided`: eigene Anfragen der letzten 7 Tage mit Entscheidung (freigegeben oder Änderungen angefordert), solange die Kampagne in diesem Zustand und noch nicht gesendet ist. `blocked`: eigene oder selbst angefragte Kampagnen, deren geplanter Versand in den letzten 7 Tagen mangels Freigabe angehalten wurde und die noch Entwurf sind. Jede Rolle im Arbeitsbereich, je Liste höchstens 20.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"pending":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"status":{"type":"string","enum":["draft","scheduled"]},"scheduleAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"requestedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"requestedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"comment":{"type":["string","null"]}},"required":["campaignId","name","status","scheduleAt","requestedAt","requestedBy","comment"],"additionalProperties":false}},"decided":{"type":"array","items":{"type":"object","properties":{"reviewId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"decision":{"type":"string","enum":["approved","changes_requested"]},"decidedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"decidedBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},{"type":"null"}]},"comment":{"type":["string","null"]}},"required":["reviewId","campaignId","name","decision","decidedAt","decidedBy","comment"],"additionalProperties":false}},"blocked":{"type":"array","items":{"type":"object","properties":{"reviewId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"campaignId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"blockedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["reviewId","campaignId","name","blockedAt"],"additionalProperties":false}}},"required":["pending","decided","blocked"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/passes/import/preview":{"post":{"summary":"Pass-Import prüfen (Vorschau)","tags":["passes"],"description":"Erster Schritt eines Imports. `multipart/form-data` mit `file` (CSV bis 10 MB, höchstens 20.000 Zeilen, Trennzeichen und Zeichensatz werden erkannt) und `templateId` (veröffentlichte Vorlage) lädt die Datei hoch und schlägt je Spalte ein Ziel vor; `application/json` `{ uploadId, templateId, mapping }` prüft dieselbe Datei mit einer geänderten Zuordnung. Ziele: `externalId` (eigene Kennung, 1–120 Zeichen; ein Pass der Vorlage mit dieser Kennung wird aktualisiert), `email`, `firstName`, `lastName`, `validUntil` (TT.MM.JJJJ oder ISO in der Zeitzone des Arbeitsbereichs, ein Datum ohne Uhrzeit gilt bis 23:59:59), `code` (Wert im Barcode, druckbares Latin-1, nur für neue Pässe) und `attr.<key>` je Feld der Feldliste. Die Antwort nennt `uploadId`, Kopfzeile, Zuordnung, die ersten 20 Zeilen, wie der Import sie liest (`action` create oder update), die Fehlerzeilen (doppelte Kennung, ungültige Werte, `barcode_without_code`, vergebener Code, Pflichtfeld fehlt) und die Zahlen. Es entsteht noch kein Pass. Die Datei wartet 24 Stunden. Ab der Rolle Bearbeiter, Token-Scope `passes:issue`; im Free-Plan gesperrt.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"fileName":{"type":["string","null"]},"rowCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delimiter":{"type":"string","enum":[",",";","\t"]},"headers":{"type":"array","items":{"type":"string"}},"samples":{"type":"array","items":{"type":"string"}},"mapping":{"maxItems":100,"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]}},"targets":{"type":"array","items":{"type":"object","properties":{"target":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","enum":["text","number","date","email","id"]}},"required":["target","label","required","type"],"additionalProperties":false}},"missingRequired":{"type":"array","items":{"type":"string"}},"rows":{"type":"array","items":{"type":"object","properties":{"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"action":{"anyOf":[{"type":"string","enum":["create","update"]},{"type":"null"}]},"externalId":{"type":["string","null"]},"email":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"code":{"type":["string","null"]},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"anyOf":[{"type":"object","properties":{"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"field":{"type":["string","null"]},"message":{"type":"string"},"duplicateOfLine":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["line","code","field","message"],"additionalProperties":false},{"type":"null"}]}},"required":["line","action","externalId","email","firstName","lastName","validUntil","code","attributes","error"],"additionalProperties":false}},"errors":{"type":"array","items":{"type":"object","properties":{"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"field":{"type":["string","null"]},"message":{"type":"string"},"duplicateOfLine":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["line","code","field","message"],"additionalProperties":false}},"errorCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"updates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"invitable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"barcodeCarriesCode":{"type":"boolean"},"externalIdOnPass":{"type":"boolean"}},"required":["uploadId","fileName","rowCount","delimiter","headers","samples","mapping","targets","missingRequired","rows","errors","errorCount","creates","updates","invitable","barcodeCarriesCode","externalIdOnPass"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/passes/import":{"post":{"summary":"Pässe importieren","tags":["passes"],"description":"Startet den Import einer Datei aus der Vorschau (`uploadId`) mit der geprüften Zuordnung und antwortet 202 mit `jobId`; den Stand liest `GET …/passes/import/{jobId}`. Der Import läuft in Blöcken zu 100 Zeilen, jede Zeile für sich: eine Fehlerzeile hält die anderen nicht auf. Ein Pass der Vorlage mit derselben `externalId` wird still aktualisiert (Felder, gültig bis, Kontakt), Zeilen ohne `externalId` legen jedes Mal neue Pässe an. `sendInvites` schickt jedem neu angelegten Pass mit E-Mail eine persönliche Einladung (Link zur Seite mit Apple- und Google-Knopf); aktualisierte Pässe bekommen keine neue Mail. Einladungen nur mit `legalBasisConfirmed: true`, sonst 422 `legal_basis_required`. Das Monatskontingent wird vor jedem Block geprüft; ist es erschöpft, endet der Import mit `failed`, fertige Blöcke bleiben. Ein Import je Vorlage zur selben Zeit (sonst 409). Ab der Rolle Bearbeiter, Token-Scope `passes:issue`; im Free-Plan gesperrt.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"mapping":{"maxItems":100,"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]}},"sendInvites":{"default":false,"type":"boolean"},"legalBasisConfirmed":{"default":false,"type":"boolean"}},"required":["uploadId","templateId","mapping"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["jobId"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"413":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/passes/import/{jobId}":{"get":{"summary":"Pass-Import lesen","tags":["passes"],"description":"Stand eines Imports: `status` queued, running, done oder failed; `created`, `updated` (still aktualisiert), `unchanged`, `failed` und `invited` (Einladungen in der Queue) wachsen je Block. `errors` nennt die ersten 200 Fehlerzeilen mit Zeilennummer, `detail` den Grund, wenn der ganze Import scheiterte. Ab der Rolle Bearbeiter, Token-Scope `passes:issue`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"jobId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["queued","running","done","failed"]},"fileName":{"type":["string","null"]},"sendInvites":{"type":"boolean"},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"updated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unchanged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"invited":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errors":{"type":"array","items":{"type":"object","properties":{"line":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"field":{"type":["string","null"]},"message":{"type":"string"},"duplicateOfLine":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["line","code","field","message"],"additionalProperties":false}},"detail":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","templateId","status","fileName","sendInvites","total","created","updated","unchanged","failed","invited","errors","detail","createdAt","startedAt","finishedAt"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/workspaces/{workspaceId}/passes/remind":{"post":{"summary":"Eingeladene erinnern","tags":["passes"],"description":"Schickt eine Erinnerung an jeden gültigen Pass, der eine Einladung bekommen hat, noch in keiner Wallet liegt und dessen letzte Einladung älter als 3 Tage ist (mit `templateId` nur Pässe dieser Vorlage). Kontakte, die alles widerrufen haben oder gelöscht sind, bekommen nichts. „In einer Wallet“ heißt: eine Apple-Registrierung; ein nur in Google Wallet gespeicherter Pass meldet sich nicht zurück und bekommt die Erinnerung trotzdem (die Mail sagt, dass sie dann ignoriert werden kann). Jede Erinnerung ist ein neuer persönlicher Link; höchstens 2.000 je Aufruf (`more: true` = weitere fällig). Antwort `sent`. Ab der Rolle Bearbeiter, Token-Scope `passes:issue`; im Free-Plan gesperrt.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"workspaceId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"more":{"type":"boolean"}},"required":["sent","more"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"423":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passes/{id}/resend-invite":{"post":{"summary":"Einladung erneut senden","tags":["passes"],"description":"Schickt dem Kontakt eines Passes, der schon eine Einladung hatte, einen neuen persönlichen Link (die älteren bleiben gültig), auch wenn der Inhaber den Pass aus dem Wallet entfernt hat: über den Link legt er ihn wieder ab. 409, wenn der Pass entwertet oder abgelaufen ist (`details.reason` pass_not_active), noch nie eingeladen wurde (no_invite), keinen Kontakt hat (no_contact) oder der Kontakt alles widerrufen hat (contact_withdrawn); 429 innerhalb von 60 Sekunden nach der letzten Einladung. Ab der Rolle Bearbeiter und für Kundensupport, Token-Scope `passes:issue` oder `passes:write`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"sent":{"type":"boolean","enum":[true]}},"required":["sent"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"detail":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"requiredRole":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}},"servers":[{"url":"https://api.dowallet.de","description":"Produktion"},{"url":"https://api.dowallet.dev","description":"Staging"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"api-tokens","description":"Tokens für Server-zu-Server-Zugriff anlegen, auflisten und widerrufen."},{"name":"redemptions","description":"Nutzungen melden, importieren und auswerten."},{"name":"webhooks","description":"Ausgehende Webhooks mit Ereignissen aus dem Katalog, Zustellungen prüfen, Nutzungen über Empfangs-URLs annehmen."},{"name":"passes","description":"Pässe ausstellen (einzeln und gebündelt), lesen, Attribute und Gültigkeit ändern, entwerten, personenbezogene Daten löschen."},{"name":"templates","description":"Vorlagen: Design, Feldliste, Wertquelle, Versionen, Veröffentlichung."},{"name":"claim-links","description":"Landing-Seiten, über die Kunden den Pass ins Wallet holen."},{"name":"campaigns","description":"Kampagnen: Push, stille Aktualisierung, Pass ersetzen, Empfänger und Protokoll."},{"name":"audiences","description":"Zielgruppen aus Pass-Attributen und Verhalten."},{"name":"flows","description":"Automatisierungen: ereignisgesteuerte Push- und E-Mail-Strecken."},{"name":"locations","description":"Standorte für Hinweise auf dem Sperrbildschirm in der Nähe."},{"name":"code-pools","description":"Code-Listen mit eindeutigen Codes, die eine Vorlage beim Ausstellen vergibt, und die Wertquelle „API deines Systems“."},{"name":"customers","description":"Kontakte mit Einwilligung, Export für eigene Systeme."},{"name":"analytics","description":"Kennzahlen je Workspace und je UTM-Quelle."},{"name":"events","description":"Roh-Ereignisse je Workspace und Pass, eigene Ereignisse schreiben."},{"name":"assets","description":"Bilder für Logo, Strip, Icon und Hero."},{"name":"auth","description":"Anmeldung, Sitzung, Passkeys und Zwei-Faktor für Nutzerkonten."},{"name":"orgs","description":"Organisation: Profil, Branding, Rechnungen, E-Mail-Absender."},{"name":"workspaces","description":"Workspaces (Filialen, Marken) innerhalb einer Organisation."},{"name":"memberships","description":"Rollen der Team-Mitglieder."},{"name":"invitations","description":"Einladungen ins Team."},{"name":"wallet-credentials","description":"Apple- und Google-Zertifikate der Organisation."},{"name":"dsgvo","description":"Datenexport, Löschung und Betroffenenrechte."},{"name":"emails","description":"E-Mail-Einstellungen und Test-Versand."},{"name":"packages","description":"Pakete und Kontingente."},{"name":"support","description":"Support-Tickets."},{"name":"links","description":"Klick-Tracking für Links im Pass."},{"name":"public","description":"Öffentliche Endpunkte ohne Token: Landing-Seiten, Pass-Download, Pitch-Demos."},{"name":"apple-passkit","description":"Apple Wallet Web-Service (Registrierung, Aktualisierung), wird vom Gerät aufgerufen."}],"x-tagGroups":[{"name":"Integration","tags":["api-tokens","redemptions","webhooks","passes","customers","events","analytics","links"]},{"name":"Pässe und Kampagnen","tags":["templates","claim-links","campaigns","audiences","flows","locations","code-pools","assets"]},{"name":"Konto","tags":["auth","orgs","workspaces","memberships","invitations","wallet-credentials","emails","packages","support","dsgvo"]},{"name":"Öffentlich und Geräte","tags":["public","apple-passkit"]}]}