Änderungen
Dieses Changelog beschreibt sichtbare Änderungen am öffentlichen
Integrationsvertrag. Einträge erscheinen bevor inkompatibles Verhalten
ausgeliefert wird. Die maschinenlesbare Quelle bleibt
/openapi/public-v1.yaml.
Versionierung erfolgt über die URI /v1/. Siehe
Dokumentationsstandard.
2026-09-01 — Webhook-Eventkatalog
Abschnitt betitelt „2026-09-01 — Webhook-Eventkatalog“Kompatible Ergänzung der ausgehenden Webhooks. Bestehende Empfänger von
booking.created bleiben gültig: type, data.booking und data.course
bleiben; workspaceId, resource und weitere Snapshot-Felder kommen
additiv hinzu.
- Der Katalog umfasst jeden Typ aus
webhookEventTypes, inklusiveping. - Endpunkte dürfen
*abonnieren (Alle Events (auch künftige)) oder eine explizite Liste. - Envelope mit
workspaceIdundresource: { type, id }.dataträgt den Snapshot der Primärressource. - Personenbezogene Felder nur mit Scope
participants:read(Teilnehmerdaten mitsenden). - Zustellreihenfolge über Events hinweg ist nicht garantiert.
- Aufbewahrung: 30 Tage zugestellt, 90 Tage endgültig fehlgeschlagen.
- OpenAPI
public-v1.yamlbeschreibt jedes Event unterwebhooks:samtWebhookEnvelopeund Snapshot-Schemas.
2026-08-30: Begrenzter Kalenderfeed
Abschnitt betitelt „2026-08-30: Begrenzter Kalenderfeed“Inkompatible Begrenzung des Beta-Kalenderfeeds unter
/api/calendar/v1/{token}.ics. Kalenderprogramme müssen 429 beachten und
den Abruf nach Retry-After wiederholen.
- Ein Abruf enthält höchstens die frühesten 1.000 Termine, deren Beginn zwischen 30 Tagen vor und ausschließlich 365 Tagen nach dem Abrufzeitpunkt liegt.
- Pro Feed gelten 60 Abrufe in 15 Minuten. Pro Client gelten 240 Abrufe im selben Zeitraum. Die Zähler liegen persistent in PostgreSQL.
- GET und HEAD verbrauchen das Polling-Budget.
- Nach Überschreitung folgt
429/calendar_rate_limit_exceededmit einem dynamischenRetry-After-Header. - Zuletzt abgerufen wird höchstens einmal pro Stunde aktualisiert.
2026-08-30 — Cursor-Pagination für Kurse und Sitzungen
Abschnitt betitelt „2026-08-30 — Cursor-Pagination für Kurse und Sitzungen“Kompatible Ergänzung in /v1/. Anfragen ohne cursor liefern weiter die
erste Seite. Große Kataloge werden nicht mehr vollständig in einer Antwort
ausgeliefert.
GET /api/public/v1/coursespaginiert Kurse über QuerypageSizeundcursor. Standard und Maximum 50. Die Antwort enthältnextCursorundpageSize.- Jeder Kurs in der Liste enthält höchstens
pageSizeTermine, früheste zuerst. Weitere Termine liefertGET /api/public/v1/courses/{courseId}. GET /api/public/v1/courses/{courseId}paginiert Sitzungen mit denselben Query-Parametern.nextCursorgilt dort für Termine.- Ungültiger Cursor oder
pageSizeaußerhalb 1–50 ergeben400/invalid_pagination. - Die JSON-Antwort der Kursendpunkte ist zusätzlich auf 256 KiB begrenzt.
- Clients ohne Cursor bleiben gültig; sie erhalten die erste Seite statt der gesamten Sammlung.
2026-08-28 — Planabhängige Entwicklerfunktionen
Abschnitt betitelt „2026-08-28 — Planabhängige Entwicklerfunktionen“Kompatible Ergänzung in /v1/. Bestehende Keys in Plänen mit Entwickler-API
verhalten sich unverändert.
- Neuer Fehlercode
capability_not_in_planmit Status403, wenn der Plan des Arbeitsbereichs die Entwickler-API nicht enthält - Derselbe Code mit
403am Kalenderfeed/api/calendar/v1/{token}.ics, wenn der Plan keine Kalenderfeeds enthält - Der Code ist in
ErrorBody.codeinpublic-v1.yamlaufgenommen capability_not_in_planverschwindet nicht durch einen neuen Key oder zusätzliche Scopes, sondern nur durch einen Planwechsel- Das Anlegen von API-Keys, Kalenderfeeds und Webhook-Endpunkten im Dashboard ist an dieselbe Planfunktion gebunden
GET /api/public/v1/bookingsdokumentiert jetzt zusätzlich405/method_not_allowed; das Verhalten galt schon vorher für alle Methoden außerGET
2026-08-25 — Lesende Kursfelder und Kursdetail
Abschnitt betitelt „2026-08-25 — Lesende Kursfelder und Kursdetail“Kompatible Ergänzung in /v1/.
GET /api/public/v1/courses/{courseId}mit Scopecourses:read- Kursobjekte enthalten zusätzlich
audience,offeringKind,priceInCents,capacityundwaitlistEnabled - Sitzungen enthalten zusätzlich
deliveryMode - Schreibende Methoden auf
/api/public/v1/liefern405/method_not_allowedmit HeaderAllow: GET - Unbekannte Kurs-IDs liefern
404/course_not_found - Der Bereich Integrationen zeigt nach dem Erstellen oder Rotieren eines Keys einen kopierbaren GET-Aufruf. Endpunkte und Scopes stehen in der Dokumentation.
2026-08-18 — Version 1 (Beta)
Abschnitt betitelt „2026-08-18 — Version 1 (Beta)“Erste dokumentierte öffentliche REST-API.
- Bearer-Keys
orb_api_*aus Integrationen - Scopes
courses:read,bookings:read,participants:read GET /api/public/v1/coursesundGET /api/public/v1/bookings- Buchungen enthalten
participantnur mitparticipants:read - Fehlerform
{ "error": { "code", "message" } } 401invalid_api_key,403missing_scope,429rate_limit_exceededmitRetry-After: 60- 120 Anfragen / 60 Sekunden / Key
Cache-Control: private, no-store- Bookings-Limit 100, keine Cursor-Pagination
- Kalenderfeed
/api/calendar/v1/{token}.ics - Webhook
booking.created, Headerx-orbinaut-signature, HTTPS, höchstens acht Versuche - Widget-API bleibt ein getrennter Vertrag unter
/api/widget/v1/

