Endpoints / getBookings

getBookings

Eingegangene Onlinebuchungen abfragen

Onlinebuchungen eines Zeitraums, paginiert. Der Zeitraum wirkt auf das Buchungsdatum — also darauf, wann die Anfrage einging, nicht auf den Termin selbst. Gelöschte und stornierte Buchungen werden nie geliefert.

HTTP Request

POST https://dev.vitabyte.ch/v1/booking/getBookings
Auth basicAuth apiKey

Request Parameters

Der Filter kennt genau zwei Felder, beide Pflicht: from und to als Buchungsdatum, beide Enden inklusive. Erlaubt sind YYYY-MM-DD, DD.MM.YYYY und ein vollständiger ISO-8601-Zeitstempel. Unbekannte Parameter und unbekannte Filter-Felder werden mit HTTP 400 abgelehnt.

Parameter Pflicht Typ Beispiel / Default
filter

Zeitraum des Buchungsdatums, siehe Hinweis oben.

required object
{"from":"2026-01-01","to":"2026-12-31"}
offset

Negative Werte werden auf 0 angehoben.

optional integer
default: 0
limit

Maximum 1000; höhere Werte werden gekappt.

optional integer
default: 100
100
orderBy

created sortiert nach Buchungsdatum. Andere Werte als die drei genannten werden abgelehnt.

optional string
enum: created | bookingId | lastname
default: created
created
orderDir

Sortierrichtung.

optional string
enum: asc | desc
default: desc
desc
fields

Sparse Fieldset auf die Top-Level-Felder; bookingId ist immer enthalten.

optional array
["bookingId","createdAt","appointment"]

Response Parameters

Envelope: { status, msg, result, pagination } mit pagination: { offset, limit, total, hasMore }. Fehler kommen mit HTTP 400 und status: false — anders als getServices, getSlots und getLocations, die Fachfehler mit HTTP 200 melden.

Field Typ Beschreibung
bookingId integer ID der Buchung
status string P = unbestätigt, C = bestätigt
createdAt string Buchungsdatum als ISO-8601-Zeitstempel
source string Onedoc bei Import über OneDoc, sonst E-PAT
trackingSource string Freitext aus dem Buchungsformular, etwa die Kampagne
locationId, location integer, string Filiale als ID und als Name
serviceId, service integer, string Gebuchte Leistung als ID und als Name
careProviderId integer Gewählter Behandler als User-ID — nicht die Kalender-ID, die steht in appointment.calendarId
duration integer Dauer der Leistung in Minuten
price, specialPrice number Preis und Aktionspreis; specialPrice ist null, wenn keiner hinterlegt ist
patientId integer Verknüpfter Patient, null solange keine Zuordnung besteht — bei Buchungen von Neukunden der Normalfall
comment string Freitext, den die buchende Person im Formular hinterlassen hat
smsSent boolean Ob die Bestätigungs-SMS verschickt wurde
contact object salutation, firstname, lastname, dob, street, zip, city, country, countryCode, email, phone, mobile. Das sind die Angaben aus dem Buchungsformular, keine Patientenstammdaten — der Endpoint liest die Patiententabelle nicht. Bei Neukunden ist das die einzige Identifikation, weil patientId dann null ist.
insurance object provider, supplementary, vekaNumber — ebenfalls aus dem Buchungsformular, oft leer
appointment object Der verknüpfte Termin mit eventId, start, end, duration, calendarId, calendar, provisional und calendarIds — oder null, wenn kein Termin verknüpft ist. Bei Leistungen mit Zusatzkalendern entstehen mehrere Termine; calendarId ist der Haupttermin, calendarIds listet alle.

Demo

Referenz und Beispiele stammen aus der internen API-Collection — die OpenAPI-Spec deckt diesen Endpoint noch nicht ab.

POST https://dev.vitabyte.ch/v1/booking/getBookings
Payload
{
    "filter": {
        "from": "2026-01-01",
        "to": "2026-12-31"
    },
    "offset": 0,
    "limit": 100,
    "orderBy": "created",
    "orderDir": "desc"
}
Response
{
    "status": true,
    "msg": "Success",
    "result": [
        {
            "bookingId": 4711,
            "status": "C",
            "createdAt": "2026-08-03T09:14:00+02:00",
            "source": "E-PAT",
            "trackingSource": "google-ads",
            "locationId": 12,
            "location": "Zürich",
            "serviceId": 54,
            "service": "Erstkonsultation",
            "careProviderId": 12,
            "duration": 30,
            "price": 120,
            "specialPrice": null,
            "patientId": null,
            "comment": "Bitte am Vormittag",
            "smsSent": false,
            "contact": {
                "salutation": "MS",
                "firstname": "Anna",
                "lastname": "Muster",
                "dob": "1984-03-12",
                "street": "Bahnhofstrasse 1",
                "zip": "8001",
                "city": "Zürich",
                "country": "Schweiz",
                "countryCode": "CH",
                "email": "anna.muster@example.ch",
                "phone": "044 111 22 33",
                "mobile": ""
            },
            "insurance": {
                "provider": "Helsana",
                "supplementary": "",
                "vekaNumber": ""
            },
            "appointment": {
                "eventId": 98123,
                "start": "2026-08-20T09:00:00+02:00",
                "end": "2026-08-20T09:30:00+02:00",
                "duration": 30,
                "calendarId": 7,
                "calendar": "Dr. med. Muster",
                "provisional": false,
                "calendarIds": [
                    7,
                    9
                ]
            }
        },
        {
            "bookingId": 4708,
            "status": "P",
            "createdAt": "2026-07-29T16:02:00+02:00",
            "source": "Onedoc",
            "trackingSource": "",
            "locationId": 12,
            "location": "Zürich",
            "serviceId": 57,
            "service": "Beratung",
            "careProviderId": 14,
            "duration": 15,
            "price": 60,
            "specialPrice": null,
            "patientId": 8042,
            "comment": "",
            "smsSent": false,
            "contact": {
                "salutation": "MR",
                "firstname": "Max",
                "lastname": "Mustermann",
                "dob": "1979-11-02",
                "street": "Seestrasse 9",
                "zip": "8002",
                "city": "Zürich",
                "country": "Schweiz",
                "countryCode": "CH",
                "email": "max@example.com",
                "phone": "044 222 33 44",
                "mobile": "079 000 00 02"
            },
            "insurance": {
                "provider": "CSS",
                "supplementary": "",
                "vekaNumber": ""
            },
            "appointment": null
        }
    ],
    "pagination": {
        "offset": 0,
        "limit": 100,
        "total": 2,
        "hasMore": false
    }
}