Swoppen Soferu REST API (1.0)

Download OpenAPI specification:

MCP: POST https://{host}/API/mcp Erfordert die Lizenz Soferu AI. Zugang ist der bestehende API-Host. Authorization: Bearer mit dem API-Schlüssel, oder Basic Auth mit Login und Schlüssel. Werkzeuge sind die REST-Endpunkte, die für diesen Zugang freigeschaltet sind.

API-Changesets (neueste zuerst):

2026-10-08 — Nachrichten: Unterhaltungen und E-Mail

Pfade: /messages, /messages/{thread_key}

  • GET /messages listet Unterhaltungen. Filter: source (whatsapp, bookingcom, email, nr), cms_address_id, unread=1.
  • GET /messages/{thread_key} liefert den Verlauf. thread_key ist source:contact.
  • POST /messages antwortet über denselben Kanal. E-Mail braucht subject und eine Adresse als contact.

2026-10-08 — Tickets: Bearbeiter und Benutzer-Login

Pfade: /tickets/{id}, /users

  • Tickets: ohne cms_client_id gilt für diesen Zugang cms_client_id=1. Ein gesetzter Wert bleibt gültig.
  • GET /users ignoriert cms_client_id. username filtert den Login exakt, ohne Wildcard. Unbekannt ergibt eine leere Liste und HTTP 200.
  • PATCH /tickets/{id} setzt den Bearbeiter über genau eines von bv_user_id oder username. Unbekannter Benutzer: HTTP 404, Ticket unverändert.

2026-10-07 — Tickets: Status und interne Notiz

Pfade: /tickets/{id}

  • PATCH /tickets/{sp_ticket_id} setzt status und/oder note. Leere Felder bleiben unverändert.
  • status: 1 offen, 2 in Bearbeitung, 3 Wiedervorlage, 4 erledigt, 9 abgelehnt. Erledigt und Abgelehnt setzen das Abschlussdatum.
  • note ist eine interne Notiz im Ticketverlauf, höchstens 8000 Zeichen, ohne E-Mail an den Kunden.

2026-10-07 — Dienstplan: wer Schicht hat

Pfade: /shifts

  • GET /shifts: geplante Schichten eines Tages, gruppiert nach Tätigkeitsbereich. date ist Y-m-d, Standard heute.
  • personnel trägt Name und per_personnel_id. Telefon und E-Mail bleiben draussen. Bewerbungen und Tausch zählen nicht.
  • published 0 ist ein Entwurf, 1 ist veröffentlicht.
  • Optional per_activity_id und st_branch_id. Nur Lesen. Auth: HostLimitation auf die Schnittstelle shifts.

2026-10-07 — Belegungen: Gäste je Zimmer

Pfade: /bookings/{id}

  • GET /bookings/{id}: items[].guests mit Name, Geburtsdatum, Land und Meldeschein-Status.
  • Der Bucher bleibt cms_address_id. Die Liste GET /bookings enthält keine Gäste.

2026-10-07 — Tagesboard: Anreisen, Abreisen, im Haus, Bleiber, offene Salden

Pfade: /bookings/dayboard

  • GET /bookings/dayboard: Zimmerzeilen eines Tages. date ist Y-m-d, Standard heute.
  • arrivals: Anreise an diesem Tag. departures: Abreise an diesem Tag.
  • in_house: Übernachtung in dieser Nacht (Anreise am oder vor dem Tag, Abreise danach). stayovers: Bleiber, Anreise vor dem Tag und Abreise danach.
  • open_balances: Belegungen aus diesen Listen mit sum_open > 0, einmal je Belegung.
  • section liefert nur eine Liste. counts bleibt der ganze Tag. Zähler sind Zimmerzeilen, Personen ist quantity.
  • Ohne Storno, No-Show, Sperre und Kontingent. Auth: HostLimitation auf die Schnittstelle bookings.

2026-10-06 — Belege: Anlegen mit Positionen

Pfade: /vouchers

  • POST /vouchers legt einen Beleg an. Pflicht: st_customer_id, st_voucher_type_id (Belegart des Mandanten, z. B. Angebot).
  • positions[]: Artikelzeile mit st_article_id. Ohne price gilt der Preis der Preisliste, mit price der übergebene Stückpreis in der Preisart der Belegart. Textzeile nur mit text.
  • Antwort HTTP 201 mit dem Beleg inklusive positions[]. Die Liste GET /vouchers bleibt auf Rechnungen (Belegstufe 5); andere Belegstufen über GET /vouchers/{vk_voucher_no}.

2026-10-02 — Belegungen: Änderungsdatum

Pfade: /bookings

  • GET /bookings: jede Zeile enthält created_date und modified_date der Zimmerzeile (Y-m-d H:i:s).
  • created_date und modified_date filtern denselben Kalendertag. Erlaubt ist Y-m-d und TT.MM.JJJJ, optional mit Präfix >=, >, <=, < oder !.

2026-10-01 — Belege: Liste ohne Pflichtfilter

Pfade: /vouchers

  • rm_booking_id an GET /vouchers ist optional. Ohne den Parameter kommen die Rechnungen (Belegstufe 5) des Mandanten, paginiert über page und limit (Standard 25, höchstens 250).
  • pagination.total ist die Trefferzahl des Filters.

2026-10-01 — Belege: Positionen am Einzelabruf

Pfade: /vouchers/{id}

  • GET /vouchers/{vk_voucher_no} liefert positions[] aus den Belegzeilen. Die Liste GET /vouchers bleibt ohne Positionen.
  • Jede Zeile trägt Artikel, Menge, Preis, Steuer und Summe. vk_position_pool_id verweist auf die Leistung, aus der die Zeile entstanden ist. kind ist A für Artikel und T für Text.

2026-10-01 — Belegungen: Leistungen und Dokumente

Pfade: /bookings/{id}/services, /bookings/{id}/documents

  • GET /bookings/{id}/services ist ein Alias für GET /services und liefert die Leistungen dieser Belegung.
  • GET|POST /bookings/{id}/documents hängt ein PDF (höchstens 2 MB) an die Dokumente der Belegung.

2026-10-01 — Dokumente: PDF an Belegung

Pfade: /documents, /documents/{id}, /bookings/{id}/documents

  • POST /documents speichert ein PDF (Base64, höchstens 2 MB). Für Belegungen: cms_object=rm_booking_id, Datei unter Dokumente der Belegung.
  • Alias: POST /bookings/{id}/documents und GET /bookings/{id}/documents.
  • request_id ist die Id dieser Anfrage im Zugriffsprotokoll.

2026-10-01 — Leistungen: Abfrage, external_id, Formate

Pfade: /services, /bookings/{id}/services

  • GET /services liest Leistungen einer Belegung oder Zimmerposition, einschließlich noch nicht abgerechneter (vk_voucher_no leer). Alias: GET /bookings/{id}/services.
  • external_id (max. 50 Zeichen) wird an der Leistung gespeichert. Dieselbe Id legt keine zweite Leistung an und liefert die ursprüngliche vk_position_pool_id (idempotent: true, HTTP 200).
  • Menge und Preis akzeptieren Punkt und Dezimalkomma. price ist der Stückpreis in der Preisart des Mandanten. Gespeichert wird auf vier Nachkommastellen gerundet.
  • Check-out sperrt die Buchung nicht. warning ist gesetzt, wenn die Zimmerposition bereits ausgecheckt ist.
  • Antwort enthält request_id für das Zugriffsprotokoll.

2026-09-17 — FiBu Export: DATEV-Paket Buchungssätze + Belegbilder

Pfade: /fibu/export

  • Neues Format datev_both: ein ZIP mit Buchungsstapel.zip und Belege.zip.
  • Erlaubte format-Werte: datev, datev_xml, datev_both, diamant.

2026-09-08 — Tisch-Reservierungen

Pfade: /tables, /tables/{id}, /tables/{id}/checkin, /tables/{id}/checkout

  • GET/POST /tables: Liste und Anlegen von Tisch-Reservierungen (Katalog TR).
  • from/until als DateTime. Ohne until gilt die Reservierungsdauer aus den TR-Einstellungen.
  • Ohne rm_resource_id wird ein freier Tisch im Zeitraum zugeordnet (HTTP 409 wenn keiner frei ist).

2026-09-02 — Resources: gesperrte Zeiträume in der Occupancy

Pfade: /resources, /resources/{id}

  • Occupancy: is_locked (1 = gesperrter Zeitraum, kein Gast). note ist dann der Sperrgrund.
  • Sperren ohne Belegungskopf erscheinen in der Occupancy (LEFT JOIN auf Belegungen).

2026-09-02 — Belegungen: gesperrte Zeiträume

Pfade: /bookings, /bookings/{id}

  • GET /bookings listet keine gesperrten Zeiträume (is_locked=1).
  • POST /bookings mit konkretem Zimmer: HTTP 409 wenn das Zimmer im Zeitraum gesperrt oder belegt ist.

2026-09-02 — Gesperrte Zeiträume: Liste, Anlegen, Ändern, Löschen

Pfade: /locked-ranges, /locked-ranges/{id}

  • GET /locked-ranges: Sperren ab heute, optional date_from / date_until / rm_resource_id.
  • POST /locked-ranges: anlegen. Pflicht: rm_resource_id (oder Array), from, until. Optional note, color. Mehrere Zimmer in einem Request.
  • POST/PATCH / DELETE /locked-ranges/{rm_item_id}: ändern bzw. löschen.
  • Kollision mit Belegung oder anderer Sperre: HTTP 409. Auth: HostLimitation auf die Schnittstelle locked-ranges.

2026-09-02 — Verfügbarkeit: rooms_ooo für gesperrte Zeiträume

Pfade: /availability

  • rooms_ooo: Anzahl gesperrter Zimmer (is_locked) je Tag und Kategorie. Teilmenge von rooms_booked.
  • closed bleibt Stop-Sell auf der Preisliste, unabhängig von Zimmersperren.

2026-09-02 — Belege: Liste, Einzelabruf und Teilzahlungen

Pfade: /vouchers, /vouchers/{id}, /vouchers/{id}/payment

  • GET /vouchers?rm_booking_id=: Rechnungen (Belegstufe 5) einer Belegung. rm_booking_id ist Pflicht.
  • GET /vouchers/{vk_voucher_no}: Beleg inkl. payments[].
  • POST /vouchers/{vk_voucher_no}/payment: (Teil-)Zahlung. amount ist Pflicht und darf sum_opened nicht überschreiten. Mehrere Zahlungen pro Rechnung möglich.
  • Dieselbe reference wird nicht erneut gebucht (HTTP 200). Auth: HostLimitation auf die Schnittstelle vouchers.

2026-09-02 — Belegungen: Rechnung, Teilzahlung und offener Betrag

Pfade: /bookings/{id}, /bookings/{id}/invoice, /bookings/{id}/payment

  • GET /bookings/{id}: amount_due (nicht fakturierte Positionen plus offene Rechnungsbeträge) und invoices[].
  • POST /bookings/{id}/invoice: Rechnung über noch nicht abgerechnete Positionen (idempotent).
  • POST /bookings/{id}/payment: (Teil-)Zahlung auf die offene Rechnung. amount ist Pflicht und darf sum_opened nicht überschreiten. Bevorzugt: POST /vouchers/{vk_voucher_no}/payment.
  • book_payment=1 beim Rechnung anlegen: ebenfalls amount Pflicht. Dieselbe reference verhindert Doppelbuchungen.

2026-09-02 — Resources: optionaler Benutzer und Reinigungsstatus-Historie

Pfade: /resources, /resources/{id}

  • POST /resources/{id}: optionales bv_user_id für Historie (created_from).
  • Resource-Antwort: cleaning_changed_by, cleaning_changed_by_name, cleaning_changed_at.

2026-09-02 — Benutzer: Liste und Einzelabruf

Pfade: /users, /users/{id}

  • GET /users und GET /users/{id}: Benutzer des Mandanten (ohne Passwort/Rechte).
  • Standard nur aktive. Filter: is_active (1, 0, all) oder include_disabled=1.

2026-08-28 — FiBu Export: lock-Parameter und festgeschriebene Belege

Pfade: /fibu/export

  • lock=true wirkt wie lock=1; false/0 bleibt aus. Ungültige Werte liefern HTTP 400 (kein stiller Erfolg mehr).
  • Response: locked (boolean), locked_count (Anzahl) und locked_vouchers (Liste der tatsächlich festgeschriebenen Belege mit type und voucher_no).

Anzahlungen

Anzahlungen anlegen, lesen, ändern und Zahlungen/Teilrechnungen erzeugen. Resource-ID ist vk_deposit_id. Auth: API-Host + HostLimitation auf die Schnittstelle deposits.

Anzahlungsliste

Paginierte Liste der Anzahlungen.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
limit
integer
Example: limit=25

Treffer pro Seite

page
integer
Example: page=1

Seite (ab 1)

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

rm_booking_id
integer

