Zum Hauptinhalt springen

Terminplanung

Verwalten Sie die Terminplanungs-Konfiguration Ihrer Organisation per API-Schlüssel statt über die Admin-Oberfläche. Sie können geplante Termine auflisten und stornieren, Termintypen und deren Erinnerungen verwalten sowie die wiederkehrenden Verfügbarkeitsregeln jedes Arztes konfigurieren. Alle Endpunkte sind auf die Organisation beschränkt, der der API-Schlüssel gehört. UIDs, die zu einer anderen Organisation gehören, werden als nicht gefunden behandelt.

Berechtigungen

Die Terminplanungs-Endpunkte werden durch zwei Berechtigungen gesteuert:
  • scheduling:read — erforderlich für alle Lese-Endpunkte (GET).
  • scheduling:admin — erforderlich für alle Schreib-Endpunkte (POST, PATCH, DELETE).
Ein Schlüssel mit scheduling:admin erhält nicht automatisch scheduling:read; fügen Sie beide hinzu, wenn Sie lesen und schreiben müssen. Wenden Sie sich an Ihren RxScale-Ansprechpartner, um Berechtigungen anzupassen. Alle Anfragen authentifizieren sich über den Header X-API-Key. Details finden Sie unter Authentifizierung.

Termine

Termine auflisten

GET /v1/management/scheduling/appointments
Gibt eine paginierte Liste der geplanten Termine der Organisation zurück. Erforderliche Berechtigung: scheduling:read
page
integer
Standard:"0"
Seitenzahl (0-basiert)
limit
integer
Standard:"50"
Anzahl der Termine pro Seite
doctor_uid
string
Termine nach Arzt-UID filtern
patient_uid
string
Termine nach Patienten-UID filtern
status
string
Nach Terminstatus filtern. Einer von held, confirmed, cancelled, expired, completed, no_show oder all. Wird der Wert weggelassen, gilt die serverseitige Standardfilterung.
from
integer
Termine ab diesem Unix-Zeitstempel (einschließlich) filtern
to
integer
Termine bis zu diesem Unix-Zeitstempel (einschließlich) filtern. Muss größer als from sein, wenn beide angegeben werden.

Beispielanfrage

curl -X GET "https://api.rxscale.com/v1/management/scheduling/appointments?page=0&limit=25&status=confirmed" \
  -H "X-API-Key: your-api-key-here"

Antwort

{
  "data": [
    {
      "uid": "mtg-abc123",
      "status": "confirmed",
      "doctor_uid": "doc-456",
      "doctor_display_name": "Dr. Schmidt",
      "patient_uid": "pat-789",
      "patient_display_name": "Jane Doe",
      "appointment_type_uid": "apt-001",
      "appointment_type_name": "Initial consultation",
      "meeting_type": "CONSULTATION",
      "meeting_format": "DIGITAL",
      "start_date": 1712300000,
      "end_date": 1712301800,
      "created_at": 1712200000,
      "cancelled_at": null,
      "cancellation_reason": null
    }
  ],
  "totalRegistries": 42,
  "totalPages": 2
}

Antwortfelder

FeldTypBeschreibung
data[].uidstringUID des geplanten Termins
data[].statusstringTerminstatus (held, confirmed, cancelled, expired, completed, no_show)
data[].doctor_uidstringArzt-UID
data[].doctor_display_namestringAnzeigename des Arztes
data[].patient_uidstringPatienten-UID
data[].patient_display_namestringAnzeigename des Patienten
data[].appointment_type_uidstring | nullUID des Termintyps, falls vorhanden
data[].appointment_type_namestring | nullName des Termintyps, falls vorhanden
data[].meeting_typestringTerminart (z. B. CONSULTATION, FOLLOW_UP, INITIAL, REVIEW, ON_DEMAND)
data[].meeting_formatstringTerminformat (DIGITAL, IN_PERSON)
data[].start_dateintegerStartzeit (Unix-Zeitstempel)
data[].end_dateintegerEndzeit (Unix-Zeitstempel)
data[].created_atintegerErstellungszeitpunkt (Unix)
data[].cancelled_atinteger | nullStornierungszeitpunkt (Unix), falls storniert
data[].cancellation_reasonstring | nullBei der Stornierung angegebener Grund, falls storniert
totalRegistriesintegerGesamtzahl der Termine, die dem Filter entsprechen
totalPagesintegerGesamtzahl der Seiten

