Download OpenAPI specification:
API-Changesets (neueste zuerst):
Pfade: /resources, /resources/{id}
is_locked (1 = gesperrter Zeitraum, kein Gast). note ist dann der Sperrgrund.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.POST/PATCH / DELETE /locked-ranges/{rm_item_id}: ändern bzw. löschen.locked-ranges.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.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.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.reference wird nicht erneut gebucht (HTTP 200). Auth: HostLimitation auf die Schnittstelle vouchers.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.Pfade: /resources, /resources/{id}
POST /resources/{id}: optionales bv_user_id für Historie (created_from).cleaning_changed_by, cleaning_changed_by_name, cleaning_changed_at.Pfade: /users, /users/{id}
GET /users und GET /users/{id}: Benutzer des Mandanten (ohne Passwort/Rechte).is_active (1, 0, all) oder include_disabled=1.Pfade: /fibu/export
lock=true wirkt wie lock=1; false/0 bleibt aus. Ungültige Werte liefern HTTP 400 (kein stiller Erfolg mehr).locked (boolean), locked_count (Anzahl) und locked_vouchers (Liste der tatsächlich festgeschriebenen Belege mit type und voucher_no).Anzahlungen anlegen, lesen, ändern und Zahlungen/Teilrechnungen erzeugen. Resource-ID ist vk_deposit_id. Auth: API-Host + HostLimitation auf die Schnittstelle deposits.
Paginierte Liste der Anzahlungen.
| 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 |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "vk_deposit_id": 42,
- "st_customer_id": "10001",
- "rm_booking_id": 12345,
- "amount": 300,
- "currency": "EUR",
- "date": "2026-08-19 10:00:00",
- "due_date": "2026-09-19",
- "st_payment_method_id": "UE",
- "remark": "Anzahlung: Belegung #260001",
- "deposit_voucher_no": "",
- "payed_date": "0000-00-00",
- "is_cleared": 0,
- "status": 0
}
]
}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).
| 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). |
{- "rm_booking_id": 12345,
- "amount": 300,
- "st_payment_method_id": "CC",
- "create_invoice": 1,
- "book_payment": 1,
- "reference": "pi_123"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "vk_deposit_id": 42,
- "st_customer_id": "10001",
- "rm_booking_id": 12345,
- "amount": 300,
- "currency": "EUR",
- "date": "2026-08-19 10:00:00",
- "due_date": "2026-09-19",
- "st_payment_method_id": "UE",
- "remark": "Anzahlung: Belegung #260001",
- "deposit_voucher_no": "",
- "payed_date": "0000-00-00",
- "is_cleared": 0,
- "status": 0
}
}| id required | integer Example: 42 vk_deposit_id |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "vk_deposit_id": 42,
- "st_customer_id": "10001",
- "rm_booking_id": 12345,
- "amount": 300,
- "currency": "EUR",
- "date": "2026-08-19 10:00:00",
- "due_date": "2026-09-19",
- "st_payment_method_id": "UE",
- "remark": "Anzahlung: Belegung #260001",
- "deposit_voucher_no": "",
- "payed_date": "0000-00-00",
- "is_cleared": 0,
- "status": 0
}
}Teilupdate. Nur solange keine Zahlung und keine Teilrechnung vorliegen. PUT und PATCH sind ebenfalls erlaubt.
| id required | integer Example: 42 vk_deposit_id |
| 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). |
{- "amount": 350,
- "remark": "Anzahlung angepasst"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "vk_deposit_id": 42,
- "st_customer_id": "10001",
- "rm_booking_id": 12345,
- "amount": 300,
- "currency": "EUR",
- "date": "2026-08-19 10:00:00",
- "due_date": "2026-09-19",
- "st_payment_method_id": "UE",
- "remark": "Anzahlung: Belegung #260001",
- "deposit_voucher_no": "",
- "payed_date": "0000-00-00",
- "is_cleared": 0,
- "status": 0
}
}| id required | integer Example: 42 vk_deposit_id |
| 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). |
{- "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"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "vk_deposit_id": 42,
- "st_customer_id": "10001",
- "rm_booking_id": 12345,
- "amount": 300,
- "currency": "EUR",
- "date": "2026-08-19 10:00:00",
- "due_date": "2026-09-19",
- "st_payment_method_id": "UE",
- "remark": "Anzahlung: Belegung #260001",
- "deposit_voucher_no": "",
- "payed_date": "0000-00-00",
- "is_cleared": 0,
- "status": 0
}
}Löscht die Anzahlung und storniert ggf. die zugehörige Zahlung. HTTP 409 wenn bereits mit einer Schlussrechnung verrechnet oder Kassenbuch abgeschlossen.
| id required | integer Example: 42 vk_deposit_id |
{- "code": 400,
- "message": "Ungültige oder fehlende Parameter",
- "date": "2026-08-25 23:35:23"
}Erstellt die Teil-/Anzahlungsrechnung zur Belegung. Nur mit rm_booking_id. HTTP 409 wenn die Belegung bereits abgerechnet ist oder schon eine Teilrechnung existiert.
| id required | integer Example: 42 vk_deposit_id |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "vk_deposit_id": 42,
- "st_customer_id": "10001",
- "rm_booking_id": 12345,
- "amount": 300,
- "currency": "EUR",
- "date": "2026-08-19 10:00:00",
- "due_date": "2026-09-19",
- "st_payment_method_id": "UE",
- "remark": "Anzahlung: Belegung #260001",
- "deposit_voucher_no": "",
- "payed_date": "0000-00-00",
- "is_cleared": 0,
- "status": 0
}
}Verbucht den Zahlungseingang. Erzeugt bei Bedarf zuerst die Anzahlungsrechnung (nur mit Belegung).
| id required | integer Example: 42 vk_deposit_id |
| 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. |
{- "st_payment_method_id": "CC",
- "reference": "pi_123"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "vk_deposit_id": 42,
- "st_customer_id": "10001",
- "rm_booking_id": 12345,
- "amount": 300,
- "currency": "EUR",
- "date": "2026-08-19 10:00:00",
- "due_date": "2026-09-19",
- "st_payment_method_id": "UE",
- "remark": "Anzahlung: Belegung #260001",
- "deposit_voucher_no": "",
- "payed_date": "0000-00-00",
- "is_cleared": 0,
- "status": 0
}
}Artikel
| 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 |
| 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 |
[ ]Artikel
| 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 |
{- "data": [
- {
- "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
}
], - "pagination": {
- "limit": 25,
- "page": 0,
- "total": 0
}, - "code": 0,
- "message": "string",
- "date": "2019-08-24T14:15:22Z"
}Artikel
| st_article_id required | integer |
| 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 |
| 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 |
""Artikel
| st_article_id required | integer |
{- "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
}Verkaufsbelege (Rechnungen) lesen und Zahlungen verbuchen. Resource-ID ist vk_voucher_no. Auth: API-Host + HostLimitation auf die Schnittstelle vouchers.
Rechnungen (Belegstufe 5) einer Belegung.
| rm_booking_id required | integer Example: rm_booking_id=12345 Nur Belege dieser Belegung |
{- "code": 200,
- "message": "",
- "date": "2026-08-26 16:30:00",
- "data": [
- {
- "vk_voucher_no": "RE-260001",
- "st_voucher_type_id": "RE",
- "voucher_level": 5,
- "sum_gross": 290.88,
- "sum_opened": 190.88,
- "currency": "EUR",
- "st_payment_method_id": "CC",
- "payment_reference": "term_123",
- "rm_booking_id": 12345
}
]
}Rechnung inkl. Zahlungen (payments).
| id required | string Example: RE-260001 vk_voucher_no |
{- "code": 200,
- "message": "",
- "date": "2026-08-26 16:30:00",
- "data": {
- "vk_voucher_no": "RE-260001",
- "st_voucher_type_id": "RE",
- "voucher_level": 5,
- "sum_gross": 290.88,
- "sum_opened": 190.88,
- "currency": "EUR",
- "st_payment_method_id": "CC",
- "payment_reference": "term_123",
- "rm_booking_id": 12345,
- "payments": [
- {
- "fi_account_movement_id": 9001,
- "amount": 100,
- "reference": "term_123",
- "st_payment_method_id": "CC"
}
]
}
}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).
| id required | string Example: RE-260001 vk_voucher_no |
| 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> |
{- "amount": 100,
- "st_payment_method_id": "CC",
- "reference": "term_123"
}{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": {
- "vk_voucher_no": "RE-260001",
- "st_voucher_type_id": "RE",
- "voucher_level": 0,
- "voucher_date": "2019-08-24",
- "sum_gross": 0.1,
- "sum_opened": 0.1,
- "currency": "EUR",
- "st_payment_method_id": "string",
- "payment_reference": "string",
- "payed_date": "2019-08-24",
- "status": 0,
- "fi_account_movement_id": 0,
- "rm_booking_id": 0,
- "st_customer_id": "string",
- "payments": [
- {
- "fi_account_movement_id": 0,
- "amount": 0.1,
- "date": "2019-08-24T14:15:22Z",
- "st_payment_method_id": "string",
- "reference": "string",
- "remark": "string",
- "currency": "string"
}
]
}
}Hotel-Belegungen anlegen, lesen und Check-In/Check-Out. Resource-ID ist rm_booking_id. Auth: API-Host + HostLimitation auf die Schnittstelle bookings.
Paginierte Liste der Belegungen (zimmerbasiert, wie im Hotel-Manager). date_from / date_until filtern nach überlappendem Zimmerzeitraum.
| 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> Zeitraum von (Y-m-d). Belegungen deren Zimmer den Zeitraum überlappen (DATE(until) >= date_from). |
| date_until | string <date> Zeitraum bis (Y-m-d). Belegungen deren Zimmer den Zeitraum überlappen (DATE(from) <= date_until). |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "st_customer_id": "10001",
- "cms_address_id": 5001,
- "name": "Mustermann",
- "source": "api",
- "remark": "",
- "items": [
- {
- "rm_item_id": 9001,
- "from": "2026-08-20 12:00:00",
- "until": "2026-08-22 12:00:00",
- "rm_resource_id": 5,
- "st_article_id": "DZ",
- "quantity": 2,
- "children": 0,
- "status": 0
}
]
}
]
}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. Belegungsnummer kommt aus dem Nummernkreis HM. Preis wird aus der Preisliste berechnet, sofern price nicht gesetzt ist.
| 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). |
{- "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"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "st_customer_id": "10001",
- "cms_address_id": 5001,
- "name": "Mustermann",
- "source": "api",
- "remark": "",
- "items": [
- {
- "rm_item_id": 9001,
- "from": "2026-08-20 12:00:00",
- "until": "2026-08-22 12:00:00",
- "rm_resource_id": 5,
- "st_article_id": "DZ",
- "quantity": 2,
- "children": 0,
- "status": 0
}
]
}
}| id required | integer Example: 12345 Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein). |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "st_customer_id": "10001",
- "cms_address_id": 5001,
- "name": "Mustermann",
- "source": "api",
- "remark": "",
- "items": [
- {
- "rm_item_id": 9001,
- "from": "2026-08-20 12:00:00",
- "until": "2026-08-22 12:00:00",
- "rm_resource_id": 5,
- "st_article_id": "DZ",
- "quantity": 2,
- "children": 0,
- "status": 0
}
]
}
}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.
| id required | integer Example: 12345 Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein). |
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. |
{- "status": "checkin",
- "rm_item_id": 9001
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "st_customer_id": "10001",
- "cms_address_id": 5001,
- "name": "Mustermann",
- "source": "api",
- "remark": "",
- "items": [
- {
- "rm_item_id": 9001,
- "from": "2026-08-20 12:00:00",
- "until": "2026-08-22 12:00:00",
- "rm_resource_id": 5,
- "st_article_id": "DZ",
- "quantity": 2,
- "children": 0,
- "status": 0
}
]
}
}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.
| id required | integer Example: 12345 Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein). |
| rm_item_id | integer Nur dieses Zimmer (rm_item_id) |
| room_number | string Nur dieses Zimmer, per Zimmernummer |
{- "rm_item_id": 9001
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "st_customer_id": "10001",
- "cms_address_id": 5001,
- "name": "Mustermann",
- "source": "api",
- "remark": "",
- "items": [
- {
- "rm_item_id": 9001,
- "from": "2026-08-20 12:00:00",
- "until": "2026-08-22 12:00:00",
- "rm_resource_id": 5,
- "st_article_id": "DZ",
- "quantity": 2,
- "children": 0,
- "status": 0
}
]
}
}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.
| id required | integer Example: 12345 Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein). |
| rm_item_id | integer Nur dieses Zimmer (rm_item_id) |
| room_number | string Nur dieses Zimmer, per Zimmernummer |
{- "rm_item_id": 9001
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "st_customer_id": "10001",
- "cms_address_id": 5001,
- "name": "Mustermann",
- "source": "api",
- "remark": "",
- "items": [
- {
- "rm_item_id": 9001,
- "from": "2026-08-20 12:00:00",
- "until": "2026-08-22 12:00:00",
- "rm_resource_id": 5,
- "st_article_id": "DZ",
- "quantity": 2,
- "children": 0,
- "status": 0
}
]
}
}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.
| id required | integer Example: 12345 Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein). |
| 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. |
{- "st_payment_method_id": "CC",
- "book_payment": 1,
- "amount": 100,
- "reference": "term_123"
}{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": {
- "vk_voucher_no": "RE-260001",
- "st_voucher_type_id": "RE",
- "voucher_date": "2019-08-24",
- "sum_gross": 0.1,
- "sum_opened": 0.1,
- "currency": "EUR",
- "st_payment_method_id": "string",
- "payment_reference": "string",
- "payed_date": "2019-08-24",
- "status": 0,
- "fi_account_movement_id": 0
}
}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).
| id required | integer Example: 12345 Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein). |
| 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> |
{- "st_payment_method_id": "CC",
- "amount": 100,
- "reference": "term_123"
}{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": {
- "vk_voucher_no": "RE-260001",
- "st_voucher_type_id": "RE",
- "voucher_date": "2019-08-24",
- "sum_gross": 0.1,
- "sum_opened": 0.1,
- "currency": "EUR",
- "st_payment_method_id": "string",
- "payment_reference": "string",
- "payed_date": "2019-08-24",
- "status": 0,
- "fi_account_movement_id": 0
}
}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.
| id required | integer Example: 12345 Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein). |
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 |
{- "user_status": [
- "VIP",
- "Hund"
], - "rm_item_id": 9001
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "st_customer_id": "10001",
- "cms_address_id": 5001,
- "name": "Mustermann",
- "source": "api",
- "remark": "",
- "items": [
- {
- "rm_item_id": 9001,
- "from": "2026-08-20 12:00:00",
- "until": "2026-08-22 12:00:00",
- "rm_resource_id": 5,
- "st_article_id": "DZ",
- "quantity": 2,
- "children": 0,
- "status": 0
}
]
}
}Setzt cleaning_type, Gastwunsch und/oder Reinigungsliste (note2). URL-{id} ist rm_booking_id. Einzelnes Zimmer: rm_item_id oder room_number.
| id required | integer Example: 12345 Immer rm_booking_id. Einzelnes Zimmer nur über rm_item_id im Body/Query (IDs können identisch sein). |
| 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 |
{- "cleaning_type": "0",
- "note2": "Extra Handtücher",
- "rm_item_id": 9001
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "st_customer_id": "10001",
- "cms_address_id": 5001,
- "name": "Mustermann",
- "source": "api",
- "remark": "",
- "items": [
- {
- "rm_item_id": 9001,
- "from": "2026-08-20 12:00:00",
- "until": "2026-08-22 12:00:00",
- "rm_resource_id": 5,
- "st_article_id": "DZ",
- "quantity": 2,
- "children": 0,
- "status": 0
}
]
}
}Benutzer des Mandanten. Nur Lesen. Auth: API-Host + HostLimitation auf die Schnittstelle users.
Benutzer mit Zuordnung zum Mandanten. Standard nur aktive. Keine Passwörter oder Rechte.
| cms_client_id | integer Mandant-ID (Standard: aktiver Client) |
| 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) |
{- "code": 200,
- "message": "",
- "date": "2026-09-02 14:00:00",
- "data": [
- {
- "bv_user_id": 12,
- "username": "polina",
- "first_name": "Polina",
- "name": "Ivanova",
- "is_active": 1,
- "display_name": "Polina Ivanova"
}
]
}| id required | integer Example: 12 bv_user_id |
| cms_client_id | integer Mandant-ID |
{- "code": 200,
- "message": "",
- "date": "2026-09-02 14:00:00",
- "data": {
- "bv_user_id": 12,
- "username": "polina",
- "first_name": "Polina",
- "name": "Ivanova",
- "is_active": 1,
- "display_name": "Polina Ivanova"
}
}Einheitlicher FiBu-Export-Endpoint. Unterstützt DATEV und Diamant. Format wird aus ClientSettings gelesen, kann per Parameter überschrieben werden.
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.
HTTP 422: Export hat keine Daten geliefert oder alle Positionen haben fehlende Konten.
| 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" "diamant" Export-Format (Standard aus ClientSettings: fibu_format).
|
| 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 |
{- "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": [
- "VK",
- "FI",
- "KB"
], - "locked": true,
- "locked_count": 2,
- "locked_vouchers": [
- {
- "type": "VK",
- "voucher_no": "RE-2024-001"
}, - {
- "type": "FI",
- "voucher_no": "RE-2024-001"
}
], - "missing_fields": [ ],
- "warnings": [ ]
}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.
| path required | string Base64-kodierter Dateipfad (aus download_url) |
| token required | string Signierter Download-Token (aus download_url) |
{- "code": 400,
- "message": "Ungültige oder fehlende Parameter",
- "date": "2026-08-25 23:35:23"
}Fundsachen anlegen, lesen und aktualisieren. Auth: API-Host + HostLimitation auf die Schnittstelle lostfound.
| 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) |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "sp_lostfound_id": 42,
- "date": "2026-08-25",
- "title": "Schlüsselbund",
- "location": "101",
- "founder": "Hausdame",
- "content": "Am Nachttisch",
- "cms_address_id": 0,
- "status": 0,
- "status_label": "Offen"
}
]
}Legt eine Fundsache in Swoppen an (z. B. aus der Housekeeping-App).
| 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. |
{- "title": "Schlüsselbund",
- "date": "2026-08-25",
- "location": "101",
- "founder": "Hausdame",
- "content": "Am Nachttisch",
- "room_number": "101"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "sp_lostfound_id": 42,
- "date": "2026-08-25",
- "title": "Schlüsselbund",
- "location": "101",
- "founder": "Hausdame",
- "content": "Am Nachttisch",
- "cms_address_id": 0,
- "status": 0,
- "status_label": "Offen"
}
}| id required | integer Example: 42 sp_lostfound_id |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "sp_lostfound_id": 42,
- "date": "2026-08-25",
- "title": "Schlüsselbund",
- "location": "101",
- "founder": "Hausdame",
- "content": "Am Nachttisch",
- "cms_address_id": 0,
- "status": 0,
- "status_label": "Offen"
}
}| id required | integer Example: 42 sp_lostfound_id |
| 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. |
{- "status": 4,
- "founder": "Hausdame"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "sp_lostfound_id": 42,
- "date": "2026-08-25",
- "title": "Schlüsselbund",
- "location": "101",
- "founder": "Hausdame",
- "content": "Am Nachttisch",
- "cms_address_id": 0,
- "status": 0,
- "status_label": "Offen"
}
}Zimmer für einen Zeitraum sperren (Out of Order). Resource-ID ist rm_item_id. Auth: API-Host + HostLimitation auf die Schnittstelle locked-ranges.
Sperren (is_locked=1), standardmäßig ab heute. Überlappungsfilter über date_from / date_until.
| date_from | string <date> 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 |
{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": [
- {
- "rm_item_id": 9001,
- "rm_resource_id": 12,
- "token": "DZ-101",
- "name": "string",
- "room_number": "string",
- "st_article_id": "DZ",
- "from": "2019-08-24T14:15:22Z",
- "until": "2019-08-24T14:15:22Z",
- "note": "Renovierung",
- "color": "string",
- "status": 0
}
]
}Legt eine oder mehrere Sperren an. Pflicht: rm_resource_id, from, until. HTTP 409 wenn das Zimmer im Zeitraum belegt oder bereits gesperrt ist.
required | integer or Array of integers Ein Zimmer oder mehrere. |
| from required | string <date> |
| until required | string <date> |
| note | string |
| color | string |
{- "rm_resource_id": 12,
- "from": "2026-09-10",
- "until": "2026-09-15",
- "note": "Renovierung"
}{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": {
- "rm_item_id": 9001,
- "rm_resource_id": 12,
- "token": "DZ-101",
- "name": "string",
- "room_number": "string",
- "st_article_id": "DZ",
- "from": "2019-08-24T14:15:22Z",
- "until": "2019-08-24T14:15:22Z",
- "note": "Renovierung",
- "color": "string",
- "status": 0
}
}| id required | integer rm_item_id |
{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": {
- "rm_item_id": 9001,
- "rm_resource_id": 12,
- "token": "DZ-101",
- "name": "string",
- "room_number": "string",
- "st_article_id": "DZ",
- "from": "2019-08-24T14:15:22Z",
- "until": "2019-08-24T14:15:22Z",
- "note": "Renovierung",
- "color": "string",
- "status": 0
}
}| id required | integer rm_item_id |
required | integer or Array of integers Ein Zimmer oder mehrere. |
| from required | string <date> |
| until required | string <date> |
| note | string |
| color | string |
{- "rm_resource_id": 12,
- "from": "2026-09-10",
- "until": "2026-09-15",
- "note": "Renovierung",
- "color": "#641e16"
}{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": {
- "rm_item_id": 9001,
- "rm_resource_id": 12,
- "token": "DZ-101",
- "name": "string",
- "room_number": "string",
- "st_article_id": "DZ",
- "from": "2019-08-24T14:15:22Z",
- "until": "2019-08-24T14:15:22Z",
- "note": "Renovierung",
- "color": "string",
- "status": 0
}
}| id required | integer rm_item_id |
{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": {
- "rm_item_id": 9001,
- "rm_resource_id": 12,
- "token": "DZ-101",
- "name": "string",
- "room_number": "string",
- "st_article_id": "DZ",
- "from": "2019-08-24T14:15:22Z",
- "until": "2019-08-24T14:15:22Z",
- "note": "Renovierung",
- "color": "string",
- "status": 0
}
}Kundenstammdaten (Adresse, Person, Debitor). Resource-ID ist st_customer_id. Auth: API-Host + HostLimitation auf die Schnittstelle customers.
Paginierte Liste aus dem Kundenadresskatalog.
| 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) |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "st_customer_id": "10001",
- "key_name": "Mustermann, Max",
- "name": "Mustermann",
- "first_name": "Max",
- "street": "Musterstraße 1",
- "zip": "10115",
- "location": "Berlin",
- "email": "max@example.com"
}
]
}Legt Kunde, Adresse und Person an. Ohne st_customer_id wird die nächste freie Nummer vergeben.
| 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 |
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 |
{- "name": "Mustermann",
- "first_name": "Max",
- "street": "Musterstraße 1",
- "zip": "10115",
- "location": "Berlin",
- "email": "max@example.com"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "st_customer_id": "10001",
- "key_name": "Mustermann, Max",
- "name": "Mustermann",
- "first_name": "Max",
- "street": "Musterstraße 1",
- "zip": "10115",
- "location": "Berlin",
- "email": "max@example.com"
}
}| id required | string Example: 10001 Kunden-Nr. (st_customer_id) |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "st_customer_id": "10001",
- "key_name": "Mustermann, Max",
- "name": "Mustermann",
- "first_name": "Max",
- "street": "Musterstraße 1",
- "zip": "10115",
- "location": "Berlin",
- "email": "max@example.com"
}
}Teilupdate. PUT und PATCH sind ebenfalls erlaubt.
| id required | string Example: 10001 Kunden-Nr. (st_customer_id) |
| 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 |
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 |
{- "email": "neu@example.com",
- "tel1": "+493012345"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "st_customer_id": "10001",
- "key_name": "Mustermann, Max",
- "name": "Mustermann",
- "first_name": "Max",
- "street": "Musterstraße 1",
- "zip": "10115",
- "location": "Berlin",
- "email": "max@example.com"
}
}| id required | string Example: 10001 Kunden-Nr. (st_customer_id) |
| 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 |
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 |
{- "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"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "st_customer_id": "10001",
- "key_name": "Mustermann, Max",
- "name": "Mustermann",
- "first_name": "Max",
- "street": "Musterstraße 1",
- "zip": "10115",
- "location": "Berlin",
- "email": "max@example.com"
}
}Löscht Kunde, Adresse und Person. HTTP 409 wenn der Datensatz noch verwendet wird (Belege, Buchungen, Zuordnungen).
| id required | string Example: 10001 Kunden-Nr. (st_customer_id) |
{- "code": 400,
- "message": "Ungültige oder fehlende Parameter",
- "date": "2026-08-25 23:35:23"
}Projekte
| 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 |
[ ]Projekte
| 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 |
{- "data": [
- {
- "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
}
], - "pagination": {
- "limit": 25,
- "page": 0,
- "total": 0
}, - "code": 0,
- "message": "string",
- "date": "2019-08-24T14:15:22Z"
}Projekte
| pms_project_id required | integer |
| 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 |
""Projekte
| pms_project_id required | integer |
{- "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
}Vorberechnete und Live-Daten für Revenue Management Systeme. Cache-Strategie: occupancy/bookings/forecast via Cache (TTL 1h), rates live.
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.
| 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 |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "date": "2024-06-01",
- "cms_client_id": 1,
- "rooms_available": 100,
- "rooms_occupied": 78,
- "oop": 2,
- "arrivals": 12,
- "departures": 8,
- "occupancy_pct": 78
}
]
}Raten je Zimmerkategorie und Tag. Tagespreis aus swo_rm_article_contingents, sonst Listenpreis aus swo_st_prices. Immer live (kein Cache).
| 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 |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "date": "2024-06-01",
- "cms_client_id": 1,
- "st_article_id": "DZ",
- "st_price_list_id": "STANDARD",
- "price": 129,
- "price1": 109,
- "currency": "EUR",
- "minimum": 1
}
]
}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.
| cms_client_id | integer Mandant-ID |
| 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) |
[- {
- "st_article_id": 5,
- "date": "2024-06-01",
- "price": 129
}, - {
- "st_article_id": 5,
- "date": "2024-06-02",
- "price": 149,
- "st_price_list_id": 3
}
]{- "code": 400,
- "message": "Ungültige oder fehlende Parameter",
- "date": "2026-08-25 23:35:23"
}Aggregierte Buchungszahlen nach Anreisetag, Channel (b.source) und Zimmerkategorie. Cache TTL 1h.
| 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 |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "booking_date": "2024-06-01",
- "cms_client_id": 1,
- "source": "booking.com",
- "st_article_id": 5,
- "bookings_count": 12,
- "room_nights": 18
}
]
}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.
| 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 |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "forecast_date": "2024-06-01",
- "cms_client_id": 1,
- "granularity": "daily",
- "rooms_otb": 78,
- "rooms_available": 100,
- "occupancy_pct": 78,
- "room_rev_otb": 9360,
- "fb_rev_otb": 1240,
- "other_rev_otb": 200,
- "budget_revenue": null,
- "variance_pct": null
}
]
}Bucht eine oder mehrere Leistungen.
Einzelbuchung: Objekt direkt übergeben → HTTP 201.
Batch: Array von Objekten → HTTP 207 (Multi-Status). Jede Position hat ein eigenes success-Flag.
Zielobjekt: cms_object + id bestimmen worauf gebucht wird.
| cms_object required | string Enum: "rm_booking_id" "rm_item_id" "cms_address_id" "sp_ticket_id" Typ des Zielobjekts |
| id required | integer ID des Zielobjekts |
| rm_booking_id | integer Buchungs-ID (wenn cms_object = rm_booking_id) |
| rm_item_id | integer Zimmer-ID (wenn service_for = room) |
| 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> Preis (Brutto oder Netto je nach ClientSettings isNetPricing) |
| quantity | number <float> Default: 1 |
| time_quantity | number <float> Default: 1 Zeitmenge (z.B. Anzahl Nächte) |
| st_quantity_unit_id required | string Mengeneinheit-ID |
| tax | integer or null Steuersatz in % (z.B. 19, 7, 0). Optional — wird der passende Steuerschlüssel automatisch ermittelt. Ohne Angabe: Standard-Umsatzsteuerschlüssel des Mandanten. |
| pos_discount | number <float> Default: 0 Rabatt in % |
| date | string <date> Leistungsdatum (Einzeltag) |
| date_from | string <date> Leistungszeitraum von |
| date_until | string <date> Leistungszeitraum bis |
| text | string Leistungstext |
| description | string Beschreibung |
| is_hidden | integer Default: 0 Enum: 0 1 Auf Belegen verstecken |
| is_included | integer Default: 0 Enum: 0 1 Leistung ist im Paketpreis enthalten |
{- "cms_object": "rm_booking_id",
- "id": 42,
- "cms_client_id": 1,
- "st_article_id": "Fr",
- "price": 12.5,
- "quantity": 2,
- "time_quantity": 1,
- "st_quantity_unit_id": "St.",
- "tax": 19,
- "date": "2024-06-01",
- "text": "Frühstück"
}{- "code": 201,
- "message": "",
- "date": "2024-06-01 10:00:00",
- "results": [
- {
- "_index": 0,
- "success": true,
- "vk_position_pool_id": 1042,
- "message": ""
}
]
}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.
Liste der verfügbaren Entitäten inkl. Slug, Titel und erlaubten Operationen.
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "entity": "payment_methods",
- "title": "Zahlungsweisen"
}
]
}Paginierte Liste. Filter aus dem ORM der Entität als Query-Parameter.
| 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" "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) |
| limit | integer Example: limit=25 Treffer pro Seite |
| page | integer Seite |
| cms_client_id | integer Mandant-ID (Standard: aktiver Client) |
{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": [
- { }
]
}| 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" "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) |
| property name* additional property | any |
{ }{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": { }
}| 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" "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) |
{- "code": 200,
- "message": "",
- "date": "2019-08-24T14:15:22Z",
- "data": { }
}Tickets
| 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 |
{- "priority": 3,
- "date": "2026-08-25 23:35:00",
- "status": 0,
- "subject": "Heizung defekt",
- "content": "Die Heizung in Raum 2 fällt ständig aus."
}Tickets
| 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 |
{- "data": [
- {
- "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"
}
], - "pagination": {
- "limit": 25,
- "page": 0,
- "total": 0
}, - "code": 0,
- "message": "string",
- "date": "2019-08-24T14:15:22Z"
}Tickets
| sp_ticket_id required | integer |
| 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 |
""Tickets
| sp_ticket_id required | integer |
{- "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"
}Verfügbarkeit, Restriktionen und Preise je Zimmerkategorie und Tag. Auth: API-Host + HostLimitation auf die Schnittstelle availability.
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.
| 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 |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "source": "cache",
- "data": [
- {
- "date": "2024-06-01",
- "cms_client_id": 1,
- "st_article_id": "FW1",
- "st_price_list_id": "STANDARD",
- "price": 129,
- "price1": 109,
- "currency": "EUR",
- "rooms_total": 1,
- "rooms_booked": 0,
- "rooms_ooo": 0,
- "rooms_free": 1,
- "contingent": null,
- "puffer": 0,
- "available": 1,
- "closed": 0,
- "arrival": 1,
- "departure": 1,
- "minimum": 1,
- "maximum": 0
}
]
}Reinigungsstatus der Zimmer, Benutzerstatus der Belegung und Reinigungsangaben. Lesen und Schreiben. Auth: API-Host + HostLimitation auf die Schnittstelle resources.
Alle Hotelzimmer inkl. Reinigungsstatus und Belegung am Stichtag. cleaning_status und user_status im Envelope sind die Kataloge (inkl. individuell angelegter Kennzeichnungen).
| date | string <date> Example: date=2026-08-25 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 |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": [
- {
- "rm_resource_id": 5,
- "token": "DZ-101",
- "number": "101",
- "room_number": "101",
- "name": "Doppelzimmer 101",
- "floor": "1",
- "st_article_id": "DZ",
- "is_active": 1,
- "cms_client_id": 1,
- "date": "2026-08-25",
- "cleaning_status": 1,
- "cleaning_status_token": "dirty",
- "cleaning_status_label": "Schmutzig",
- "cleaning_changed_by": 12,
- "cleaning_changed_by_name": "Polina Ivanova",
- "cleaning_changed_at": "2026-09-02 14:00:00",
- "occupancies": [
- {
- "rm_item_id": 9001,
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "name": "Mustermann",
- "from": "2026-08-25 12:00:00",
- "until": "2026-08-27 12:00:00",
- "status": 1,
- "is_stayover": 1,
- "user_status": [
- {
- "id": "vip1",
- "name": "VIP",
- "token": "VIP"
}
], - "cleaning_type": "0",
- "cleaning_type_label": "Regelmäßige Reinigung",
- "cleaning_type_guest": 0,
- "note2": "Extra Handtücher",
- "cleaning": 1,
- "cleaning_label": "Bleiber"
}
]
}
], - "cleaning_status": [
- {
- "id": 1,
- "token": "dirty",
- "name": "Schmutzig"
}
], - "user_status": [
- {
- "id": "vip1",
- "name": "VIP",
- "token": "VIP"
}
]
}| id required | string Example: 101 rm_resource_id, Zimmernummer, Kürzel (token) oder number. |
| date | string <date> Example: date=2026-08-25 Stichtag Y-m-d |
| cms_client_id | integer Mandant-ID |
{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "rm_resource_id": 5,
- "token": "DZ-101",
- "number": "101",
- "room_number": "101",
- "name": "Doppelzimmer 101",
- "floor": "1",
- "st_article_id": "DZ",
- "is_active": 1,
- "cms_client_id": 1,
- "date": "2026-08-25",
- "cleaning_status": 1,
- "cleaning_status_token": "dirty",
- "cleaning_status_label": "Schmutzig",
- "cleaning_changed_by": 12,
- "cleaning_changed_by_name": "Polina Ivanova",
- "cleaning_changed_at": "2026-09-02 14:00:00",
- "occupancies": [
- {
- "rm_item_id": 9001,
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "name": "Mustermann",
- "from": "2026-08-25 12:00:00",
- "until": "2026-08-27 12:00:00",
- "status": 1,
- "is_stayover": 1,
- "user_status": [
- {
- "id": "vip1",
- "name": "VIP",
- "token": "VIP"
}
], - "cleaning_type": "0",
- "cleaning_type_label": "Regelmäßige Reinigung",
- "cleaning_type_guest": 0,
- "note2": "Extra Handtücher",
- "cleaning": 1,
- "cleaning_label": "Bleiber"
}
]
}
}Setzt den Reinigungsstatus des Zimmers und optional Benutzerstatus, cleaning_type und Reinigungsliste (note2) der aktuellen Belegung. bv_user_id optional für die Historie.
| id required | string Example: 101 rm_resource_id, Zimmernummer, Kürzel (token) oder number. |
| date | string <date> Example: date=2026-08-25 Stichtag für Belegungsfelder |
| 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 |
{- "bv_user_id": 12,
- "cleaning_status": "dirty",
- "user_status": [
- "VIP",
- "Hund"
], - "cleaning_type": "0",
- "note2": "Extra Handtücher"
}{- "code": 200,
- "message": "",
- "date": "2026-08-25 23:35:23",
- "data": {
- "rm_resource_id": 5,
- "token": "DZ-101",
- "number": "101",
- "room_number": "101",
- "name": "Doppelzimmer 101",
- "floor": "1",
- "st_article_id": "DZ",
- "is_active": 1,
- "cms_client_id": 1,
- "date": "2026-08-25",
- "cleaning_status": 1,
- "cleaning_status_token": "dirty",
- "cleaning_status_label": "Schmutzig",
- "cleaning_changed_by": 12,
- "cleaning_changed_by_name": "Polina Ivanova",
- "cleaning_changed_at": "2026-09-02 14:00:00",
- "occupancies": [
- {
- "rm_item_id": 9001,
- "rm_booking_id": 12345,
- "rm_booking_no": "260001",
- "name": "Mustermann",
- "from": "2026-08-25 12:00:00",
- "until": "2026-08-27 12:00:00",
- "status": 1,
- "is_stayover": 1,
- "user_status": [
- {
- "id": "vip1",
- "name": "VIP",
- "token": "VIP"
}
], - "cleaning_type": "0",
- "cleaning_type_label": "Regelmäßige Reinigung",
- "cleaning_type_guest": 0,
- "note2": "Extra Handtücher",
- "cleaning": 1,
- "cleaning_label": "Bleiber"
}
]
}
}