Nur Anzahlungen dieser Belegung

st_customer_id
string

Nur Anzahlungen dieses Kunden

__filter
integer
Enum: 1 2

1 = offen (unbezahlt), 2 = überfällig

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Anzahlung anlegen

Legt eine Anzahlung an. Mit rm_booking_id wird der Kunde übernommen und die Anzahlung den Zimmern zugeordnet. create_invoice=1 erzeugt die Anzahlungsrechnung (nur mit Belegung). book_payment=1 verbucht die Zahlung (erzeugt bei Bedarf zuerst die Teilrechnung).

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
vk_deposit_id
integer

Interne Anzahlungs-ID (Resource-ID, nur lesend)

cms_client_id
integer

Mandant-ID

st_customer_id
string

Kunden-Nr. Pflicht beim Anlegen, sofern rm_booking_id fehlt.

cms_address_id
integer

Adress-ID des Kunden (nur lesend)

key_name
string

Kundenname (nur lesend)

rm_booking_id
integer

Belegungs-ID. Beim Anlegen optional: Kunde, Steuer und Bemerkung werden übernommen, Anzahlung an die Zimmer gehängt.

rm_item_id
integer

Optional nur dieses Zimmer der Belegung zuordnen.

amount
required
number <float>

Anzuzahlender Betrag (Brutto).

currency
string

Währung. Standard: Mandantenwährung.

date
string <date-time>

Buchungsdatum. Standard: jetzt.

due_date
string <date>

Fällig am. Standard: +1 Monat.

payed_date
string <date>

Erhalten am (nur lesend, wenn Zahlung verbucht).

st_payment_method_id
string

Zahlungsweise. Standard: UE.

st_tk_id
integer

Steuerschlüssel. Ohne Angabe und mit rm_booking_id: häufigster Steuersatz der Belegung.

tax
integer or null

Steuersatz in % (z.B. 19, 7, 0) als Alternative zu st_tk_id.

remark
string

Bemerkung. Mit Belegung Standard: Anzahlung: Belegung #…

source
integer

1 = Kasse, 2 = Bank. Wird aus der Zahlungsweise ermittelt (nur lesend beim Anlegen).

status
integer

0 = aktiv, 3 = storniert.

is_cleared
integer
Default: 0
Enum: 0 1

1 = mit Schlussrechnung verrechnet (nur lesend).

deposit_voucher_no
string

Anzahlungs-/Teilrechnung (nur lesend).

vk_voucher_no
string

Schlussrechnung, mit der verrechnet wurde (nur lesend).

fi_account_movement_id
integer

Zahlungsbewegung (nur lesend).

create_invoice
integer
Default: 0
Enum: 0 1

Nur schreiben: 1 = Anzahlungsrechnung zur Belegung erzeugen.

book_payment
integer
Default: 0
Enum: 0 1

Nur schreiben: 1 = Zahlung verbuchen (erzeugt bei Bedarf zuerst die Teilrechnung).

reference
string

Nur schreiben: Zahlungsreferenz (z.B. Payment-ID des Gateways).

Responses

Request samples