Einen Termin stornieren

POST /v1/management/scheduling/appointments/{meeting_uid}/cancel
Storniert einen geplanten Termin und erfasst den angegebenen Grund. Erforderliche Berechtigung: scheduling:admin
meeting_uid
string
erforderlich
Die UID des geplanten Termins
reason
string
erforderlich
Grund für die Stornierung des Termins (darf nicht leer sein)

Beispielanfrage

curl -X POST "https://api.rxscale.com/v1/management/scheduling/appointments/mtg-abc123/cancel" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Patient requested cancellation"
  }'

Antwort

{
  "appointment_uid": "mtg-abc123",
  "status": "cancelled",
  "cancelled_at": 1712250000,
  "cancellation_reason": "Patient requested cancellation"
}

Termintypen

Ein Termintyp definiert eine buchbare Art von Termin (Dauer, Reservierungsverhalten, Raum- und Umbuchungsstrategie).

Termintypen auflisten

GET /v1/management/scheduling/appointment-types
Erforderliche Berechtigung: scheduling:read

Beispielanfrage

curl -X GET "https://api.rxscale.com/v1/management/scheduling/appointment-types" \
  -H "X-API-Key: your-api-key-here"

Antwort

{
  "data": [
    {
      "uid": "apt-001",
      "organisation_uid": "org-123",
      "name": "Initial consultation",
      "meeting_type": "CONSULTATION",
      "duration_minutes": 30,
      "hold_ttl_seconds": 900,
      "booking_min_notice_minutes": 10,
      "cancellation_min_notice_minutes": 60,
      "rebooking_min_notice_minutes": 120,
      "room_strategy": "persistent_per_provider",
      "rebooking_mode": "same_doctor_only",
      "doctor_assignment_mode": "all_available_doctors",
      "allow_patient_rebooking": true,
      "active": true,
      "created_at": 1712100000,
      "updated_at": 1712100000
    }
  ]
}

Einen Termintyp erstellen

POST /v1/management/scheduling/appointment-types
Erforderliche Berechtigung: scheduling:admin
name
string
erforderlich
Anzeigename (1–255 Zeichen)
meeting_type
string
erforderlich
Terminart. Einer von CONSULTATION, FOLLOW_UP, INITIAL, REVIEW, ON_DEMAND.
duration_minutes
integer
erforderlich
Termindauer in Minuten (1–1440)
hold_ttl_seconds
integer
erforderlich
Wie lange eine vorläufige Reservierung gilt, bevor sie abläuft, in Sekunden (1–86400)
booking_min_notice_minutes
integer
Standard:"0"
Standard-Mindestvorlauf, bevor Patienten diese Terminart buchen können, in Minuten. Arztspezifische Einstellungen können diesen Wert überschreiben.
cancellation_min_notice_minutes
integer
Standard:"0"
Mindestvorlaufzeit für eine Stornierung, in Minuten (≥ 0)
rebooking_min_notice_minutes
integer
Standard:"0"
Mindestvorlaufzeit für eine Umbuchung, in Minuten (≥ 0)
room_strategy
string
erforderlich
Strategie zur Raumzuweisung. Einer von persistent_per_provider, per_appointment.
rebooking_mode
string
erforderlich
Umbuchungsmodus. Einer von same_doctor_only, any_doctor_same_organisation.
doctor_assignment_mode
string
Standard:"all_available_doctors"
Steuert, welche Ärzte diese Terminart anbieten können. Nutzen Sie all_available_doctors für alle Ärzte mit Verfügbarkeit oder selected_doctors_only, wenn eine aktive arztspezifische Einstellung erforderlich sein soll.
allow_patient_rebooking
boolean
Standard:"false"
Ob Patienten ihre eigenen Termine dieses Typs umbuchen dürfen
active
boolean
Standard:"true"
Ob der Termintyp buchbar ist

Beispielanfrage

