Vermietsoftware

API Dokumentation

API Anbindung

Nutze die Vorteile der ** bookyt API** und eröffne dir viele neue Möglichkeiten!

Die bookyt API verbindet deine Systeme. Mit unserer API kannst du deine eigenen Anwendungen nahtlos an bookyt anbinden. Um dies zu ermöglichen, legst du einfach einen API-Schlüssel im bookyt Backend fest. Wir zeigen dir gerne, wie das funktioniert.

Die API-Anbindung eröffnet dir vielfältige Möglichkeiten zur Integration und Automatisierung deiner Geschäftsprozesse. Nutze sie, um bookyt nahtlos in deine eigenen Anwendungen oder Systeme zu integrieren und die Effizienz deines Vermietgeschäfts zu steigern.

Wenn du Fragen zur API oder zur Einrichtung des API-Schlüssels hast, zögere nicht, uns zu kontaktieren. Wir stehen dir gerne zur Verfügung, um sicherzustellen, dass du das Beste aus unserer Vermietsoftware herausholen kannst.

Bookyt API – Technische Referenz (api.php)

Stand: automatisch aus dem Quelltext generiert.

Basis-URL: https:///api.php

Transport: HTTPS unbedingt empfohlen. Rückgaben typischerweise JSON; einige Endpunkte liefern PDF oder Plaintext.

Authentifizierung & Zugriff

  • Aktivierung: Globale Einstellung e->GlobaleEinstellungen['api_active'] muss 1 sein.
  • Token: Parameter 'token' per GET oder POST. Muss e->GlobaleEinstellungen['xml_token'] entsprechen.
  • IP-Whitelist: Falls e->GlobaleEinstellungen['xml_only_access_from_ip'] gesetzt ist, muss REMOTE_ADDR enthalten.

Lastschutz & Limits

  • Sofort-Check: Bei getServerAuslastung()>35 wird HTTP 400 + JSON {error:'Server too busy. Try again later.'} ausgegeben (frühe Abbruchstelle).
  • Generelles Throttling: Bei Load >= 30 wird HTTP 503 'Too busy…' + JSON {error:...} zurückgegeben. Für 'autovermietung_myvanture' gelten Sonderregeln.
  • Stundenlimit: Maximal ~1000 Requests pro Stunde (Tabelle log_api, letzter 1h-Zeitraum). Für 'autovermietung_myvanture'
    • 3.5. Überschreitung: HTTP 503 mit Fehlermeldung.
  • Einige Endpunkte geben bewusst Plaintext ('OK', 'TRUE', 'FALSE') zurück.

Fehlerbilder (typisch)

Status

Format

Bedeutung

200

OK / JSON / PDF

Erfolgreiche Antwort

400

JSON {error:...}

z. B. GPT Query nicht gefunden; Busy-Guard (>35)

403

JSON {error:...}

Z. B. ungültige Parameter bei anderen Dateien; hier selten

503

JSON {error:'Too busy…'}

Lastschutz oder Requestlimit erreicht

Konventionen

  • Methoden: überwiegend GET, einige POST (explizit gekennzeichnet).
  • Zeiten/Datumswerte: meist Unix-Timestamp (Sekunden). Einige Endpunkte akzeptieren deutsche Datumsangaben (dd.mm.yyyy).
  • Sprache: Inhalte teilweise mehrsprachig (_en, _es, _nl, _hr, _it, _pt, _fr).
  • IDs: numerisch; Strings wie 'no' können Rechnungsnummern oder Onlinezahlungs-Codes sein.

Endpunkte (call=…)

update_status

Methode

Auth

GET

Token/Whitelist-Guards

Status-Update einer Buchung; optional km-Stände. Bei Status=4 ggf. Rechnung generieren und per E-Mail versenden.

Parameter:

Name

Typ

Erforderlich

Beschreibung

vorgang_nr

int

ja

Rechnungsnummer

status_id

int

ja

 

km_stand_ankunft

int

nein

 

km_stand_abfahrt

int

nein

 

Antwort:

JSON: {success:true}

Hinweise:

Bei Status 4 und Setting 'rueckgabe_abrechnen=1' wird rechnungsnummer_rechnung erzeugt, PDF erstellt und per Mail versendet.

locations

Methode

Auth

GET

Token/Whitelist-Guards

Stationen inkl. optionaler Öffnungszeiten.

Parameter:

Name

Typ

Erforderlich

Beschreibung

show

string

nein

'all' zeigt alle, sonst Filter: use_internet=1, aktiv=1, nicht_buchen=0

open

string

nein

'true' ⇒ Öffnungszeiten-Arrays; Feiertage/Datumsausnahmen berücksichtigt

Antwort:

