Termine empfangen

Drei Schritte. Der dritte darf ablehnen — und das ist der Entwurf, kein Fehlerfall.

1 · AnbietenPetla berechnet mögliche Zeiten aus Ihrer Verfügbarkeit und den eigenen Buchungsregeln.
2 · ReservierenOptional. Petla hält den Slot, während der Halter das Formular ausfüllt.
3 · BuchenPetla schreibt den Termin. Ihr System prüft erneut und darf ablehnen.

1 · Anbieten Core

Petla berechnet die möglichen Zeiten selbst — aus der Verfügbarkeit, die Sie veröffentlicht haben, plus den eigenen Regeln: Dauer je Anliegen, Mindestvorlauf, Buchungshorizont, Mehrtier-Regeln, Fahrzeit bei Hausbesuchen.

Hinweis

Ihr System muss keine Slot-Suche implementieren. Das ist der Grund, warum Format busy ausreicht.

2 · Reservieren Extended

Die einzige Stelle, an der Petla Sie aufruft

Deshalb ist sie Extended. Alles andere in dieser Schnittstelle ist ein Aufruf von Ihnen an Petla, und genau das lässt einen Praxisrechner hinter einem Router die volle Integration betreiben. Eine Reservierung kann so nicht funktionieren: Damit die Praxis am Tresen nicht 10:20 vergibt, während ein Halter noch das Formular ausfüllt, muss die Sperre jetzt im echten Kalender erscheinen.

Wenn Ihr System keinen eingehenden HTTPS-Endpunkt bereitstellen kann, dürfen Sie appointments.hold nicht erklären.

Wer es kann, stellt zwei Operationen bereit — hold.create und hold.release:

Achtung

Ohne Reservierung bucht Petla direkt, und ein verlorenes Rennen erreicht den Tierhalter als fehlgeschlagene Buchung, nachdem er das Formular ausgefüllt hat. Das ist eine schlechtere Erfahrung, keine kaputte — und für Systeme, die vor Ort beim Kunden laufen, der Normalfall.

3 · Buchen und bestätigen Core

Ihr System empfängt den Termin (über den Ereignis-Strom), schreibt ihn in den Kalender und bestätigt:

POST /appointments/{id}/ack

{ "accepted": true, "externalId": "PMS-2026-0091" }

Oder Sie lehnen ab — mit maschinenlesbarem Grund

{ "accepted": false, "reason": "SLOT_TAKEN", "message": "…" }
GrundBedeutung
SLOT_TAKENDie Zeit wurde zwischen Veröffentlichung und Buchung in Ihrem System vergeben.
RESOURCE_UNAVAILABLEDer genannte Behandler arbeitet dann nicht.
CLIENT_BLOCKEDDie Praxis nimmt diesen Kunden nicht an.
OUT_OF_HOURSAußerhalb der tatsächlichen Öffnungszeiten.
REJECTED_BY_PRACTICEEin Mensch hat abgelehnt.
Das Zeitfenster beträgt 60 Sekunden

Weil der Tierhalter wartet. Petla hält die Bestätigungs-E-Mail zurück, bis Ihre Rückmeldung da ist oder das Fenster abläuft.

Danach bestätigt Petla dem Halter trotzdem — und eine später eintreffende Ablehnung wird zu einer Absage, die dem Halter mitgeteilt werden muss. Das ist für alle Beteiligten schlechter, und genau deshalb zählt das Fenster.

externalId ist die Kennung des Termins in Ihrem System. Petla speichert sie und nennt sie in jeder späteren Nachricht zu diesem Termin — auch im Support.

Kunden und Patienten zuordnen Extended

Petla schickt Halter und Tiere so mit, wie Petla sie führt. Ihr System entscheidet, ob das ein bestehender Kunde ist, und sagt es in der Bestätigung:

{ "clientMatch": { "outcome": "matched", "externalClientId": "K-4711" } }

outcome ist matched, created oder ambiguous.

Achtung

ambiguous ist eine echte Antwort und muss benutzt werden. Es bedeutet: Ihr System hat mehr als einen plausiblen Kunden gefunden und sich nicht entschieden. Petla legt das der Praxis vor, statt eine Buchung an die falsche Akte zu hängen.

Petla führt vorher eine eigene Zuordnung durch — exakte E-Mail zuerst, dann Telefon (letzte 9 Ziffern) und Nachname plus Geburtsdatum — und schickt maskierte Beinahe-Treffer mit. Benutzen Sie client.petlaBookerId als stabilen Schlüssel über Buchungen hinweg, statt jedes Mal neu zuzuordnen.

Achtung

Ein Kunde ohne E-Mail-Adresse wird mit einer synthetischen Adresse unter einer reservierten Domain übergeben (…@petla.internal). Diese Adresse darf nicht angezeigt und niemals angeschrieben werden.

Änderungen aus Ihrem System Extended

Eine Verschiebung oder Absage, die am Tresen passiert, muss gemeldet werden: POST /appointments/{id}/reschedule beziehungsweise /cancel.

Nicht tun

Ohne diese Meldung beschreiben Petlas Erinnerungen und die App des Tierhalters weiterhin einen Termin, den es nicht mehr gibt.

Die Versionsnummer je Termin

Jeder Termin trägt version, eine je Termin monoton steigende Ganzzahl. Sie ist die einzige Antwort auf Reihenfolge, Dopplung und Veralten: Wer Version 3 bereits angewendet hat, muss Version 2 ignorieren, wenn sie verspätet eintrifft.

Achtung

Sortieren Sie nach version, nie nach einem Zeitstempel.