curl -X POST "https://api.rxscale.com/v1/management/scheduling/appointment-types" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Initial consultation",
    "meeting_type": "CONSULTATION",
    "duration_minutes": 30,
    "hold_ttl_seconds": 900,
    "booking_min_notice_minutes": 10,
    "cancellation_min_notice_minutes": 60,
    "rebooking_min_notice_minutes": 120,
    "room_strategy": "persistent_per_provider",
    "rebooking_mode": "same_doctor_only",
    "doctor_assignment_mode": "all_available_doctors",
    "allow_patient_rebooking": true,
    "active": true
  }'
Gibt 201 Created mit dem erstellten Termintyp zurück (gleiche Struktur wie ein Listeneintrag).

Einen Termintyp aktualisieren

PATCH /v1/management/scheduling/appointment-types/{appointment_type_uid}
Teilaktualisierung — nur die gesendeten Felder werden geändert. Alle Body-Felder sind optional und akzeptieren dieselben Werte und Bereiche wie beim Erstellen. Erforderliche Berechtigung: scheduling:admin
appointment_type_uid
string
erforderlich
Die UID des Termintyps
name
string
Anzeigename (1–255 Zeichen)
meeting_type
string
Einer von CONSULTATION, FOLLOW_UP, INITIAL, REVIEW, ON_DEMAND
duration_minutes
integer
Termindauer in Minuten (1–1440)
hold_ttl_seconds
integer
Lebensdauer der Reservierung in Sekunden (1–86400)
booking_min_notice_minutes
integer
Standard-Mindestvorlauf für Buchungen in Minuten (≥ 0)
cancellation_min_notice_minutes
integer
Mindestvorlaufzeit für eine Stornierung in Minuten (≥ 0)
rebooking_min_notice_minutes
integer
Mindestvorlaufzeit für eine Umbuchung in Minuten (≥ 0)
room_strategy
string
Einer von persistent_per_provider, per_appointment
rebooking_mode
string
Einer von same_doctor_only, any_doctor_same_organisation
doctor_assignment_mode
string
Einer von all_available_doctors, selected_doctors_only
allow_patient_rebooking
boolean
Ob Patienten ihre eigenen Termine dieses Typs umbuchen dürfen
active
boolean
Ob der Termintyp buchbar ist

Beispielanfrage

curl -X PATCH "https://api.rxscale.com/v1/management/scheduling/appointment-types/apt-001" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "duration_minutes": 45,
    "active": false
  }'
Gibt 200 OK mit dem aktualisierten Termintyp zurück.

Einen Termintyp löschen

DELETE /v1/management/scheduling/appointment-types/{appointment_type_uid}
Erforderliche Berechtigung: scheduling:admin
appointment_type_uid
string
erforderlich
Die UID des Termintyps

Beispielanfrage

curl -X DELETE "https://api.rxscale.com/v1/management/scheduling/appointment-types/apt-001" \
  -H "X-API-Key: your-api-key-here"
Gibt bei Erfolg 204 No Content zurück.

Erinnerungen

Erinnerungen werden pro Termintyp konfiguriert und benachrichtigen eine Empfängerrolle eine feste Anzahl von Minuten vor Beginn des Termins.

Erinnerungen auflisten

GET /v1/management/scheduling/appointment-types/{appointment_type_uid}/reminders
Erforderliche Berechtigung: scheduling:read
appointment_type_uid
string
erforderlich
Die UID des Termintyps

Beispielanfrage

curl -X GET "https://api.rxscale.com/v1/management/scheduling/appointment-types/apt-001/reminders" \
  -H "X-API-Key: your-api-key-here"

Antwort

{
  "data": [
    {
      "uid": "rem-001",
      "appointment_type_uid": "apt-001",
      "recipient_role": "patient",
      "minutes_before": 1440,
      "send_email": true,
      "send_sms": false,
      "active": true
    }
  ]
}

Antwortfelder

FeldTypBeschreibung
data[].uidstringUID der Erinnerung
data[].appointment_type_uidstringUID des übergeordneten Termintyps
data[].recipient_rolestringWer benachrichtigt wird (patient, doctor, admin)
data[].minutes_beforeintegerMinuten vor dem Termin zum Senden
data[].send_emailbooleanOb eine E-Mail gesendet wird
data[].send_smsbooleanOb eine SMS gesendet wird
data[].activebooleanOb die Erinnerung aktiv ist