Content type
application/json
{
  • "rm_booking_id": 12345,
  • "amount": 300,
  • "st_payment_method_id": "CC",
  • "create_invoice": 1,
  • "book_payment": 1,
  • "reference": "pi_123"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Anzahlung lesen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 42

vk_deposit_id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Anzahlung ändern

Teilupdate. Nur solange keine Zahlung und keine Teilrechnung vorliegen. PUT und PATCH sind ebenfalls erlaubt.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 42

vk_deposit_id

Request Body schema: application/json
required
vk_deposit_id
integer

Interne Anzahlungs-ID (Resource-ID, nur lesend)

cms_client_id
integer

Mandant-ID

st_customer_id
string

Kunden-Nr. Pflicht beim Anlegen, sofern rm_booking_id fehlt.

cms_address_id
integer

Adress-ID des Kunden (nur lesend)

key_name
string

Kundenname (nur lesend)

rm_booking_id
integer

Belegungs-ID. Beim Anlegen optional: Kunde, Steuer und Bemerkung werden übernommen, Anzahlung an die Zimmer gehängt.

rm_item_id
integer

Optional nur dieses Zimmer der Belegung zuordnen.

amount
required
number <float>

Anzuzahlender Betrag (Brutto).

currency
string

Währung. Standard: Mandantenwährung.

date
string <date-time>

Buchungsdatum. Standard: jetzt.

due_date
string <date>

Fällig am. Standard: +1 Monat.

payed_date
string <date>

Erhalten am (nur lesend, wenn Zahlung verbucht).

st_payment_method_id
string

Zahlungsweise. Standard: UE.

st_tk_id
integer

Steuerschlüssel. Ohne Angabe und mit rm_booking_id: häufigster Steuersatz der Belegung.

tax
integer or null

Steuersatz in % (z.B. 19, 7, 0) als Alternative zu st_tk_id.

remark
string

Bemerkung. Mit Belegung Standard: Anzahlung: Belegung #…

source
integer

1 = Kasse, 2 = Bank. Wird aus der Zahlungsweise ermittelt (nur lesend beim Anlegen).

status
integer

0 = aktiv, 3 = storniert.

is_cleared
integer
Default: 0
Enum: 0 1

1 = mit Schlussrechnung verrechnet (nur lesend).

deposit_voucher_no
string

Anzahlungs-/Teilrechnung (nur lesend).

vk_voucher_no
string

Schlussrechnung, mit der verrechnet wurde (nur lesend).

fi_account_movement_id
integer

Zahlungsbewegung (nur lesend).

create_invoice
integer
Default: 0
Enum: 0 1

Nur schreiben: 1 = Anzahlungsrechnung zur Belegung erzeugen.

book_payment
integer
Default: 0
Enum: 0 1

Nur schreiben: 1 = Zahlung verbuchen (erzeugt bei Bedarf zuerst die Teilrechnung).

reference
string

Nur schreiben: Zahlungsreferenz (z.B. Payment-ID des Gateways).

Responses

Request samples

Content type
application/json
{
  • "amount": 350,
  • "remark": "Anzahlung angepasst"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Anzahlung ändern

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 42

vk_deposit_id

Request Body schema: application/json
required
vk_deposit_id
integer

Interne Anzahlungs-ID (Resource-ID, nur lesend)

cms_client_id
integer

Mandant-ID

st_customer_id
string

Kunden-Nr. Pflicht beim Anlegen, sofern rm_booking_id fehlt.

cms_address_id
integer

Adress-ID des Kunden (nur lesend)

key_name
string

Kundenname (nur lesend)

rm_booking_id
integer

Belegungs-ID. Beim Anlegen optional: Kunde, Steuer und Bemerkung werden übernommen, Anzahlung an die Zimmer gehängt.

rm_item_id
integer

Optional nur dieses Zimmer der Belegung zuordnen.

amount
required
number <float>

Anzuzahlender Betrag (Brutto).

currency
string

Währung. Standard: Mandantenwährung.

date
string <date-time>

Buchungsdatum. Standard: jetzt.

due_date
string <date>

Fällig am. Standard: +1 Monat.

payed_date
string <date>

Erhalten am (nur lesend, wenn Zahlung verbucht).

st_payment_method_id
string

Zahlungsweise. Standard: UE.

st_tk_id
integer

Steuerschlüssel. Ohne Angabe und mit rm_booking_id: häufigster Steuersatz der Belegung.

tax
integer or null

Steuersatz in % (z.B. 19, 7, 0) als Alternative zu st_tk_id.

remark
string

Bemerkung. Mit Belegung Standard: Anzahlung: Belegung #…

source
integer

1 = Kasse, 2 = Bank. Wird aus der Zahlungsweise ermittelt (nur lesend beim Anlegen).

status
integer

0 = aktiv, 3 = storniert.

is_cleared
integer
Default: 0
Enum: 0 1

1 = mit Schlussrechnung verrechnet (nur lesend).

deposit_voucher_no
string

Anzahlungs-/Teilrechnung (nur lesend).

vk_voucher_no
string

Schlussrechnung, mit der verrechnet wurde (nur lesend).

fi_account_movement_id
integer

Zahlungsbewegung (nur lesend).

create_invoice
integer
Default: 0
Enum: 0 1

Nur schreiben: 1 = Anzahlungsrechnung zur Belegung erzeugen.

book_payment
integer
Default: 0
Enum: 0 1

Nur schreiben: 1 = Zahlung verbuchen (erzeugt bei Bedarf zuerst die Teilrechnung).

reference
string

Nur schreiben: Zahlungsreferenz (z.B. Payment-ID des Gateways).

Responses

Request samples

Content type
application/json
{
  • "vk_deposit_id": 42,
  • "cms_client_id": 0,
  • "st_customer_id": "10001",
  • "cms_address_id": 0,
  • "key_name": "string",
  • "rm_booking_id": 12345,
  • "rm_item_id": 0,
  • "amount": 300,
  • "currency": "EUR",
  • "date": "2019-08-24T14:15:22Z",
  • "due_date": "2019-08-24",
  • "payed_date": "2019-08-24",
  • "st_payment_method_id": "UE",
  • "st_tk_id": 0,
  • "tax": 19,
  • "remark": "string",
  • "source": 0,
  • "status": 0,
  • "is_cleared": 0,
  • "deposit_voucher_no": "string",
  • "vk_voucher_no": "string",
  • "fi_account_movement_id": 0,
  • "create_invoice": 0,
  • "book_payment": 0,
  • "reference": "string"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Anzahlung löschen

Löscht die Anzahlung und storniert ggf. die zugehörige Zahlung. HTTP 409 wenn bereits mit einer Schlussrechnung verrechnet oder Kassenbuch abgeschlossen.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 42

vk_deposit_id

Responses

Response samples

Content type
application/json
{
  • "code": 400,
  • "message": "Ungültige oder fehlende Parameter",
  • "date": "2026-10-01 12:36:20"
}

Anzahlungsrechnung erzeugen

Erstellt die Teil-/Anzahlungsrechnung zur Belegung. Nur mit rm_booking_id. HTTP 409 wenn die Belegung bereits abgerechnet ist oder schon eine Teilrechnung existiert.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 42

vk_deposit_id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Zahlung verbuchen

Verbucht den Zahlungseingang. Erzeugt bei Bedarf zuerst die Anzahlungsrechnung (nur mit Belegung).

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 42

vk_deposit_id

Request Body schema: application/json
optional
st_payment_method_id
string

Zahlungsweise. Leer = Zahlungsweise der Anzahlung.

amount
number <float>

Betrag. Leer = Anzahlungsbetrag.

date
string <date>

Zahlungsdatum. Standard: heute.

reference
string

Zahlungsreferenz / Gateway-ID.

Responses

Request samples

Content type
application/json
{
  • "st_payment_method_id": "CC",
  • "reference": "pi_123"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Artikel

Artikel erstellen

Artikel

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
st_article_group_id
integer
st_article_id
required
string

Artikel-Nr.

name1
required
string

Bezeichnung 1

name2
string

Bezeichnung 2

name3
string

Bezeichnung 3

settings[color]
string

Farbe

st_article_model_id
string

Artikelmodell

ean
string

GTIN

ean2
string

GTIN (VE)

alternative_article
string

Ersatzartikel

draft
string

Zeichnung

manufacturer_article_no
string

Hersteller Artikel-Nr.

manufacturer
string
min_quantity_stored
string

min. Lagermenge

max_quantity_stored
string

max. Lagermenge

inventory_price
string

Ø EK-Preis

short_description
string

Kurzbeschreibung

sales_unit
string
article_factor
string

Inhalt/Menge

article_factor_unit
number

Mögliche Werte: s = pauschal Stück = Stück Person = pro Person 2second = pro Stk./Sek. 2minute = pro Stk./Min. 2hour = pro Stk./Std. 2night = pro Stk./Nacht 2day = pro Stk./Tag 2week = pro Stk./Woche 2month = pro Stk./Monat 2year = pro Stk./Jahr 1second = pro Person/Sek. 1minute = pro Person/Min. 1hour = pro Person/Std. 1night = pro Person/Nacht 1day = pro Person/Tag 1week = pro Person/Woche 1month = pro Person/Monat 1year = pro Person/Jahr second = pro Sekunde minute = pro Minute hour = pro Stunde night = pro Nacht day = pro Tag week = pro Woche month = pro Monat year = pro Jahr Packung = Packung St. = Stück Pers. = Person(en)

settings[show_basic_charge]
boolean

Grundpreis auszeichnen

settings[disable_price_group]
boolean

Preisgruppierung deaktivieren

purchase_unit
string
article_mass_unit
string
stocking_unit
string
weight
string

Brutto-Gewicht kg

weight_net
string

Netto-Gewicht kg

length
string

Länge cm

height
string

Höhe cm

width
string

Breite cm

volume
string

Volumen l

settings[capacity]
integer

Kapazität

st_cost_centre_id
integer
st_account_id
string

FiBu-Konto

settings[pms_project_id]
integer
valid_from
string <date>

gültig von

valid_until
string <date>

gültig bis

settings[email]
string

E-Mail

settings[ver_rate_id]
integer
settings[per_activity_id]
integer
copy_st_article_id
integer
type
string
description
string

Beschreibung

settings[note2]
string

Notiz 2

settings[note3]
string

Notiz 3

locked
boolean

Sperrvermerk

purchase_article
boolean

Einkaufsartikel

sales_article
boolean

Verkaufsartikel

shop_article
boolean

Shopartikel

allowance_possible
boolean

Rabattfähig

time_dependent
boolean

Zeitabhängig

disable_proposal
boolean

Kein Bestellvorschlag

disable_statistic
boolean

nicht umsatzrelevant

settings[is_dropshipping]
boolean

Dropshipping-Artikel

settings[is_coupon]
boolean

als Gutschein bestellbar

settings[is_included]
boolean

Enthaltene Leistung

settings[is_minibar]
boolean

Minibar

settings[is_self_checkout]
boolean

Self-Checkout

inventory_maintenance
boolean

Bestandsführung

is_serial_no
boolean

Seriennummer-Artikel

is_mhd
boolean

Mindesthaltbarkeitsdatum

is_charge
boolean

Charge

is_bill_of_material
boolean

Stücklistenartikel

inventory_maintenance2
boolean

Bestandsführung

inventory_maintenance_ek
boolean

Bestandsführung (Einkauf)

shop_article2
boolean

Preise aus Stückliste

settings[view_template]
string

Template

settings[shift_time]
integer

Rüstzeit Min

Responses

Request samples

Content type
application/json
[ ]

Liste aller Artikel

Artikel

Authorizations:
(bearerAuthbasicAuth)
query Parameters
limit
integer <= 250
Default: 25
Example: limit=25

Anzahl der Elemente, die pro Seite zurückgegeben werden

page
integer
Default: 0

Auflistung der Elemente ab Seite

st_article_id
string

Artikel-Nr.

group
string

Artikelgruppe

name1
string

Bezeichnung 1

name2
string

Bezeichnung 2

name3
string

Bezeichnung 3

st_article_model_id
string

Artikelmodell

ean
string

GTIN

ean2
string

GTIN 2

is_bill_of_material
string

Stückliste

alternative_article
string

Ersatzartikel

draft
string

Zeichnung

manufacturer_article_no
string

Hersteller Artikel-Nr.

manufacturer_key_name
string

Hersteller

article_number
string

Lief. Artikel-Nr.

supplier_key_name
string

Lieferant

ek_price
string

EK-Preis

inventory_price
string

Ø EK-Preis

sales_unit
string

Verkaufspreis pro

purchase_unit
string

Einkaufspreis pro

article_mass_unit
string

Artikelmasse pro

stocking_unit
string

Lagermenge in

st_account_id
string

FiBu-Konto

weight
string

Nettogewicht

weight_net
string

Bruttogewicht

article_length
string

Länge

height
string

Höhe

width
string

Breite

volume
string

Volumen

valid_from
string

gültig von

valid_until
string

gültig bis

locked
string

Sperrvermerk

purchase_article
string

Einkaufsartikel

sales_article
string

Verkaufsartikel

inventory_maintenance
string

Bestandsführung

shop_article
string

Shopartikel

allowance_possible
string

Rabattfähig

is_part_of_variant
string

Variantenartikel

st_cost_centre_no
string

Kostenstellen-Nr.

cost_centre
string

Kostenstelle

bf_current
string

Bestand

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    },
  • "code": 0,
  • "message": "string",
  • "date": "2019-08-24T14:15:22Z"
}

Artikel bearbeiten

Artikel

Authorizations:
(bearerAuthbasicAuth)
path Parameters
st_article_id
required
integer
Request Body schema: application/json
required
st_article_group_id
integer
st_article_id
required
string

Artikel-Nr.

name1
required
string

Bezeichnung 1

name2
string

Bezeichnung 2

name3
string

Bezeichnung 3

settings[color]
string

Farbe

st_article_model_id
string

Artikelmodell

ean
string

GTIN

ean2
string

GTIN (VE)

alternative_article
string

Ersatzartikel

draft
string

Zeichnung

manufacturer_article_no
string

Hersteller Artikel-Nr.

manufacturer
string
min_quantity_stored
string

min. Lagermenge

max_quantity_stored
string

max. Lagermenge

inventory_price
string

Ø EK-Preis

short_description
string

Kurzbeschreibung

sales_unit
string
article_factor
string

Inhalt/Menge

article_factor_unit
number

Mögliche Werte: s = pauschal Stück = Stück Person = pro Person 2second = pro Stk./Sek. 2minute = pro Stk./Min. 2hour = pro Stk./Std. 2night = pro Stk./Nacht 2day = pro Stk./Tag 2week = pro Stk./Woche 2month = pro Stk./Monat 2year = pro Stk./Jahr 1second = pro Person/Sek. 1minute = pro Person/Min. 1hour = pro Person/Std. 1night = pro Person/Nacht 1day = pro Person/Tag 1week = pro Person/Woche 1month = pro Person/Monat 1year = pro Person/Jahr second = pro Sekunde minute = pro Minute hour = pro Stunde night = pro Nacht day = pro Tag week = pro Woche month = pro Monat year = pro Jahr Packung = Packung St. = Stück Pers. = Person(en)

settings[show_basic_charge]
boolean

Grundpreis auszeichnen

settings[disable_price_group]
boolean

Preisgruppierung deaktivieren

purchase_unit
string
article_mass_unit
string
stocking_unit
string
weight
string

Brutto-Gewicht kg

weight_net
string

Netto-Gewicht kg

length
string

Länge cm

height
string

Höhe cm

width
string

Breite cm

volume
string

Volumen l

settings[capacity]
integer

Kapazität

st_cost_centre_id
integer
st_account_id
string

FiBu-Konto

settings[pms_project_id]
integer
valid_from
string <date>

gültig von

valid_until
string <date>

gültig bis

settings[email]
string

E-Mail

settings[ver_rate_id]
integer
settings[per_activity_id]
integer
copy_st_article_id
integer
type
string
description
string

Beschreibung

settings[note2]
string

Notiz 2

settings[note3]
string

Notiz 3

locked
boolean

Sperrvermerk

purchase_article
boolean

Einkaufsartikel

sales_article
boolean

Verkaufsartikel

shop_article
boolean

Shopartikel

allowance_possible
boolean

Rabattfähig

time_dependent
boolean

Zeitabhängig

disable_proposal
boolean

Kein Bestellvorschlag

disable_statistic
boolean

nicht umsatzrelevant

settings[is_dropshipping]
boolean

Dropshipping-Artikel

settings[is_coupon]
boolean

als Gutschein bestellbar

settings[is_included]
boolean

Enthaltene Leistung

settings[is_minibar]
boolean

Minibar

settings[is_self_checkout]
boolean

Self-Checkout

inventory_maintenance
boolean

Bestandsführung

is_serial_no
boolean

Seriennummer-Artikel

is_mhd
boolean

Mindesthaltbarkeitsdatum

is_charge
boolean

Charge

is_bill_of_material
boolean

Stücklistenartikel

inventory_maintenance2
boolean

Bestandsführung

inventory_maintenance_ek
boolean

Bestandsführung (Einkauf)

shop_article2
boolean

Preise aus Stückliste

settings[view_template]
string

Template

settings[shift_time]
integer

Rüstzeit Min

Responses

Request samples

Content type
application/json
""

Artikel löschen

Artikel

Authorizations:
(bearerAuthbasicAuth)
path Parameters
st_article_id
required
integer

Responses

Artikel abfragen

Artikel

Authorizations:
(bearerAuthbasicAuth)
path Parameters
st_article_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "st_article_group_id": 0,
  • "st_article_id": "string",
  • "name1": "string",
  • "name2": "string",
  • "name3": "string",
  • "settings[color]": "string",
  • "st_article_model_id": "string",
  • "ean": "string",
  • "ean2": "string",
  • "alternative_article": "string",
  • "draft": "string",
  • "manufacturer_article_no": "string",
  • "manufacturer": "string",
  • "min_quantity_stored": "string",
  • "max_quantity_stored": "string",
  • "inventory_price": "string",
  • "short_description": "string",
  • "sales_unit": "string",
  • "article_factor": "string",
  • "article_factor_unit": 0,
  • "settings[show_basic_charge]": true,
  • "settings[disable_price_group]": true,
  • "purchase_unit": "string",
  • "article_mass_unit": "string",
  • "stocking_unit": "string",
  • "weight": "string",
  • "weight_net": "string",
  • "length": "string",
  • "height": "string",
  • "width": "string",
  • "volume": "string",
  • "settings[capacity]": 0,
  • "st_cost_centre_id": 0,
  • "st_account_id": "string",
  • "settings[pms_project_id]": 0,
  • "valid_from": "2019-08-24",
  • "valid_until": "2019-08-24",
  • "settings[email]": "string",
  • "settings[ver_rate_id]": 0,
  • "settings[per_activity_id]": 0,
  • "copy_st_article_id": 0,
  • "type": "string",
  • "description": "string",
  • "settings[note2]": "string",
  • "settings[note3]": "string",
  • "locked": true,
  • "purchase_article": true,
  • "sales_article": true,
  • "shop_article": true,
  • "allowance_possible": true,
  • "time_dependent": true,
  • "disable_proposal": true,
  • "disable_statistic": true,
  • "settings[is_dropshipping]": true,
  • "settings[is_coupon]": true,
  • "settings[is_included]": true,
  • "settings[is_minibar]": true,
  • "settings[is_self_checkout]": true,
  • "inventory_maintenance": true,
  • "is_serial_no": true,
  • "is_mhd": true,
  • "is_charge": true,
  • "is_bill_of_material": true,
  • "inventory_maintenance2": true,
  • "inventory_maintenance_ek": true,
  • "shop_article2": true,
  • "settings[view_template]": "string",
  • "settings[shift_time]": 0
}

Belege

Verkaufsbelege anlegen, lesen und Zahlungen verbuchen. Resource-ID ist vk_voucher_no. Auth: API-Host + HostLimitation auf die Schnittstelle vouchers.

Belegliste

Rechnungen (Belegstufe 5). Ohne rm_booking_id der Mandant, sonst nur diese Belegung. Paginierung über page und limit.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
rm_booking_id
integer
Example: rm_booking_id=12345

Nur Belege dieser Belegung

page
integer
Example: page=1

Seite, ab 1

limit
integer
Example: limit=25

Treffer pro Seite. Standard 25, höchstens 250.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Beleg anlegen

Legt einen Beleg der Belegart st_voucher_type_id für st_customer_id an. Die Belegnummer kommt aus dem Nummernkreis. positions sind Artikel- oder Textzeilen. Ohne price gilt der Preis der Preisliste. Die Liste bleibt auf Rechnungen (Belegstufe 5); der neue Beleg steht unter GET /vouchers/{vk_voucher_no}.

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
st_customer_id
required
string

Kundennummer.

st_voucher_type_id
required
string

Belegart des Mandanten, z. B. AN für Angebot oder RE für Rechnung.

voucher_date
string <date>

Belegdatum. Standard: heute.

rm_booking_id
integer

Optionale Belegung am Belegkopf.

st_payment_method_id
string

Zahlungsweise. Leer = Zahlungsweise des Kunden.

Array of objects (VoucherPositionWrite)

Belegzeilen. Reihenfolge ist die Sortierung.

Responses

Request samples

Content type
application/json
{
  • "st_customer_id": "10001",
  • "st_voucher_type_id": "AN",
  • "positions": [
    ]
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "message": "",
  • "date": "2026-10-06 14:30:00",
  • "data": {
    }
}

Beleg lesen

Rechnung inkl. Zahlungen (payments) und Belegzeilen (positions).

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
string
Example: RE-260001

vk_voucher_no

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Zahlung verbuchen

Verbucht eine (Teil-)Zahlung. amount ist Pflicht. Mehrere Zahlungen pro Rechnung sind möglich, solange sum_opened > 0. Dieselbe reference wird nicht erneut gebucht (HTTP 200).

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
string
Example: RE-260001

vk_voucher_no

Request Body schema: application/json
required
amount
required
number <float>

Zahlungsbetrag. Pflicht. Darf sum_opened nicht überschreiten.

st_payment_method_id
string

Leer = Zahlungsweise der Rechnung.

reference
string

Eindeutige Payment-ID je Zahlung (Timeout-Schutz).

date
string <date>

Responses

Request samples

Content type
application/json
{
  • "amount": 100,
  • "st_payment_method_id": "CC",
  • "reference": "term_123"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Belegungen

Hotel-Belegungen anlegen, lesen, Rechnung/Zahlung und Check-In/Check-Out. Resource-ID ist rm_booking_id. Auth: API-Host + HostLimitation auf die Schnittstelle bookings.

Belegungsliste

Paginierte Liste der Belegungen (zimmerbasiert, wie im Hotel-Manager). date_from / date_until filtern nach überlappendem Zimmerzeitraum. created_date / modified_date filtern den Kalendertag der Zimmerzeile, als Y-m-d oder TT.MM.JJJJ, optional mit >=, >, <=, < oder !.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
limit
integer
Example: limit=25

Treffer pro Seite

page
integer
Example: page=1

Seite (ab 1)

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

date_from
string <date>
Example: date_from=2026-10-01

Zeitraum von (Y-m-d). Belegungen deren Zimmer den Zeitraum überlappen (DATE(until) >= date_from).

date_until
string <date>
Example: date_until=2026-10-08

Zeitraum bis (Y-m-d). Belegungen deren Zimmer den Zeitraum überlappen (DATE(from) <= date_until).

created_date
string <date>
Example: created_date=2026-10-01

Angelegt am (Zimmerzeile). Y-m-d oder TT.MM.JJJJ. Präfix >=, >, <=, <, ! vergleicht den Kalendertag. Beispiel: >=2026-10-01.

modified_date
string <date>
Example: modified_date=>=2026-10-01

Geändert am (Zimmerzeile). Y-m-d oder TT.MM.JJJJ. Präfix >=, >, <=, <, ! vergleicht den Kalendertag. Beispiel: >=2026-10-01.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Belegung anlegen

Legt Belegungskopf und mindestens ein Zimmer an. Ohne rm_resource_id wird anhand st_article_id ein freies Zimmer im Zeitraum zugeordnet. HTTP 409 wenn keines frei ist oder das angegebene Zimmer gesperrt/belegt ist. Belegungsnummer kommt aus dem Nummernkreis HM. Preis wird aus der Preisliste berechnet, sofern price nicht gesetzt ist.

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
rm_booking_id
integer

Interne Belegungs-ID (Resource-ID, nur lesend)

rm_booking_no
string

Belegungsnummer (Nummernkreis HM, nur lesend)

rm_catalogue_id
string

Katalog. Immer HM bei diesem Endpoint.

cms_client_id
integer

Mandant-ID

st_customer_id
string

Kunden-Nr. Pflicht beim Anlegen, sofern cms_address_id fehlt. cms_address_id wird dann vom Kunden übernommen.

cms_address_id
integer

Adress-ID. Nur nötig ohne st_customer_id. Mit st_customer_id wird sie vom Kunden genommen.

name
string

Anzeigename. Leer = Nachname des Kunden.

from
required
string <date>

Anreise. Auf Root-Ebene wenn nur ein Zimmer, sonst in items[].

until
required
string <date>

Abreise.

rm_resource_id
integer

Zimmer-ID. Optional. Ohne Angabe wird ein freies Zimmer zur st_article_id zugeordnet.

room_number
string

Zimmernummer bei einem Zimmer ohne items[].

token
string

Zimmerkürzel bei einem Zimmer ohne items[].

st_article_id
string

Logis-Artikel / Zimmerkategorie. Pflicht ohne rm_resource_id.

st_price_list_id
string

Preisliste für alle Zimmer, sofern nicht in items[] gesetzt.

quantity
integer
Default: 1

Personen / Erwachsene (ein Zimmer).

children
integer
Default: 0

Kinder (ein Zimmer).

status
integer
Enum: 0 1 2 3 4 5 13 15 16 30

Zimmerstatus: 0 = Reservierung, 1 = Check-In, 2 = Check-Out, 3 = Storniert, 4 = Anfrage/Option, 13 = bestätigt (Channel), 30 = No-Show. Standard beim Anlegen: 0.

price
number <float>

Optionaler Festpreis (Brutto, pro Nacht/Preiszeile). Weglassen = Preisliste.

price_gross
number <float>

Alias für price.

remark
string

Bemerkung zur Belegung

source
string

Herkunft. Standard: api.

source_no
string

Externe Vorgangsnummer der Quelle

send_notification
integer
Default: 0
Enum: 0 1

1 = Reservierungsbestätigung versenden. Standard: 0.

reserved_date
string <date-time>

Reservierungsdatum (nur lesend)

access_token
string

Zugangstoken (nur lesend)

Array of objects

Zimmer. Beim Anlegen optional: ohne items[] gelten from/until/Zimmerfelder auf Root-Ebene als ein Zimmer.

amount_due
number <float>

Noch zu zahlen: nicht fakturierte Positionen plus offene Rechnungsbeträge (nur lesend).

Array of objects (BookingInvoice)

Rechnungen (Belegstufe 5) der Belegung (nur lesend).

Responses

Request samples

Content type
application/json
{
  • "st_customer_id": "10001",
  • "from": "2026-08-20",
  • "until": "2026-08-22",
  • "st_article_id": "DZ",
  • "quantity": 2,
  • "children": 0,
  • "price": 129,
  • "status": 0,
  • "remark": "",
  • "source": "api"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Belegung lesen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Status ändern (Check-In / Check-Out)

URL-{id} ist immer rm_booking_id. Einzelnes Zimmer: rm_item_id im Body oder Query — nicht aus der URL raten, rm_item_id und rm_booking_id können denselben Wert haben.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Request Body schema: application/json
required
required
integer or string

1 / checkin = Check-In, 2 / checkout = Check-Out.

rm_item_id
integer

Zimmer-/Buchungs-ID (swo_rm_items). Nur dieses Zimmer ein- oder auschecken.

room_number
string

Alternative zu rm_item_id: Zimmernummer innerhalb der Belegung.

token
string

Alternative zu rm_item_id: Zimmerkürzel innerhalb der Belegung.

Responses

Request samples

Content type
application/json
{
  • "status": "checkin",
  • "rm_item_id": 9001
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Check-In

URL-{id} ist immer rm_booking_id. Nur ein Zimmer: rm_item_id oder room_number im Body/Query. Ohne Angabe: alle Zimmer der Belegung.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Request Body schema: application/json
optional
rm_item_id
integer

Nur dieses Zimmer (rm_item_id)

room_number
string

Nur dieses Zimmer, per Zimmernummer

Responses

Request samples

Content type
application/json
{
  • "rm_item_id": 9001
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Check-Out

URL-{id} ist immer rm_booking_id. Nur ein Zimmer: rm_item_id oder room_number im Body/Query. Ohne Angabe: alle Zimmer der Belegung.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Request Body schema: application/json
optional
rm_item_id
integer

Nur dieses Zimmer (rm_item_id)

room_number
string

Nur dieses Zimmer, per Zimmernummer

Responses

Request samples

Content type
application/json
{
  • "rm_item_id": 9001
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Leistungen der Belegung

Alias für GET /services. URL-{id} ist rm_booking_id. Optional rm_item_id oder external_id als zusätzlicher Filter. Noch nicht abgerechnete Leistungen sind enthalten (vk_voucher_no leer).

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

query Parameters
rm_item_id
integer

Nur diese Zimmerposition

external_id
string

Nur diese externe Referenz

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2019-08-24T14:15:22Z",
  • "request_id": 0,
  • "data": [
    ]
}

Dokumente der Belegung

Alias für GET /documents?cms_object=rm_booking_id. Ohne Dateiinhalt.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Responses

Response samples

Content type
application/json
{
  • "code": 400,
  • "message": "Ungültige oder fehlende Parameter",
  • "date": "2026-10-01 12:36:20"
}

PDF an die Belegung hängen

Alias für POST /documents. Das PDF erscheint unter den Dokumenten der Belegung. Höchstgröße 2 MB. cms_object und id kommen aus der URL.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Request Body schema: application/json
required
cms_object
string

Pflicht bei POST /documents. Beim Alias /bookings/{id}/documents gesetzt.

id
integer

Id des Zielobjekts

name
string

Dateiname, Endung .pdf. Standard Ladenachweis.pdf

content_base64
required
string

PDF-Inhalt, Base64. Nach dem Dekodieren höchstens 2 MB und Beginn %PDF.

rm_item_id
integer

Optionale Zimmerposition der Belegung

Responses

Request samples

Content type
application/json
{
  • "name": "Ladenachweis.pdf",
  • "rm_item_id": 17,
  • "content_base64": "JVBERi0xLjQK"
}

Response samples

Content type
application/json
{
  • "code": 400,
  • "message": "Ungültige oder fehlende Parameter",
  • "date": "2026-10-01 12:36:20"
}

Rechnung zur Belegung

Erstellt eine Rechnung (RE) über noch nicht abgerechnete Positionen. Sind alle Positionen schon auf einer Rechnung, wird diese zurückgegeben (HTTP 200). book_payment=1 verbucht eine Zahlung; amount ist dann Pflicht (Teilzahlungen möglich). Dieselbe reference verhindert Doppelbuchungen bei Timeouts.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Request Body schema: application/json
optional
st_voucher_type_id
string

Belegart. Standard: RE.

st_payment_method_id
string

Zahlungsweise. Standard: UE.

book_payment
integer
Default: 0
Enum: 0 1

1 = Zahlung nach dem Anlegen verbuchen. Dann amount Pflicht.

reference
string

Eindeutige Payment-ID des Terminals. Pflicht für sichere Wiederholung.

amount
number <float>

Zahlungsbetrag. Pflicht bei book_payment=1. Darf den offenen Betrag nicht überschreiten.

date
string <date>

Zahlungsdatum. Standard: jetzt.

Responses

Request samples

Content type
application/json
{
  • "st_payment_method_id": "CC",
  • "book_payment": 1,
  • "amount": 100,
  • "reference": "term_123"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Zahlung zur Belegungsrechnung

Verbucht eine (Teil-)Zahlung auf der offenen Rechnung der Belegung. amount ist Pflicht. Bevorzugt: POST /vouchers/{vk_voucher_no}/payment. Ohne vk_voucher_no die älteste offene Rechnung. Dieselbe reference gibt die bereits verbuchte Zahlung zurück (HTTP 200).

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Request Body schema: application/json
required
vk_voucher_no
string

Optional. Leer = älteste offene Rechnung der Belegung.

st_payment_method_id
string
amount
required
number <float>

Zahlungsbetrag. Pflicht. Darf den offenen Betrag nicht überschreiten.

reference
string

Eindeutige Payment-ID.

date
string <date>

Responses

Request samples

Content type
application/json
{
  • "st_payment_method_id": "CC",
  • "amount": 100,
  • "reference": "term_123"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Benutzerstatus der Belegung setzen

Ersetzt die Kennzeichnungen eines Zimmers (VIP, Hund, Early Check-in, individuell angelegte Status). URL-{id} ist rm_booking_id. Ohne rm_item_id: alle Zimmer der Belegung.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Request Body schema: application/json
required
required
Array of strings or objects

IDs, Token oder Namen. Leeres Array entfernt alle Kennzeichnungen.

rm_item_id
integer

Nur dieses Zimmer

room_number
string

Responses

Request samples

Content type
application/json
{
  • "user_status": [
    ],
  • "rm_item_id": 9001
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Reinigungsangaben der Belegung setzen

Setzt cleaning_type, Gastwunsch und/oder Reinigungsliste (note2). URL-{id} ist rm_booking_id. Einzelnes Zimmer: rm_item_id oder room_number.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein).

Request Body schema: application/json
required
cleaning_type
string

0, 1, -1, -2, 1d–14d, mon–sun

cleaning_type_guest
integer
Enum: -2 -1 0 1
note2
string

Reinigungsliste

note
string

Gästenotiz

rm_item_id
integer
room_number
string

Responses

Request samples

Content type
application/json
{
  • "cleaning_type": "0",
  • "note2": "Extra Handtücher",
  • "rm_item_id": 9001
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Benutzer

Benutzer des Mandanten. Nur Lesen. Auth: API-Host + HostLimitation auf die Schnittstelle users.

Benutzerliste

Benutzer, unabhängig vom Mandanten. Ein gesetztes cms_client_id wird verworfen. Standard nur aktive. Keine Passwörter oder Rechte. username ist der Login, exakt und ohne Wildcard.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
username
string
Example: username=vitalis.ermanntraut

Login, exakt und ohne Wildcard. Unbekannt: leere Liste, HTTP 200.

is_active
string
Example: is_active=1

1 = nur aktive (Standard), 0 = nur gesperrte, all = alle

include_disabled
integer

1 = aktive und gesperrte (wie is_active=all)

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Benutzer lesen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12

bv_user_id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Dienstplan

Dienstplan der Zeiterfassung: wer an einem Tag Schicht hat, je Tätigkeitsbereich. Nur Lesen. Auth: HostLimitation auf die Schnittstelle shifts.

Dienstplan eines Tages

Geplante Zuordnungen (status geplant). Gruppiert nach Tätigkeitsbereich. Schichten ohne Personal bleiben mit leerer personnel-Liste. Vorlagen zählen nicht.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
date
string <date>
Example: date=2026-10-07

Kalendertag (Y-m-d). Standard: heute.

per_activity_id
integer

Nur dieser Tätigkeitsbereich

st_branch_id
integer

Nur diese Filiale

cms_client_id
integer

Mandant-ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2019-08-24T14:15:22Z",
  • "request_id": 0,
  • "day": "2019-08-24",
  • "per_activity_id": 0,
  • "st_branch_id": 0,
  • "counts": { },
  • "activities": [
    ]
}

Dokumente

PDF-Dokumente an Objekte hängen. Belegungen erscheinen unter Dokumente der Belegung. Höchstgröße 2 MB.

Dokumente eines Objekts

Authorizations:
(bearerAuthbasicAuth)
query Parameters
cms_object
required
string
Example: cms_object=rm_booking_id

Zum Beispiel rm_booking_id

id
required
integer
Example: id=42

Id des Objekts

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 10:00:00",
  • "request_id": 9003,
  • "data": [
    ]
}

PDF speichern

Speichert ein PDF am Objekt. Bei cms_object rm_booking_id liegt die Datei unter den Dokumenten der Belegung (data/RM/{id}). Höchstgröße 2 MB.

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
cms_object
string

Pflicht bei POST /documents. Beim Alias /bookings/{id}/documents gesetzt.

id
integer

Id des Zielobjekts

name
string

Dateiname, Endung .pdf. Standard Ladenachweis.pdf

content_base64
required
string

PDF-Inhalt, Base64. Nach dem Dekodieren höchstens 2 MB und Beginn %PDF.

rm_item_id
integer

Optionale Zimmerposition der Belegung

Responses

Request samples

Content type
application/json
{
  • "cms_object": "rm_booking_id",
  • "id": 42,
  • "name": "Ladenachweis.pdf",
  • "rm_item_id": 17,
  • "content_base64": "JVBERi0xLjQK"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "message": "",
  • "date": "2026-10-01 10:00:00",
  • "request_id": 9004,
  • "cms_file_id": 501,
  • "name": "Ladenachweis.pdf",
  • "size": 84211
}

Ein Dokument

Metadaten. Der Dateiinhalt wird nicht ausgeliefert. {id} ist cms_file_id.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 501

cms_file_id

Responses

Response samples

Content type
application/json
{
  • "code": 401,
  • "message": "Authentifizierung fehlgeschlagen",
  • "date": "2026-10-01 12:36:20"
}

FiBu Export

Einheitlicher FiBu-Export-Endpoint. Unterstützt DATEV und Diamant. Format wird aus ClientSettings gelesen, kann per Parameter überschrieben werden.

FiBu-Export starten

Startet den FiBu-Export für den angegebenen Zeitraum.

Format-Auflösung: Parameter format > ClientSettings fibu_format > Fallback datev

Rückgabe: JSON mit download_url (TTL 1h) zur ZIP-Datei.

Positionen mit fehlenden FiBu-Konten werden in missing_fields zurückgegeben — der Export wird abgebrochen.

lock=true: Exportiert nur nicht-festgeschriebene Belege und schreibt diese nach erfolgreichem Export fest (GoBD-konform, is_transfered_fibu = 1). Verhindert Doppelexporte. Akzeptiert true/false und 1/0; ungültige Werte liefern HTTP 400. Die Response enthält locked_count und locked_vouchers mit den tatsächlich festgeschriebenen Belegen.

Hinweis: datev_xml exportiert nur Belegbilder (PDFs), keine Buchungssätze — missing_fields ist immer leer.

datev_both erzeugt ein äußeres ZIP mit Buchungsstapel.zip (CSV) und Belege.zip (XML/PDF). Fehlende FiBu-Konten kommen aus dem Buchungsstapel.

HTTP 422: Export hat keine Daten geliefert oder alle Positionen haben fehlende Konten.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
from
required
string <date>
Example: from=2024-06-01

Startdatum Y-m-d

until
required
string <date>
Example: until=2024-06-30

Enddatum Y-m-d

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

lock
boolean
Default: false

Belege nach Export festschreiben (GoBD-konform). true/1 = nur nicht-festgeschriebene Belege exportieren + nach Export festschreiben. false/0 (Standard) = alle Belege exportieren, kein Festschreiben. Akzeptiert true, false, 1, 0 (Groß/Kleinschreibung egal). Ungültige Werte: HTTP 400.

format
string
Enum: "datev" "datev_xml" "datev_both" "diamant"

Export-Format (Standard aus ClientSettings: fibu_format).

datev = DATEV Buchungsstapel CSV (Buchungsdaten)

datev_xml = DATEV XML mit Belegbildern (PDFs)

datev_both = Versandpaket: Buchungsstapel.zip + Belege.zip

diamant = Diamant FiBu CSV

type[]
Array of strings
Items Enum: "VK" "FI" "KB"
Example: type[]=VK&type[]=FI

Export-Typen (mehrfach angeben möglich). Default: alle drei. VK = Rechnungen/Gutschriften, FI = Zahlungen & Anzahlungen, KB = Kassenbuch

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2024-06-01 10:00:00",
  • "download_url": "/API/fibu/download?path=L3Zhci93d3cv...&token=1781250413.08d0...",
  • "path": "L3Zhci93d3cvdml0YWxpc2VybWFubnRyYXV0...",
  • "token": "1781250413.08d0db7238c10b6da0888842ac7bb25b...",
  • "filename": "DATEV-2024-06-01-2024-06-30.zip",
  • "format": "datev",
  • "types": [
    ],
  • "locked": true,
  • "locked_count": 2,
  • "locked_vouchers": [
    ],
  • "missing_fields": [ ],
  • "warnings": [ ]
}

ZIP-Datei herunterladen

Liefert die ZIP-Datei des FiBu-Exports als Binary-Download. Der path- und token-Parameter kommen aus der download_url der Export-Response. Token ist 1 Stunde gültig.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
path
required
string

Base64-kodierter Dateipfad (aus download_url)

token
required
string

Signierter Download-Token (aus download_url)

Responses

Response samples

Content type
application/json
{
  • "code": 400,
  • "message": "Ungültige oder fehlende Parameter",
  • "date": "2026-10-01 12:36:20"
}

Fundsachen

Fundsachen anlegen, lesen und aktualisieren. Auth: API-Host + HostLimitation auf die Schnittstelle lostfound.

Fundsachenliste

Authorizations:
(bearerAuthbasicAuth)
query Parameters
limit
integer
Example: limit=25

Treffer pro Seite (max. 250)

page
integer
Example: page=1

Seite (ab 1)

cms_client_id
integer

Mandant-ID

status
integer

0 = Offen, 4 = Erledigt

location
string

Fundort (Teilstring)

date_from
string <date>

Funddatum von (Y-m-d)

date_until
string <date>

Funddatum bis (Y-m-d)

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Fundsache anlegen

Legt eine Fundsache in Swoppen an (z. B. aus der Housekeeping-App).

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
sp_lostfound_id
integer

Interne ID (nur lesend)

date
string <date>

Funddatum (Y-m-d)

title
required
string

Bezeichnung / Titel

location
string

Fundort / Zimmer. Alternativ rm_resource_id / room_number beim Anlegen.

founder
string

Gefunden von

content
string

Beschreibung

cms_address_id
integer

Optionale Gästeadresse

cms_client_id
integer
status
integer
Enum: 0 4

0 = Offen, 4 = Erledigt.

status_label
string

Offen / Erledigt (nur lesend)

created_date
string <date-time>
modified_date
string <date-time>
rm_resource_id
integer

Zimmer-ID; setzt location auf das Kürzel, falls location leer.

room_number
string

Zimmernummer als Fundort, falls location leer.

token
string

Zimmerkürzel als Fundort, falls location leer.

Responses

Request samples

Content type
application/json
{
  • "title": "Schlüsselbund",
  • "date": "2026-10-01",
  • "location": "101",
  • "founder": "Hausdame",
  • "content": "Am Nachttisch",
  • "room_number": "101"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Fundsache lesen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 42

sp_lostfound_id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Fundsache aktualisieren

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 42

sp_lostfound_id

Request Body schema: application/json
required
sp_lostfound_id
integer

Interne ID (nur lesend)

date
string <date>

Funddatum (Y-m-d)

title
required
string

Bezeichnung / Titel

location
string

Fundort / Zimmer. Alternativ rm_resource_id / room_number beim Anlegen.

founder
string

Gefunden von

content
string

Beschreibung

cms_address_id
integer

Optionale Gästeadresse

cms_client_id
integer
status
integer
Enum: 0 4

0 = Offen, 4 = Erledigt.

status_label
string

Offen / Erledigt (nur lesend)

created_date
string <date-time>
modified_date
string <date-time>
rm_resource_id
integer

Zimmer-ID; setzt location auf das Kürzel, falls location leer.

room_number
string

Zimmernummer als Fundort, falls location leer.

token
string

Zimmerkürzel als Fundort, falls location leer.

Responses

Request samples

Content type
application/json
{
  • "status": 4,
  • "founder": "Hausdame"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Gesperrte Zeiträume

Zimmer für einen Zeitraum sperren (Out of Order). Resource-ID ist rm_item_id. Auth: API-Host + HostLimitation auf die Schnittstelle locked-ranges.

Gesperrte Zeiträume

Sperren (is_locked=1), standardmäßig ab heute. Überlappungsfilter über date_from / date_until.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
date_from
string <date>
Example: date_from=2026-10-01

Nur Sperren mit until >= date_from. Standard: heute.

date_until
string <date>

Nur Sperren mit from <= date_until.

rm_resource_id
integer

Nur dieses Zimmer

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Zeitraum sperren

Legt eine oder mehrere Sperren an. Bei mehreren rm_resource_id ist data ein Array. HTTP 409 wenn das Zimmer im Zeitraum belegt oder bereits gesperrt ist.

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
required
integer or Array of integers

Ein Zimmer oder mehrere.

from
required
string <date>
until
required
string <date>
note
string
color
string

Responses

Request samples

Content type
application/json
{
  • "rm_resource_id": 12,
  • "from": "2026-09-10",
  • "until": "2026-09-15",
  • "note": "Renovierung"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Gesperrten Zeitraum lesen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer

rm_item_id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Gesperrten Zeitraum ändern

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer

rm_item_id

Request Body schema: application/json
required
required
integer or Array of integers

Ein Zimmer oder mehrere.

from
required
string <date>
until
required
string <date>
note
string
color
string

Responses

Request samples

Content type
application/json
{
  • "rm_resource_id": 12,
  • "from": "2026-09-10",
  • "until": "2026-09-15",
  • "note": "Renovierung",
  • "color": "#641e16"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Sperre aufheben

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer

rm_item_id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Kunden

Kundenstammdaten (Adresse, Person, Debitor). Resource-ID ist st_customer_id. Auth: API-Host + HostLimitation auf die Schnittstelle customers.

Kundenliste

Paginierte Liste aus dem Kundenadresskatalog.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
limit
integer
Example: limit=25

Treffer pro Seite

page
integer
Example: page=1

Seite (ab 1)

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Kunde anlegen

Legt Kunde, Adresse und Person an. Ohne st_customer_id wird die nächste freie Nummer vergeben.

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
st_customer_id
string

Kunden-Nr.

cms_client_id
integer
cms_address_id
integer
cms_person_id
integer
cms_address_catalogue_id
integer
key_name
string

Suchname

company
string
name
string
first_name
string
title
string
sex
string
Enum: "m" "w" "d" ""
birthdate
string <date>
address
string

Anrede

street
string
zip
string
location
string
cms_country_iso_code
string
tel1
string
mobile
string
fax
string
email
string <email>
email2
string <email>
email_invoice
string <email>
www
string
vat_id
string
tax_id
string
st_account_id
string

Debitorenkonto

st_payment_method_id
string

Zahlungsweise

st_payment_target_id
string
st_payment_agreement_id
string
st_price_list_id
string
st_delivery_term_id
string
st_federation_id
string
credit_limit
number
discount_procent
number
customer_from
string <date>
customer_until
string <date>
remark
string

Responses

Request samples

Content type
application/json
{
  • "name": "Mustermann",
  • "first_name": "Max",
  • "street": "Musterstraße 1",
  • "zip": "10115",
  • "location": "Berlin",
  • "email": "max@example.com"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Kunde lesen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
string
Example: 10001

Kunden-Nr. (st_customer_id)

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Kunde ändern

Teilupdate. PUT und PATCH sind ebenfalls erlaubt.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
string
Example: 10001

Kunden-Nr. (st_customer_id)

Request Body schema: application/json
required
st_customer_id
string

Kunden-Nr.

cms_client_id
integer
cms_address_id
integer
cms_person_id
integer
cms_address_catalogue_id
integer
key_name
string

Suchname

company
string
name
string
first_name
string
title
string
sex
string
Enum: "m" "w" "d" ""
birthdate
string <date>
address
string

Anrede

street
string
zip
string
location
string
cms_country_iso_code
string
tel1
string
mobile
string
fax
string
email
string <email>
email2
string <email>
email_invoice
string <email>
www
string
vat_id
string
tax_id
string
st_account_id
string

Debitorenkonto

st_payment_method_id
string

Zahlungsweise

st_payment_target_id
string
st_payment_agreement_id
string
st_price_list_id
string
st_delivery_term_id
string
st_federation_id
string
credit_limit
number
discount_procent
number
customer_from
string <date>
customer_until
string <date>
remark
string

Responses

Request samples

Content type
application/json
{
  • "email": "neu@example.com",
  • "tel1": "+493012345"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Kunde ändern

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
string
Example: 10001

Kunden-Nr. (st_customer_id)

Request Body schema: application/json
required
st_customer_id
string

Kunden-Nr.

cms_client_id
integer
cms_address_id
integer
cms_person_id
integer
cms_address_catalogue_id
integer
key_name
string

Suchname

company
string
name
string
first_name
string
title
string
sex
string
Enum: "m" "w" "d" ""
birthdate
string <date>
address
string

Anrede

street
string
zip
string
location
string
cms_country_iso_code
string
tel1
string
mobile
string
fax
string
email
string <email>
email2
string <email>
email_invoice
string <email>
www
string
vat_id
string
tax_id
string
st_account_id
string

Debitorenkonto

st_payment_method_id
string

Zahlungsweise

st_payment_target_id
string
st_payment_agreement_id
string
st_price_list_id
string
st_delivery_term_id
string
st_federation_id
string
credit_limit
number
discount_procent
number
customer_from
string <date>
customer_until
string <date>
remark
string

Responses

Request samples

Content type
application/json
{
  • "st_customer_id": "10001",
  • "cms_client_id": 0,
  • "cms_address_id": 0,
  • "cms_person_id": 0,
  • "cms_address_catalogue_id": 0,
  • "key_name": "Mustermann, Max",
  • "company": "string",
  • "name": "Mustermann",
  • "first_name": "Max",
  • "title": "string",
  • "sex": "m",
  • "birthdate": "2019-08-24",
  • "address": "string",
  • "street": "string",
  • "zip": "string",
  • "location": "string",
  • "cms_country_iso_code": "DE",
  • "tel1": "string",
  • "mobile": "string",
  • "fax": "string",
  • "email": "user@example.com",
  • "email2": "user@example.com",
  • "email_invoice": "user@example.com",
  • "www": "string",
  • "vat_id": "string",
  • "tax_id": "string",
  • "st_account_id": "string",
  • "st_payment_method_id": "string",
  • "st_payment_target_id": "string",
  • "st_payment_agreement_id": "string",
  • "st_price_list_id": "string",
  • "st_delivery_term_id": "string",
  • "st_federation_id": "string",
  • "credit_limit": 0,
  • "discount_procent": 0,
  • "customer_from": "2019-08-24",
  • "customer_until": "2019-08-24",
  • "remark": "string"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Kunde löschen

Löscht Kunde, Adresse und Person. HTTP 409 wenn der Datensatz noch verwendet wird (Belege, Buchungen, Zuordnungen).

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
string
Example: 10001

Kunden-Nr. (st_customer_id)

Responses

Response samples

Content type
application/json
{
  • "code": 400,
  • "message": "Ungültige oder fehlende Parameter",
  • "date": "2026-10-01 12:36:20"
}

Projekte

Projekte erstellen

Projekte

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
pms_type_id
required
number

Typ

Mögliche Werte: Intern = Intern Kundenauftrag = Kundenauftrag

pms_project_no
required
string

Projekt-Nr.

name
required
string

Titel

description
string

Beschreibung

status_description
string

Status

st_customer_id
string

Kunden-Nr.

per_personnel_id
integer
status
number

Status

Mögliche Werte: 1 = Aktiv 0 = Inaktiv

progress
integer

Fortschritt Prozent

scheduled_start
string <date>

Beginn

scheduled_end
string <date>

Ende

cms_address_id
integer

Responses

Request samples

Content type
application/json
[ ]

Liste aller Projekte

Projekte

Authorizations:
(bearerAuthbasicAuth)
query Parameters
limit
integer <= 250
Default: 25
Example: limit=25

Anzahl der Elemente, die pro Seite zurückgegeben werden

page
integer
Default: 0

Auflistung der Elemente ab Seite

progress
string

Fortschritt

pms_project_no
string

Projekt-Nr.

name
string

Name

pms_type_id
string
Enum: "Intern" "Kundenauftrag"

Typ

Mögliche Werte: Intern = Intern Kundenauftrag = Kundenauftrag

st_customer_id
string

Kunden-Nr.

key_name
string

Suchname

responsible_person
string

Verantwortlicher

scheduled_start
string

Beginn

scheduled_end
string

Ende

status
integer
Enum: 1 2

Status

Mögliche Werte: 1 = Aktiv 2 = Inaktiv

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    },
  • "code": 0,
  • "message": "string",
  • "date": "2019-08-24T14:15:22Z"
}

Projekte bearbeiten

Projekte

Authorizations:
(bearerAuthbasicAuth)
path Parameters
pms_project_id
required
integer
Request Body schema: application/json
required
pms_type_id
required
number

Typ

Mögliche Werte: Intern = Intern Kundenauftrag = Kundenauftrag

pms_project_no
required
string

Projekt-Nr.

name
required
string

Titel

description
string

Beschreibung

status_description
string

Status

st_customer_id
string

Kunden-Nr.

per_personnel_id
integer
status
number

Status

Mögliche Werte: 1 = Aktiv 0 = Inaktiv

progress
integer

Fortschritt Prozent

scheduled_start
string <date>

Beginn

scheduled_end
string <date>

Ende

cms_address_id
integer

Responses

Request samples

Content type
application/json
""

Projekte löschen

Projekte

Authorizations:
(bearerAuthbasicAuth)
path Parameters
pms_project_id
required
integer

Responses

Projekte abfragen

Projekte

Authorizations:
(bearerAuthbasicAuth)
path Parameters
pms_project_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "pms_type_id": 0,
  • "pms_project_no": "string",
  • "name": "string",
  • "description": "string",
  • "status_description": "string",
  • "st_customer_id": "string",
  • "per_personnel_id": 0,
  • "status": 0,
  • "progress": 0,
  • "scheduled_start": "2019-08-24",
  • "scheduled_end": "2019-08-24",
  • "cms_address_id": 0
}

Revenue Management

Vorberechnete und Live-Daten für Revenue Management Systeme. Cache-Strategie: occupancy/bookings/forecast via Cache (TTL 1h), rates live.

Belegung & KPIs

Tägliche oder monatliche Belegungs-KPIs. rooms_available ist die Zimmerkapazität, arrivals/departures die An- und Abreisen. cms_client_id ist die Mandanten-ID. Cache TTL 1h.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
date_from
required
string <date>
Example: date_from=2024-06-01

Startdatum Y-m-d

date_until
required
string <date>
Example: date_until=2024-06-30

Enddatum Y-m-d

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

granularity
string
Default: "daily"
Enum: "daily" "monthly"

Aggregierungsebene

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Preise & Raten lesen

Raten je Zimmerkategorie und Tag. Tagespreis aus swo_rm_article_contingents, sonst Listenpreis aus swo_st_prices. Immer live (kein Cache).

Authorizations:
(bearerAuthbasicAuth)
query Parameters
date_from
required
string <date>
Example: date_from=2024-06-01

Startdatum Y-m-d

date_until
required
string <date>
Example: date_until=2024-06-30

Enddatum Y-m-d

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

st_price_list_id
string

Preisliste (Standard: Mandanten-Preisliste)

st_article_id
string

Nur diese Zimmerkategorie

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Preise & Raten schreiben

Schreibt Raten in swo_rm_article_contingents. Existierende Einträge werden aktualisiert (is_rate_modified = 1), neue angelegt. Preisliste aus ClientSettings, überschreibbar per st_price_list_id.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
cms_client_id
integer

Mandant-ID

Request Body schema: application/json
required
Array
st_article_id
required
integer

Zimmerkategorie-ID

date
required
string <date>

Datum Y-m-d

price
required
number <float>

Neuer Preis

st_price_list_id
integer

Preislisten-ID (optional, Standard aus ClientSettings)

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
{
  • "code": 400,
  • "message": "Ungültige oder fehlende Parameter",
  • "date": "2026-10-01 12:36:20"
}

Buchungen & Reservierungen

Aggregierte Buchungszahlen nach Anreisetag, Channel (b.source) und Zimmerkategorie. Cache TTL 1h.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
date_from
required
string <date>
Example: date_from=2024-06-01

Startdatum Y-m-d

date_until
required
string <date>
Example: date_until=2024-06-30

Enddatum Y-m-d

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

granularity
string
Default: "daily"
Enum: "daily" "monthly"

Aggregierungsebene

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

On-The-Books Forecast

OTB-Stand je Tag: Belegung und Umsatz (Logis, F&B, Sonstiges) anteilig verteilt. Cache TTL 1h. budget_revenue / variance_pct sind null bis Budget-System angebunden.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
date_from
required
string <date>
Example: date_from=2024-06-01

Startdatum Y-m-d

date_until
required
string <date>
Example: date_until=2024-06-30

Enddatum Y-m-d

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

granularity
string
Default: "daily"
Enum: "daily" "monthly"

Aggregierungsebene

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Services

Leistungen auf Buchungen, Zimmer oder Gäste buchen und auslesen. external_id verhindert Doppelbuchungen bei Wiederholung.

Leistungen lesen

Leistungen einer Belegung, Zimmerposition oder external_id. Einschließlich noch nicht abgerechneter Positionen. Enthaltene Stücklistenpositionen fehlen. Mindestens ein Filter ist Pflicht.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
rm_booking_id
integer

Belegungs-ID

rm_item_id
integer

Zimmerposition

external_id
string

Externe Auftragsreferenz

cms_client_id
integer

Mandant-ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 10:00:00",
  • "request_id": 9001,
  • "data": [
    ]
}

Leistung(en) buchen

Bucht eine oder mehrere Leistungen.

Einzelbuchung: HTTP 201 bei neuer Position, HTTP 200 wenn external_id schon existiert.

Batch: HTTP 207. Jede Position hat ein eigenes success-Flag.

Gespeichert ist eine Leistung nur bei success: true und gesetzter vk_position_pool_id.

Keine Zeile bei Validierung, fehlendem Steuerschlüssel oder unbekannter Zimmerposition.

Check-out verhindert die Buchung nicht. Dann ist warning gesetzt.

Preis und Menge: JSON-Zahl mit Punkt oder String mit Dezimalkomma ("0,49", "12,5").

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
One of
cms_object
required
string
Enum: "rm_booking_id" "rm_item_id" "cms_address_id" "sp_ticket_id"

Typ des Zielobjekts. rm_item_id wird auf die Belegung gebucht, die Zimmerposition bleibt in rm_item_id.

id
required
integer

ID des Zielobjekts

rm_booking_id
integer

Buchungs-ID. Wird bei cms_object=rm_item_id aus der Zimmerposition ermittelt.

rm_item_id
integer

Zimmerposition. Pflicht, wenn die Leistung einem Zimmer gehören soll und cms_object nicht schon rm_item_id ist.

cms_address_id
integer

Gast-Adress-ID (wenn service_for = guest)

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

st_article_id
required
string

Artikel-ID

price
required
number <float>

Stückpreis mit Punkt oder als String mit Dezimalkomma. Bedeutung folgt der Preisart des Mandanten (netto bei isNetPricing, sonst brutto). Rundung auf vier Nachkommastellen. Beispiel 0.49 oder "0,49".

quantity
number <float>
Default: 1

Menge mit Punkt oder Dezimalkomma. Standard 1.

time_quantity
number <float>
Default: 1

Zeitmenge. Bei Stück und Ressource wird sie auf 1 gesetzt.

st_quantity_unit_id
required
string

Mengeneinheit-ID

tax
integer or null

Steuersatz in Prozent (19, 7, 0). Optional. Ohne Angabe gilt der Standard-Umsatzsteuerschlüssel am Leistungsdatum. Alternativ st_tk_id.

st_tk_id
integer

Steuerschlüssel. Hat Vorrang vor tax.

pos_discount
number <float>
Default: 0

Rabatt in Prozent

date
string <date>

Leistungsdatum Y-m-d. Pflicht, wenn date_from fehlt.

date_from
string <date>

Beginn Y-m-d. Pflicht, wenn date fehlt.

date_until
string <date>

Ende Y-m-d

text
string

Leistungstext

description
string

Beschreibung

is_hidden
integer
Default: 0
Enum: 0 1

1 blendet die Position auf Belegen aus. Die Belegnummer vk_voucher_no entsteht erst bei der Rechnung und ist vorher leer.

is_included
integer
Default: 0
Enum: 0 1

Leistung ist im Paketpreis enthalten

external_id
string <= 50 characters

Externe Auftragsreferenz. Dieselbe Id im Mandanten erzeugt keine zweite Leistung, solange die Position existiert. Kassenimporte mit eigener Gerätezuordnung zählen nicht mit. Eine eigene Vorsilbe vermeidet Kollisionen. Leer lassen, wenn kein Schutz nötig ist.

Responses

Request samples

Content type
application/json
{
  • "cms_object": "rm_item_id",
  • "id": 17,
  • "cms_client_id": 1,
  • "st_article_id": "LADEN",
  • "price": 0.49,
  • "quantity": 12.5,
  • "time_quantity": 1,
  • "st_quantity_unit_id": "St.",
  • "tax": 19,
  • "date": "2026-10-01",
  • "text": "Ladung",
  • "is_hidden": 0,
  • "external_id": "LADE-2026-0001"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 10:00:00",
  • "request_id": 9002,
  • "results": [
    ]
}

Stammdaten

Dynamisches CRUD für Stammdaten. Entity-Slug in der URL, z.B. /masterdata/articles, /masterdata/payment_methods. GET /masterdata liefert den Katalog. Auth: API-Host + HostLimitation auf die Schnittstelle masterdata.

Stammdaten-Katalog

Liste der verfügbaren Entitäten inkl. Slug, Titel und erlaubten Operationen.

Authorizations:
(bearerAuthbasicAuth)

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Stammdaten-Liste

Paginierte Liste. Filter aus dem ORM der Entität als Query-Parameter.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
entity
required
string
Enum: "accounts" "accounting_texts" "article_group_mains" "article_groups" "article_models" "articles" "branches" "cancellations" "cost_centres" "currencies" "currency_courses" "delivery_terms" "departments" "federations" "inventory_stocks" "inventory_voucher_types" "number_ranges" "order_types" "payment_agreements" "payment_methods" "payment_plans" "payment_targets" "price_lists" "prices" "purchase_voucher_types" "qualifications" "quantity_units" "sales_prefillings" "sales_tax" "sales_voucher_types" "shipping" "tax_classes" "tax_keys" "tax_types"

Stammdaten-Entität (siehe GET /masterdata)

query Parameters
limit
integer
Example: limit=25

Treffer pro Seite

page
integer

Seite

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2019-08-24T14:15:22Z",
  • "request_id": 0,
  • "data": [
    ]
}

Stammdaten anlegen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
entity
required
string
Enum: "accounts" "accounting_texts" "article_group_mains" "article_groups" "article_models" "articles" "branches" "cancellations" "cost_centres" "currencies" "currency_courses" "delivery_terms" "departments" "federations" "inventory_stocks" "inventory_voucher_types" "number_ranges" "order_types" "payment_agreements" "payment_methods" "payment_plans" "payment_targets" "price_lists" "prices" "purchase_voucher_types" "qualifications" "quantity_units" "sales_prefillings" "sales_tax" "sales_voucher_types" "shipping" "tax_classes" "tax_keys" "tax_types"

Stammdaten-Entität (siehe GET /masterdata)

Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2019-08-24T14:15:22Z",
  • "request_id": 0,
  • "data": { }
}

Stammdaten lesen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
entity
required
string
Enum: "accounts" "accounting_texts" "article_group_mains" "article_groups" "article_models" "articles" "branches" "cancellations" "cost_centres" "currencies" "currency_courses" "delivery_terms" "departments" "federations" "inventory_stocks" "inventory_voucher_types" "number_ranges" "order_types" "payment_agreements" "payment_methods" "payment_plans" "payment_targets" "price_lists" "prices" "purchase_voucher_types" "qualifications" "quantity_units" "sales_prefillings" "sales_tax" "sales_voucher_types" "shipping" "tax_classes" "tax_keys" "tax_types"

Stammdaten-Entität (siehe GET /masterdata)

id
required
string
Example: 1

Datensatz-ID (Zahl oder String, z.B. BAR bei Zahlungsweisen)

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2019-08-24T14:15:22Z",
  • "request_id": 0,
  • "data": { }
}

Stammdaten ändern

PUT und PATCH sind ebenfalls erlaubt.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
entity
required
string
Enum: "accounts" "accounting_texts" "article_group_mains" "article_groups" "article_models" "articles" "branches" "cancellations" "cost_centres" "currencies" "currency_courses" "delivery_terms" "departments" "federations" "inventory_stocks" "inventory_voucher_types" "number_ranges" "order_types" "payment_agreements" "payment_methods" "payment_plans" "payment_targets" "price_lists" "prices" "purchase_voucher_types" "qualifications" "quantity_units" "sales_prefillings" "sales_tax" "sales_voucher_types" "shipping" "tax_classes" "tax_keys" "tax_types"

Stammdaten-Entität (siehe GET /masterdata)

id
required
string
Example: 1

Datensatz-ID (Zahl oder String, z.B. BAR bei Zahlungsweisen)

Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2019-08-24T14:15:22Z",
  • "request_id": 0,
  • "data": { }
}

Stammdaten ändern

Authorizations:
(bearerAuthbasicAuth)
path Parameters
entity
required
string
Enum: "accounts" "accounting_texts" "article_group_mains" "article_groups" "article_models" "articles" "branches" "cancellations" "cost_centres" "currencies" "currency_courses" "delivery_terms" "departments" "federations" "inventory_stocks" "inventory_voucher_types" "number_ranges" "order_types" "payment_agreements" "payment_methods" "payment_plans" "payment_targets" "price_lists" "prices" "purchase_voucher_types" "qualifications" "quantity_units" "sales_prefillings" "sales_tax" "sales_voucher_types" "shipping" "tax_classes" "tax_keys" "tax_types"

Stammdaten-Entität (siehe GET /masterdata)

id
required
string
Example: 1

Datensatz-ID (Zahl oder String, z.B. BAR bei Zahlungsweisen)

Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2019-08-24T14:15:22Z",
  • "request_id": 0,
  • "data": { }
}

Stammdaten löschen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
entity
required
string
Enum: "accounts" "accounting_texts" "article_group_mains" "article_groups" "article_models" "articles" "branches" "cancellations" "cost_centres" "currencies" "currency_courses" "delivery_terms" "departments" "federations" "inventory_stocks" "inventory_voucher_types" "number_ranges" "order_types" "payment_agreements" "payment_methods" "payment_plans" "payment_targets" "price_lists" "prices" "purchase_voucher_types" "qualifications" "quantity_units" "sales_prefillings" "sales_tax" "sales_voucher_types" "shipping" "tax_classes" "tax_keys" "tax_types"

Stammdaten-Entität (siehe GET /masterdata)

id
required
string
Example: 1

Datensatz-ID (Zahl oder String, z.B. BAR bei Zahlungsweisen)

Responses

Response samples

Content type
application/json
{
  • "code": 400,
  • "message": "Ungültige oder fehlende Parameter",
  • "date": "2026-10-01 12:36:20"
}

Tagesboard

Tagesgeschäft der Hotel-Belegungen: Anreisen, Abreisen, Gäste im Haus, Bleiber und offene Salden. Nur Lesen. Pfad /bookings/dayboard. Auth: HostLimitation auf die Schnittstelle bookings.

Tagesboard

Anreisen, Abreisen, Gäste im Haus (Übernachtung ohne Abreisetag), Bleiber und offene Salden. Zähler in counts sind Zimmerzeilen. open_amount summiert jede Belegung einmal.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
date
string <date>
Example: date=2026-10-07

Kalendertag (Y-m-d). Standard: heute.

section
string
Enum: "arrivals" "departures" "in_house" "stayovers" "open_balances"

Nur diese Liste. counts bleibt der ganze Tag.

cms_client_id
integer

Mandant-ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2019-08-24T14:15:22Z",
  • "request_id": 0,
  • "day": "2019-08-24",
  • "section": "string",
  • "counts": { },
  • "arrivals": [
    ],
  • "departures": [
    ],
  • "in_house": [
    ],
  • "stayovers": [
    ],
  • "open_balances": [
    ]
}

Tickets

Tickets erstellen

Tickets

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
cms_address_id
integer
cms_facility_id
integer
cl_checklist_id
integer
st_article_id
integer
st_cost_centre_id
integer
pms_project_id
integer
cms_contacting_id
integer
auf_task_id
integer
rm_item_id
integer
rm_booking_id
integer
pze_shift_id
integer
task
string
azn_time
string
st_customer_id
string

Kunden-Nr.

to_clear
boolean

Abrechnen

date
required
string <date-time>

Fällig

estimated_time
string

Erwartete Dauer Min.

subject
required
string

Titel

content
string

Beschreibung

remark
string

Notiz

priority
required
number

Priorität

Mögliche Werte: 1 = Blocker 2 = Kritisch 6 = Hoch 3 = Normal 4 = Geringfügig 5 = Trivial

status
number

Status

Mögliche Werte: 0 = Neu 1 = Offen 2 = In Bearbeitung 7 = Warte auf Freigabe 8 = Freigabe 6 = Klärung 3 = Wiedervorlage 4 = Erledigt 5 = Archiviert 9 = Abgelehnt default = Neu

sp_type_id
number

Typ

Mögliche Werte: 1 = Beispieltyp

sp_ticket_category_id
number

Kategorie

Mögliche Werte: 3 = adsf 2 = Housekeeping 1 = Rezepzion

per_activity_id
number

Bereich

Mögliche Werte: 2 = Entwicklung 4 = Marketing 3 = Service 1 = Anmeldung

bv_usergroup_id
number

Benutzergruppe

Mögliche Werte: 9 = restaurant 4 = Rezeption 5 = Stempeluhr

bv_user_id
integer
creator
string

Ersteller

tags
string

Tags

Responses

Request samples

Content type
application/json
{
  • "priority": 3,
  • "date": "2026-10-01 12:36:00",
  • "status": 0,
  • "subject": "Heizung defekt",
  • "content": "Die Heizung in Raum 2 fällt ständig aus."
}

Liste aller Tickets

Tickets. Ohne cms_client_id gilt für diesen Zugang cms_client_id=1.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
limit
integer <= 250
Default: 25
Example: limit=25

Anzahl der Elemente, die pro Seite zurückgegeben werden

page
integer
Default: 0

Auflistung der Elemente ab Seite

to_clear
string
sp_ticket_id
string

ID

title
string

Titel

subject
string

Titel

content
string

Beschreibung

category
integer
Enum: 3 2 1

Kategorie

Mögliche Werte: 3 = adsf 2 = Housekeeping 1 = Rezepzion

type
integer
Value: 1

Typ

Mögliche Werte: 1 = Beispieltyp

project
string

Projekt

st_customer_id
string

Kunden-Nr.

detector
string

Melder

usergroup
string

Gruppe

creator
string

Erstellt von

editor
string

Bearbeiter

date
string

Fällig

date_time
string

Uhrzeit

estimated_time
string

Soll

actual_time
string

Ist

created_date
string

Erstellt am

modified_date
string

Geändert am

closed_date
string

Geschlossen am

status
integer
Enum: 1 2 9 4 5 7 8 6 3

Status

Mögliche Werte: 1 = Offen 2 = In Bearbeitung 9 = Abgelehnt 4 = Erledigt 5 = Archiviert 7 = Warte auf Freigabe 8 = Freigabe 6 = Klärung 3 = Wiedervorlage

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    },
  • "code": 0,
  • "message": "string",
  • "date": "2019-08-24T14:15:22Z"
}