JSON Array: Stationen mit Feldern (ID, caption, address, zip, place, state, street, opening_string, opening_times, opening_times_special, tel_nr, ...).

articles

Methode

Auth

GET

Token/Whitelist-Guards

Aktive, im Internet verfügbare Artikel inkl. Kategorie, Dateien, Einschränkungen (Gruppen/Stationen).

Antwort:

JSON Array: pro Artikel normalisierte Felder, 'files' (URLs), 'categories':[fahrzeuggruppe_sub_id], 'stationen':[station_id].

artikelpreise

Methode

Auth

GET

Token/Whitelist-Guards

Artikelpreise aus PreisCheck für Preisliste/Zeitraum.

Parameter:

Name

Typ

Erforderlich

Beschreibung

preisliste_id

int

ja

 

mwst_satz

number

ja

 

start

int|date

ja

 

stop

int|date

ja

 

Antwort:

JSON Array: Preisdaten (vom PreisCheck).

tac

Methode

Auth

GET

Token/Whitelist-Guards

Allgemeine Geschäftsbedingungen (mehrsprachig).

Antwort:

JSON: {tac, tac_en, tac_es, tac_nl, tac_it, tac_fr, tac_hr, tac_pt}

news

Methode

Auth

GET

Token/Whitelist-Guards

Neueste 10 News (newsboard) ohne Schnappi.

Antwort:

JSON Array: [{betreff, mitteilung, datum}]

category

Methode

Auth

GET

Token/Whitelist-Guards

Fahrzeuggruppen-Sub inkl. Mediadateien, Suchbegriff, Bezeichnungen je Sprache, Anzahl Fahrzeuge etc.

Parameter:

Name

Typ

Erforderlich

Beschreibung

fahrzeuggruppe_id

int

nein

Filter

Antwort:

JSON Map keyed by ID mit u. a. files[], fzg_gruppe_sub[_xx], suchbegriff, anzahl_fahrzeuge, bezeichnung[_xx], internet_link, frontend_link.

get_booking

Methode

Auth

GET

Token/Whitelist-Guards

Vorgang per Rechnungsnummer oder Onlinezahlungs-Code abrufen.

Parameter:

Name

Typ

Erforderlich

Beschreibung

no

string

ja

<=30 Zeichen: numeric ⇒ rechnungsnummer, sonst onlinezahlung_code

Antwort:

JSON: {vorgang:{...}} inkl. Kunde, Beträge, MwSt, Positionen (bereinigt). 'error' falls nicht gefunden.

set_payment

Methode

Auth

GET

Token/Whitelist-Guards

Zahlung auf Vorgang verbuchen (Schnellerfassung).

Parameter:

Name

Typ

Erforderlich

Beschreibung

no

string

ja

Rechnungsnummer

amount

number

ja

>0

zahlart_id

int

nein

sonst Default aus GlobaleEinstellungen

Antwort:

Plaintext: 'TRUE' oder 'FALSE'.

reservierungsbestaetigungPDF

Methode

Auth

GET

Token/Whitelist-Guards

Download der Reservierungsbestätigung als PDF.

Parameter:

Name

Typ

Erforderlich

Beschreibung

buchung_id

int

ja

 

Antwort:

Content-Type: application/pdf; Content-Disposition: download; filename=confirmation_.pdf

get_all_bookings

Methode

Auth

GET

Token/Whitelist-Guards

Alle Buchungen im Intervall inkl. Artikelliste (aus Positionen fp%).

Parameter:

Name

Typ

Erforderlich

Beschreibung

date

int|date

nein

Standard heute

date_stop

int|date

nein

Standard wie 'date'

category_id

int

nein

Filter

station_id

int

nein

Filter

Antwort:

JSON: {bookings:[...], fahrzeuge:[...], fahrzeuge_sperren:[...], fahrzeuge_station:[...], stationen:[...]}

calculate_tarif

Methode

Auth

GET

Token/Whitelist-Guards

Tarifberechnung (PreisCheck.InitOhneB_ID).

Parameter:

Name

Typ

Erforderlich

Beschreibung

start

int|date

ja

 

stop

int|date

ja

 

category_id

int

ja

 

station_id

int

ja

 

kunde_id

int

nein

 

kilometer

number

nein

 

rabatt_satz

number

nein

 

only_online_tarif

bool

nein

'true' um nur Online-Tarife zu nutzen

Antwort:

JSON: kompletter PreisCheck-Objektzustand (serialisiert).

get_bookings

Methode

Auth

GET

Token/Whitelist-Guards

Buchungen im Intervall (kompakter, ohne Artikel-GC) – optional Einzelauswahl.

Parameter:

Name

Typ

Erforderlich

Beschreibung

date

int|date

nein

Standard heute

date_stop

int|date

nein

Standard wie 'date'

station_id

int

nein

 

buchung_id