Eine Erinnerung erstellen

POST /v1/management/scheduling/appointment-types/{appointment_type_uid}/reminders
Erforderliche Berechtigung: scheduling:admin
appointment_type_uid
string
erforderlich
Die UID des Termintyps
recipient_role
string
erforderlich
Wer benachrichtigt wird. Einer von patient, doctor, admin.
minutes_before
integer
erforderlich
Minuten vor dem Termin zum Senden der Erinnerung (1–86400, also bis zu 60 Tage)
send_email
boolean
Standard:"false"
Ob eine E-Mail gesendet wird
send_sms
boolean
Standard:"false"
Ob eine SMS gesendet wird
active
boolean
Standard:"true"
Ob die Erinnerung aktiv ist

Beispielanfrage

curl -X POST "https://api.rxscale.com/v1/management/scheduling/appointment-types/apt-001/reminders" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient_role": "patient",
    "minutes_before": 1440,
    "send_email": true,
    "send_sms": false,
    "active": true
  }'
Gibt 201 Created mit der erstellten Erinnerung zurück (gleiche Struktur wie ein Listeneintrag).

Eine Erinnerung aktualisieren

PATCH /v1/management/scheduling/appointment-types/{appointment_type_uid}/reminders/{reminder_uid}
Teilaktualisierung — nur die gesendeten Felder werden geändert. Erforderliche Berechtigung: scheduling:admin
appointment_type_uid
string
erforderlich
Die UID des Termintyps
reminder_uid
string
erforderlich
Die UID der Erinnerung
recipient_role
string
Einer von patient, doctor, admin
minutes_before
integer
Minuten vor dem Termin zum Senden der Erinnerung (1–86400)
send_email
boolean
Ob eine E-Mail gesendet wird
send_sms
boolean
Ob eine SMS gesendet wird
active
boolean
Ob die Erinnerung aktiv ist

Beispielanfrage

curl -X PATCH "https://api.rxscale.com/v1/management/scheduling/appointment-types/apt-001/reminders/rem-001" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "minutes_before": 60,
    "send_sms": true
  }'
Gibt 200 OK mit der aktualisierten Erinnerung zurück.

Eine Erinnerung löschen

DELETE /v1/management/scheduling/appointment-types/{appointment_type_uid}/reminders/{reminder_uid}
Erforderliche Berechtigung: scheduling:admin
appointment_type_uid
string
erforderlich
Die UID des Termintyps
reminder_uid
string
erforderlich
Die UID der Erinnerung

Beispielanfrage

curl -X DELETE "https://api.rxscale.com/v1/management/scheduling/appointment-types/apt-001/reminders/rem-001" \
  -H "X-API-Key: your-api-key-here"
Gibt bei Erfolg 204 No Content zurück.

Verfügbarkeitsregeln

Verfügbarkeitsregeln definieren die wiederkehrenden wöchentlichen Buchungsfenster eines Arztes. Zeiten werden als Minuten ab Mitternacht angegeben (zum Beispiel ist 540 09:00 Uhr und 1020 17:00 Uhr).

Verfügbarkeitsregeln auflisten

GET /v1/management/scheduling/doctors/{doctor_uid}/availability-rules
Erforderliche Berechtigung: scheduling:read
doctor_uid
string
erforderlich
Die Arzt-UID

Beispielanfrage

curl -X GET "https://api.rxscale.com/v1/management/scheduling/doctors/doc-456/availability-rules" \
  -H "X-API-Key: your-api-key-here"

Antwort

{
  "data": [
    {
      "uid": "rule-001",
      "doctor_uid": "doc-456",
      "weekday": 0,
      "start_time": 540,
      "end_time": 1020,
      "buffer_minutes": 10,
      "valid_from": null,
      "valid_until": null,
      "active": true
    }
  ]
}

Antwortfelder