Tickets bearbeiten

Tickets

Authorizations:
(bearerAuthbasicAuth)
path Parameters
sp_ticket_id
required
integer
Request Body schema: application/json
required
cms_address_id
integer
cms_facility_id
integer
cl_checklist_id
integer
st_article_id
integer
st_cost_centre_id
integer
pms_project_id
integer
cms_contacting_id
integer
auf_task_id
integer
rm_item_id
integer
rm_booking_id
integer
pze_shift_id
integer
task
string
azn_time
string
st_customer_id
string

Kunden-Nr.

to_clear
boolean

Abrechnen

date
required
string <date-time>

Fällig

estimated_time
string

Erwartete Dauer Min.

subject
required
string

Titel

content
string

Beschreibung

remark
string

Notiz

priority
required
number

Priorität

Mögliche Werte: 1 = Blocker 2 = Kritisch 6 = Hoch 3 = Normal 4 = Geringfügig 5 = Trivial

status
number

Status

Mögliche Werte: 0 = Neu 1 = Offen 2 = In Bearbeitung 7 = Warte auf Freigabe 8 = Freigabe 6 = Klärung 3 = Wiedervorlage 4 = Erledigt 5 = Archiviert 9 = Abgelehnt default = Neu

sp_type_id
number

Typ

Mögliche Werte: 1 = Beispieltyp