int

nein

setzt breiten Zeitraum ±10y

category_id

int

nein

Filter nach Sub-Gruppe

Antwort:

JSON Array keyed by ID mit Zeiten, Station, Sub-Gruppe, Status, Kundendaten, Vorgang_nr, Buchungscode, anlage_datum.

customerlist

Methode

Auth

GET

Token/Whitelist-Guards

Kundenliste (Query personenv2.sql) exklusive Typen (6,7).

Antwort:

JSON Array: Kundenfelder je Query.

ressources

Methode

Auth

GET

Token/Whitelist-Guards

Ressourcen/Fahrzeuge inkl. Schäden und Sperren zum Stichtag.

Parameter:

Name

Typ

Erforderlich

Beschreibung

category_id

int

nein

Filter

station_id

int

nein

Filter

datum

int

nein

Standard now()

Antwort:

JSON Array: Fahrzeuge (bereinigte Felder), dazu damages[] und sperren[].

damages

Methode

Auth

GET

Token/Whitelist-Guards

Schäden eines Fahrzeugs.

Parameter:

Name

Typ

Erforderlich

Beschreibung

fahrzeug_id

int

ja

 

Antwort:

JSON: {:[...]} oder {error:true, message:'...'}

events

Methode

Auth

GET

Token/Whitelist-Guards + Modul aktiv

Event-Termine mit Kapazität, Artikeln, Regionen, Dateien, gruppenspezifischen Preisen und Freitext-Kategorien.

Antwort:

JSON Array: pro Event-Datum umfangreiche Struktur inkl. capacity_

  • Felder.

Hinweise:

Nur wenn e->GlobaleEinstellungen['modul_eventplaner']==1. Liefert zukünftige (start>now), online=1.

reporting (chat_id)

Methode

Auth

GET

Token/Whitelist-Guards

Führt gespeicherte GPT/Chat-Query (SQL) im Reporting-User-Kontext aus.

Parameter:

Name

Typ

Erforderlich

Beschreibung

chat_id

int

ja

 

Antwort:

JSON Array: Datensätze der Query; bei Nichtfinden HTTP 400 + {error:'GPT Query not found'}.

reporting (query_id)

Methode

Auth

GET

Token/Whitelist-Guards

Führt gespeicherte Query (formulare_query) aus, optional mit Filtern.

Parameter:

Name

Typ

Erforderlich

Beschreibung

query_id

int

ja

 

filter[]

json

nein

mehrfach; wird zur WHERE-Klausel addiert

Antwort:

JSON Array: Ergebnisse; wenn Reporting-Tabellen fehlen, leeres Array.

customer_details

Methode

Auth

GET

Token/Whitelist-Guards

Detaildaten eines Kunden (Personenobjekt).

Parameter:

Name

Typ

Erforderlich

Beschreibung

kunde_id

int

ja

 

Antwort:

JSON: person->person_array

getcustomer

Methode

Auth

GET

Token/Whitelist-Guards

Rohdaten einer Person (bereinigt um sensible/ID-Felder).

Parameter:

Name

Typ

Erforderlich

Beschreibung

ID

int

ja

 

Antwort:

JSON: Personenfelder ohne ID/Passwort etc.

updatecustomer

Methode

Auth

POST

Token/Whitelist-Guards

Kundenstammdaten aktualisieren.

Parameter:

Name

Typ

Erforderlich

Beschreibung

ID

int

ja

 

form

object

ja

Key-Value der zu aktualisierenden Felder

Antwort:

JSON: {success:true}

contract

Methode

Auth

GET

Token/Whitelist-Guards

Mietvertrag als PDF (inline) über unique_id.

Parameter:

Name

Typ

Erforderlich

Beschreibung

unique_id

string

ja

alphanumerisch

Antwort:

Content-Type: application/pdf; Content-Disposition: inline; filename=contract_.pdf

fahrtenbuch

Methode

Auth

GET

Token/Whitelist-Guards

Fahrtenbuch-Einträge eines Fahrzeugs im Zeitraum.

Parameter:

Name

Typ

Erforderlich

Beschreibung

start

int|date

ja

Unix-TS oder dt. Datum

stop

int|date

ja

 

fahrzeug_id

int

ja

 

Antwort:

JSON: {fehler:bool, meldung?:string, fahrtenbuch:[...]}.

Hinweise:

Maximal 3 Jahre; Validierungsfehler liefern fehler=true + Meldung.

insertFahrtenbuch

Methode

Auth

GET

Token/Whitelist-Guards

Fahrtenbuch-Eintrag anlegen.

Parameter:

Name

Typ

Erforderlich

Beschreibung

user_id

int

ja

 

start

int

ja

TS

stop

int

ja

TS

station_id

int

ja

 

station_id_stop

int