FeldTypBeschreibung
data[].uidstringUID der Verfügbarkeitsregel
data[].doctor_uidstringArzt-UID
data[].weekdayintegerWochentag (0 = Montag … 6 = Sonntag)
data[].start_timeintegerBeginn des Fensters, in Minuten ab Mitternacht (0–1440)
data[].end_timeintegerEnde des Fensters, in Minuten ab Mitternacht (0–1440)
data[].buffer_minutesintegerPuffer zwischen Terminen, in Minuten
data[].valid_frominteger | nullOptionaler Gültigkeitsbeginn (Unix-Zeitstempel)
data[].valid_untilinteger | nullOptionales Gültigkeitsende (Unix-Zeitstempel)
data[].activebooleanOb die Regel aktiv ist

Eine Verfügbarkeitsregel erstellen

POST /v1/management/scheduling/doctors/{doctor_uid}/availability-rules
Erforderliche Berechtigung: scheduling:admin
doctor_uid
string
erforderlich
Die Arzt-UID
weekday
integer
erforderlich
Wochentag (0 = Montag … 6 = Sonntag)
start_time
integer
erforderlich
Beginn des Fensters, in Minuten ab Mitternacht (0–1440)
end_time
integer
erforderlich
Ende des Fensters, in Minuten ab Mitternacht (0–1440)
buffer_minutes
integer
Standard:"0"
Puffer zwischen Terminen, in Minuten (≥ 0)
valid_from
integer
Optionaler Gültigkeitsbeginn (Unix-Zeitstempel)
valid_until
integer
Optionales Gültigkeitsende (Unix-Zeitstempel)
active
boolean
Standard:"true"
Ob die Regel aktiv ist

Beispielanfrage

curl -X POST "https://api.rxscale.com/v1/management/scheduling/doctors/doc-456/availability-rules" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "weekday": 0,
    "start_time": 540,
    "end_time": 1020,
    "buffer_minutes": 10,
    "active": true
  }'
Gibt 201 Created mit der erstellten Verfügbarkeitsregel zurück (gleiche Struktur wie ein Listeneintrag).

Eine Verfügbarkeitsregel aktualisieren

PATCH /v1/management/scheduling/doctors/{doctor_uid}/availability-rules/{rule_uid}
Teilaktualisierung — nur die gesendeten Felder werden geändert. Um eine vorhandene Gültigkeitsgrenze zu entfernen, senden Sie das entsprechende clear_*-Flag anstelle eines Werts. Erforderliche Berechtigung: scheduling:admin
doctor_uid
string
erforderlich
Die Arzt-UID
rule_uid
string
erforderlich
Die UID der Verfügbarkeitsregel
weekday
integer
Wochentag (0 = Montag … 6 = Sonntag)
start_time
integer
Beginn des Fensters, in Minuten ab Mitternacht (0–1440)
end_time
integer
Ende des Fensters, in Minuten ab Mitternacht (0–1440)
buffer_minutes
integer
Puffer zwischen Terminen, in Minuten (≥ 0)
valid_from
integer
Gültigkeitsbeginn setzen (Unix-Zeitstempel)
valid_until
integer
Gültigkeitsende setzen (Unix-Zeitstempel)
active
boolean
Ob die Regel aktiv ist
clear_valid_from
boolean
Standard:"false"
Vorhandene valid_from-Grenze entfernen (auf null setzen)
clear_valid_until
boolean
Standard:"false"
Vorhandene valid_until-Grenze entfernen (auf null setzen)

Beispielanfrage

curl -X PATCH "https://api.rxscale.com/v1/management/scheduling/doctors/doc-456/availability-rules/rule-001" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "end_time": 960,
    "clear_valid_until": true
  }'
Gibt 200 OK mit der aktualisierten Verfügbarkeitsregel zurück.

Eine Verfügbarkeitsregel löschen

DELETE /v1/management/scheduling/doctors/{doctor_uid}/availability-rules/{rule_uid}
Erforderliche Berechtigung: scheduling:admin
doctor_uid
string
erforderlich
Die Arzt-UID
rule_uid
string
erforderlich
Die UID der Verfügbarkeitsregel

Beispielanfrage

curl -X DELETE "https://api.rxscale.com/v1/management/scheduling/doctors/doc-456/availability-rules/rule-001" \
  -H "X-API-Key: your-api-key-here"
Gibt bei Erfolg 204 No Content zurück.