sp_ticket_category_id
number

Kategorie

Mögliche Werte: 3 = adsf 2 = Housekeeping 1 = Rezepzion

per_activity_id
number

Bereich

Mögliche Werte: 2 = Entwicklung 4 = Marketing 3 = Service 1 = Anmeldung

bv_usergroup_id
number

Benutzergruppe

Mögliche Werte: 9 = restaurant 4 = Rezeption 5 = Stempeluhr

bv_user_id
integer
creator
string

Ersteller

tags
string

Tags

Responses

Request samples

Content type
application/json
""

Tickets löschen

Tickets

Authorizations:
(bearerAuthbasicAuth)
path Parameters
sp_ticket_id
required
integer

Responses

Tickets abfragen

Ticket. Ohne cms_client_id gilt für diesen Zugang cms_client_id=1.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
sp_ticket_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "cms_address_id": 0,
  • "cms_facility_id": 0,
  • "cl_checklist_id": 0,
  • "st_article_id": 0,
  • "st_cost_centre_id": 0,
  • "pms_project_id": 0,
  • "cms_contacting_id": 0,
  • "auf_task_id": 0,
  • "rm_item_id": 0,
  • "rm_booking_id": 0,
  • "pze_shift_id": 0,
  • "task": "string",
  • "azn_time": "string",
  • "st_customer_id": "string",
  • "to_clear": true,
  • "date": "2019-08-24T14:15:22Z",
  • "estimated_time": "string",
  • "subject": "string",
  • "content": "string",
  • "remark": "string",
  • "priority": 0,
  • "status": 0,
  • "sp_type_id": 0,
  • "sp_ticket_category_id": 0,
  • "per_activity_id": 0,
  • "bv_usergroup_id": 0,
  • "bv_user_id": 0,
  • "creator": "string",
  • "tags": "string"
}