ja

 

start_km

int

ja

 

stop_km

int

ja

 

fahrzeug_id

int

ja

 

bemerkung

string

nein

 

Antwort:

JSON: {success:true|false, meldung?:string}

availability

Methode

Auth

GET

Token/Whitelist-Guards

Verfügbarkeit & Preis für Zeit/Station/Kategorie/Fahrzeug.

Parameter:

Name

Typ

Erforderlich

Beschreibung

start

string

ja

ISO/Datum; wird zu TS geparst

stop

string

ja

 

location_id

int

ja

 

category_id

int

ja

 

fahrzeug_id

int

nein

 

kunde_id

int

nein

 

kilometer

number

nein

 

rabatt_satz

number

nein

 

only_online_tarif

bool

nein

 

Antwort:

JSON: {available:bool, error:string|'', notice:string, vatrate:number, vatid:int, price:number, price_net:number, price_detail:object, price_valid_fares:[...], preisliste_id:int}

Hinweise:

newBooking

Methode

Auth

POST

Token/Whitelist-Guards

Neue Buchung anlegen; legt optional Kunde an, berechnet Preise/Positionen und liefert Quittungs-URL/QR.

Parameter:

Name

Typ

Erforderlich

Beschreibung

start

string

ja

 

stop

string

ja

 

location_id

int

ja

 

category_id

int

ja

 

fahrzeug_id

int

nein

Automatische Zuweisung möglich (xml_kennzeichen_automatisch)

kunde_id

int

nein

 

kilometer

number

nein

 

rabatt_satz

number

nein

 

only_online_tarif

bool

nein

 

vatid

int

ja

 

vatrate

number

ja

 

zahlart_id

int

ja

 

voucher_code

string

nein

 

remarks

string

nein

intern

remarks_customer

string

nein

wird beim Kunden gespeichert

customer_id

int

nein

falls vorhanden

customer

object

ja wenn customer_id leer

{name, firstname, email, anrede_id, mobil, adresse, plz, ort, land_id, geburtsdatum}

positionen

array

ja

Liste mit Objekten: {type(1=Tarif/sonst Artikel), amount, price_net, caption, artikel_id?}

Antwort:

JSON: {success:bool, remarks, errormsg, vorgang_nr:int|null, buchung_id:int|null, quittung_url, qr_code}

Hinweise:

Prüft Verfügbarkeit via checkBuchungFreeV2. Setzt Status/Zweck aus GlobaleEinstellungen.

cancel

Methode

Auth

GET

Token/Whitelist-Guards

Storniert Buchung per Vorgangsnummer.

Parameter:

Name

Typ

Erforderlich

Beschreibung

vorgang_nr

int

ja

 

Antwort:

JSON: {success:bool, notice?:string}

updateRessources

Methode

Auth

POST

Token/Whitelist-Guards

Mehrere Fahrzeug-Station-Zuordnungen zum Datum setzen.

Parameter:

Name

Typ

Erforderlich

Beschreibung

fahrzeuge

array

ja

Array von {fahrzeug_id, datum, station_id}

Antwort:

Kein explizites JSON (kein echo) – i. d. R. HTTP 200 ohne Inhalt.

Hinweise:

Bei geänderter Station wird insertStation() aufgerufen.

updateRessource

Methode

Auth

POST

Token/Whitelist-Guards

Einzelnes Fahrzeug anlegen/aktualisieren (Stammdaten/Status/Station/Zugehörigkeit).

Parameter:

Name

Typ

Erforderlich

Beschreibung

fahrzeug_id

int

ja

0 ⇒ Neuanlage

fzg

object

ja

Felder: bezeichnung, fahrzeug_nr, weitere_fahrzeug_nummer, schluesselnr1, briefnr, aktivierdatum, fahrgestellnummer, freitext?, kennzeichen?, deaktivierdatum?, status_id?, fahrzeuggruppe_sub_id (bei Neuanlage), datum, station_id

Antwort:

JSON: {success:bool, fahrzeug_id:int}

sendEmail

Methode

Auth

GET

Token/Whitelist-Guards

Versendet eine vorbereitete E-Mail (Template) optional mit generiertem PDF-Anhang.

Parameter:

Name

Typ

Erforderlich

Beschreibung

email_id

int

ja

 

ds_id

int

ja

Datensatz-ID

lang

string

nein

 

email_to

string

ja

Empfängeradresse

print_formular_id

int

nein

Wenn gesetzt, wird zuvor ein Dokument erzeugt und angehängt

Antwort:

JSON: {success:true}

paymentTypes

Methode

Auth

GET

Token/Whitelist-Guards

Liste aktiver Zahlungsarten für Personen.

Antwort:

JSON Array: [{ID, bezeichnung, bezeichnung_en, bemerkung}]