Status und interne Notiz

Setzt Status, interne Notiz und/oder den Bearbeiter. Leere Felder bleiben unverändert. Genau eines von bv_user_id oder username setzt den Bearbeiter. Die Notiz verschickt keine E-Mail. Ohne cms_client_id gilt für diesen Zugang cms_client_id=1. status: 1 offen, 2 in Bearbeitung, 3 Wiedervorlage, 4 erledigt, 9 abgelehnt.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
sp_ticket_id
required
integer
Request Body schema: application/json
required
status
integer
Enum: 1 2 3 4 9
note
string <= 8000 characters

Interne Notiz

bv_user_id
integer

Bearbeiter. Nicht zusammen mit username.

username
string

Login des Bearbeiters, exakt. Nicht zusammen mit bv_user_id.

Responses

Request samples

Content type
application/json
{
  • "username": "vitalis.ermanntraut"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2019-08-24T14:15:22Z",
  • "request_id": 0
}

Tisch-Reservierungen

Tisch-Reservierungen anlegen, lesen und Status setzen (Angekommen/Fertig). Resource-ID ist rm_booking_id. Auth: API-Host + HostLimitation auf die Schnittstelle tables.

Tisch-Reservierungen auflisten

Paginierte Liste der Tisch-Reservierungen. date_from / date_until filtern nach überlappendem Zeitraum.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
limit
integer
Example: limit=25

Treffer pro Seite

page
integer
Example: page=1

Seite (ab 1)

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

date_from
string <date>
Example: date_from=2026-10-01

Zeitraum von (Y-m-d). Reservierungen deren Tisch den Zeitraum überlappt.

date_until
string <date>
Example: date_until=2026-10-08

Zeitraum bis (Y-m-d).

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Tisch-Reservierung anlegen

Legt Reservierungskopf und mindestens einen Tisch an. Ohne rm_resource_id wird ein freier Tisch im Zeitraum zugeordnet. HTTP 409 wenn keiner frei ist oder der angegebene Tisch belegt ist. Reservierungsnummer kommt aus dem Nummernkreis TR. until optional: sonst Dauer aus den Tisch-Einstellungen.

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
rm_booking_id
integer

Interne Reservierungs-ID (Resource-ID, nur lesend)

rm_booking_no
string

Reservierungsnummer (Nummernkreis TR, nur lesend)

rm_catalogue_id
string

Katalog. Immer TR bei diesem Endpoint.

cms_client_id
integer

Mandant-ID

st_customer_id
string

Kunden-Nr. Pflicht beim Anlegen, sofern cms_address_id fehlt.

cms_address_id
integer

Adress-ID. Nur nötig ohne st_customer_id.

name
string

Anzeigename. Leer = Nachname des Kunden.

from
required
string <date-time>

Beginn. Auf Root-Ebene wenn nur ein Tisch, sonst in items[].

from_time
string

Uhrzeit wenn from nur Y-m-d ist.

until
string <date-time>

Ende. Optional.

rm_resource_id
integer

Tisch-ID. Optional. Ohne Angabe wird ein freier Tisch zugeordnet.

table_number
string

Tischnummer bei einem Tisch ohne items[].

token
string

Tischkürzel bei einem Tisch ohne items[].

resources
string

Mehrere Tisch-IDs kommagetrennt, Alternative zu items[].

st_article_id
string

Optionale Leistung.

quantity
integer
Default: 1

Gäste (ein Tisch).

status
integer
Enum: 0 1 2 3 4 13 30

Status: 0 = Reserviert, 1 = Angekommen (Check-In), 2 = Fertig (Check-Out), 3 = Storniert, 4 = Angefragt, 30 = Nicht erschienen. Standard beim Anlegen: 0.

remark
string

Bemerkung zur Reservierung

source
string

Herkunft. Standard: api.

source_no
string

Externe Vorgangsnummer der Quelle

send_notification
integer
Default: 0
Enum: 0 1

1 = Bestätigung versenden. Standard: 0.

reserved_date
string <date-time>

Reservierungsdatum (nur lesend)

access_token
string

Zugangstoken (nur lesend)

Array of objects

Tische. Beim Anlegen optional: ohne items[] gelten from/until/Tischfelder auf Root-Ebene als ein Tisch.

Responses

Request samples

Content type
application/json
{
  • "st_customer_id": "10001",
  • "from": "2026-09-12 19:00:00",
  • "until": "2026-09-12 21:00:00",
  • "quantity": 4,
  • "status": 0,
  • "remark": "",
  • "source": "api"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Tisch-Reservierung lesen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelner Tisch nur über rm_item_id im Body/Query.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Status ändern (Angekommen / Fertig)

URL-{id} ist immer rm_booking_id. Einzelner Tisch: rm_item_id im Body oder Query.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelner Tisch nur über rm_item_id im Body/Query.

Request Body schema: application/json
required
required
integer or string

1 / checkin / arrived = Angekommen, 2 / checkout / finished = Fertig.

rm_item_id
integer

Nur diesen Tisch ein- oder auschecken.

table_number
string

Alternative zu rm_item_id: Tischnummer innerhalb der Reservierung.

token
string

Alternative zu rm_item_id: Tischkürzel innerhalb der Reservierung.

Responses

Request samples

Content type
application/json
{
  • "status": "checkin",
  • "rm_item_id": 9001
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Angekommen (Check-In)

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelner Tisch nur über rm_item_id im Body/Query.

Request Body schema: application/json
optional
rm_item_id
integer
table_number
string

Responses

Request samples

Content type
application/json
{
  • "rm_item_id": 9001
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Fertig (Check-Out)

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
integer
Example: 12345

Immer rm_booking_id. Einzelner Tisch nur über rm_item_id im Body/Query.

Request Body schema: application/json
optional
rm_item_id
integer
table_number
string

Responses

Request samples

Content type
application/json
{
  • "rm_item_id": 9001
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Verfügbarkeit

Verfügbarkeit, Restriktionen und Preise je Zimmerkategorie und Tag. Auth: API-Host + HostLimitation auf die Schnittstelle availability.

Verfügbarkeit, Restriktionen und Preise

Live-Liste je Tag und Zimmerkategorie: physische Verfügbarkeit, Allotment, Stop-Sell / CTA / CTD / Min-Max-Aufenthalt und Tagespreis. rooms_ooo sind gesperrte Zeiträume (Teilmenge von rooms_booked). Kein Cache. Auth über die Schnittstelle availability.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
date_from
required
string <date>
Example: date_from=2024-06-01

Startdatum Y-m-d

date_until
required
string <date>
Example: date_until=2024-06-30

Enddatum Y-m-d

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

st_price_list_id
string

Preisliste (Standard: Mandanten-Preisliste)

st_article_id
string

Nur diese Zimmerkategorie

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "source": "cache",
  • "data": [
    ]
}

Zimmer / Housekeeping

Reinigungsstatus der Zimmer, Benutzerstatus der Belegung und Reinigungsangaben. Lesen und Schreiben. Auth: API-Host + HostLimitation auf die Schnittstelle resources.

Zimmerliste mit Reinigungsstatus

Alle Hotelzimmer inkl. Reinigungsstatus und Belegung am Stichtag. cleaning_status und user_status im Envelope sind die Kataloge (inkl. individuell angelegter Kennzeichnungen).

Authorizations:
(bearerAuthbasicAuth)
query Parameters
date
string <date>
Example: date=2026-10-01

Stichtag für Belegung und Reinigungsliste (Y-m-d, Standard: heute)

cms_client_id
integer

Mandant-ID (Standard: aktiver Client)

cleaning_status
string

Filter: Zahl 0–5 oder Token (dirty, clean, …)

occupied
integer

1 = nur belegte, 0 = nur unbelegte Zimmer

floor
string

Etage

st_article_id
string

Zimmerkategorie

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": [
    ],
  • "cleaning_status": [
    ],
  • "user_status": [
    ]
}

Zimmer lesen

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
string
Example: 101

rm_resource_id, Zimmernummer, Kürzel (token) oder number.

query Parameters
date
string <date>
Example: date=2026-10-01

Stichtag Y-m-d

cms_client_id
integer

Mandant-ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Reinigungsstatus / Belegungsangaben schreiben

Setzt den Reinigungsstatus des Zimmers und optional Benutzerstatus, cleaning_type und Reinigungsliste (note2) der aktuellen Belegung. bv_user_id optional für die Historie.

Authorizations:
(bearerAuthbasicAuth)
path Parameters
id
required
string
Example: 101

rm_resource_id, Zimmernummer, Kürzel (token) oder number.

query Parameters
date
string <date>
Example: date=2026-10-01

Stichtag für Belegungsfelder

Request Body schema: application/json
required
bv_user_id
integer

Optionaler Benutzer für die Historie (wer den Reinigungsstatus gesetzt hat). Muss aktiv und dem Mandanten zugeordnet sein. IDs über GET /users.

integer or string

Zahl 0–5 oder Token (clean, dirty, is_cleaning, checked, out_of_service, no_cleaning_required).

integer or string

Alias für cleaning_status.

rm_item_id
integer

Belegungszimmer, falls mehrere am Tag.

Array of strings or objects

Ersetzt die Kennzeichnungen der Belegung. IDs, Token oder Namen. Leeres Array löscht alle.

cleaning_type
string

0, 1, -1, -2, 1d–14d, mon–sun

cleaning_type_guest
integer
Enum: -2 -1 0 1
note2
string

Reinigungsliste

note
string

Gästenotiz

Responses

Request samples

Content type
application/json
{
  • "bv_user_id": 12,
  • "cleaning_status": "dirty",
  • "user_status": [
    ],
  • "cleaning_type": "0",
  • "note2": "Extra Handtücher"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "",
  • "date": "2026-10-01 12:36:20",
  • "data": {
    }
}

Nachrichten

Unterhaltungen

Threads der Nachrichtenzentrale. Ohne source: WhatsApp, Booking.com und E-Mail. source=nr ist die interne Unterhaltung des angemeldeten Benutzers. thread_key als Query liefert einen Verlauf.

Authorizations:
(bearerAuthbasicAuth)
query Parameters
cms_client_id
integer

Mandant-ID. Ohne einzigen Mandanten erforderlich.

source
string

whatsapp, bookingcom, email oder nr

cms_address_id
integer

Nur diese Person

unread
integer

1 = nur Unterhaltungen mit ungelesenen Eingängen

thread_key
string
Example: thread_key=email:gast@example.com

Eine Unterhaltung, Format source:contact

limit
integer

Höchstens 100, Standard 50

Responses

Nachricht senden

Antwort über denselben Kanal. text ist der Inhalt. thread_key oder source plus contact. E-Mail braucht subject und eine Adresse als contact. Kein Anhang, kein Postfach.

Authorizations:
(bearerAuthbasicAuth)
Request Body schema: application/json
required
text
required
string <= 20000 characters
thread_key
string
source
string
Enum: "whatsapp" "bookingcom" "email" "nr"
contact
string
subject
string <= 200 characters

Betreff, für E-Mail erforderlich

cms_address_id
integer

Responses

Request samples

Content type
application/json
{
  • "source": "email",
  • "contact": "gast@example.com",
  • "subject": "Ihre Anfrage",
  • "text": "Wir haben den Termin bestätigt."
}

Verlauf einer Unterhaltung

Authorizations:
(bearerAuthbasicAuth)
path Parameters
thread_key
required
string
Example: email:gast@example.com

source:contact

query Parameters
cms_client_id
integer

Mandant-ID

Responses