API Dokumentation – Kundenfahrzeuge
Alle Endpunkte unter /api/customerscars/ zum Abruf, zur Suche und zur Anlage von Kundenfahrzeugen – also der Fahrzeuge, die einem Kunden gehören. Die API gibt die Daten als JSON zurück und antwortet mit den Keys „data“ (mit den Fahrzeugdaten), „status“ (1 oder 0) für den Erfolg des Abrufs sowie „message“, das ggf. eine Fehlermeldung enthält.
Alle Endpunkte erfordern den Parameter
token mit dem gültigen API-Token.Bei ungültigem Token wird
{"status": 0, "message": "Invalid Token"} zurückgegeben.Endpunkte
/api/vehicles/ gepflegt und ist im Artikel Bestandsfahrzeuge dokumentiert. Die Endpunkte greifen nicht ineinander: /api/vehicles/create und /api/vehicles/update wirken nicht auf Kundenfahrzeuge./api/customerscars/list
Gibt eine paginierbare Liste der Kundenfahrzeuge zurück, inklusive Stammdaten, technischer Daten, Garantie- und Schlüsseldaten. Optional lassen sich die Daten des zugeordneten Kunden mitliefern.
Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| token | string | API-Token Pflicht |
| take | integer | Anzahl an Datensätzen, die selektiert werden sollen (nur in Kombination mit offset) optional |
| offset | integer | Angabe, ab welchem Datensatz die Datenselektion erfolgen soll (nur in Kombination mit take) optional |
| statusid | integer | Filteroption, um ggf. auch deaktivierte Fahrzeuge zu erhalten (Status: inaktiv, ID = 2). Standard: 1 optional |
| withcustomerdata | integer | 1 = Kundendaten als Objekt customer_data mitsenden, 0 = ohne (Standard) optional |
| branch_id | integer | Nur Fahrzeuge dieser Filiale. Ohne Angabe werden alle Filialen gemischt. IDs liefert /api/branches. optional |
take und offset werden alle Fahrzeuge ausgegeben. Für große Datenmengen empfohlen: z. B. offset=0&take=50, dann offset=50&take=50 usw.GET /api/customerscars/list?token=IHRGEHEIMERCATAMATOKEN
(sämtliche Kundenfahrzeuge)
GET /api/customerscars/list?token=IHRGEHEIMERCATAMATOKEN&take=50&offset=0
(die ersten 50 Fahrzeuge)
GET /api/customerscars/list?token=IHRGEHEIMERCATAMATOKEN&statusid=2
(nur inaktive Fahrzeuge)
GET /api/customerscars/list?token=IHRGEHEIMERCATAMATOKEN&withcustomerdata=1
(mit den Daten des zugeordneten Kunden)
GET /api/customerscars/list?token=IHRGEHEIMERCATAMATOKEN&branch_id=2
(nur Fahrzeuge der Filiale 2)
{
"data": {
"1085": {
"id": 1085,
"customer_id": 200,
"intern_id": "KFZ-001",
"branch_id": 1,
"fabricator_id": "3",
"fabricator": "Volkswagen",
"kind_id": "2",
"name": "Golf VII",
"modell": "1.4 TSI",
"chassis_number": "WVWZZZ3CZWE123456",
"plate": "B-AB 1234",
"registration_date": "15.03.2019",
"mileage": 85000,
"power_ps": "150",
"power_kw": "110",
"cubic": "1395",
"gas": "Benzin",
"general_inspection": "01.03.2026",
"nextservice_at": "01.09.2026",
"color": "Silber metallic",
"basic_color": "Silber",
"category_id": "3",
"description_html": "<p>Scheckheftgepflegt</p>",
"..."
},
"1086": { "..." }
},
"status": 1,
"message": "Success"
}
data-Objekt ist die Fahrzeug-ID.Felder im Fahrzeug-Objekt
Die folgenden 68 Felder liefern alle drei Lese-Endpunkte (list, byid, byparam) identisch. Leere Datumsfelder kommen als leerer String.
Identifikation und Fahrzeugbezeichnung (11 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| id | Fahrzeug-ID (identisch mit dem Schlüssel im data-Objekt) |
| customer_id | ID des zugeordneten Kunden |
| intern_id | Interne Fahrzeugnummer |
| branch_id | Filial-ID. IDs und Anschriften liefert /api/branches |
| fabricator_id | Fabrikat-ID (Hersteller), IDs siehe /api/mobiles/fabricators |
| fabricator | Fabrikatsname im Klartext, z. B. Volkswagen |
| kind_id | Fahrzeugart (PKW, Motorrad …) |
| name | Fahrzeugbezeichnung |
| modell | Modell / Ausführung |
| chassis_number | Fahrgestellnummer (VIN) |
| plate | Kennzeichen |
Technische Daten (20 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| registration_date | Erstzulassung, Format dd.mm.YYYY |
| mileage | Kilometerstand |
| power_ps | Leistung in PS |
| power_kw | Leistung in kW |
| cubic | Hubraum in ccm |
| gas | Kraftstoffart |
| emission_id | Schadstoffklasse |
| geartype_id | Getriebeart |
| drivetype_id | Antriebsart |
| motor_code | Motorcode |
| motor_type | Motortyp |
| motor_cylinder | Anzahl Zylinder |
| vehicle_motor | Motorbezeichnung / Motorinfo |
| vehicle_vents | Ventile |
| exchange_engine | Austauschmotor |
| rate_of_rotation | Drehzahl |
| seats | Anzahl Sitzplätze |
| weight | Gewicht |
| case_id | Gehäuse- / Aufbaukennung |
| code_number | Codenummer |
Farben (3 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| color | Farbe (Herstellerbezeichnung) |
| basic_color | Grundfarbe |
| interiorcolor | Innenausstattung / Innenfarbe |
Termine und Prüfungen (7 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| general_inspection | HU/AU, Format dd.mm.YYYY |
| nextservice_at | Nächster Service, Format dd.mm.YYYY |
| handoverinspection | Übergabeinspektion, Format dd.mm.YYYY |
| purchased_at | Kaufdatum, Format dd.mm.YYYY |
| added_time | Angelegt am, Format dd.mm.YYYY |
| expected_delivery_date | Voraussichtliches Lieferdatum, Format dd.mm.YYYY |
| last_check | Letzte Prüfung. Achtung: Dieses Feld wird als Rohwert geliefert, nicht als dd.mm.YYYY |
Garantie und Gewährleistung (9 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| guaranteestart | Garantie-Beginn, Format dd.mm.YYYY |
| guaranteeend | Garantie-Ende, Format dd.mm.YYYY |
| warrantystart | Gewährleistung-Beginn, Format dd.mm.YYYY |
| warrantyend | Gewährleistung-Ende, Format dd.mm.YYYY |
| additional_warranty | Zusatzgarantie akzeptiert |
| warrantyid | ID der Garantie |
| warranty_elig_status_id | Garantieberechtigung (Status-ID) |
| warranty_package_id | ID des Garantiepakets |
| warranty_description | Garantiebeschreibung, z. B. Motor, Getriebe, Differential |
Schlüssel und Codes (5 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| key_code | Schlüsselcode |
| vehicle_key_code | Fahrzeug-Schlüsselcode |
| vehicle_registration_code | Fahrzeugbrief-Code |
| keys_amount | Anzahl Schlüssel |
| radio_code | Radiocode |
Service- und Werkstattinformationen (8 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| oil_drain_screw_torque | Ölablassschrauben-Drehmoment |
| engine_oil_info | Motoröl-Info |
| cambelt_info | Zahnriemen-Info |
| service_record_info | Scheckheft-Info |
| vehicle_title_info | Info zum Fahrzeugbrief |
| size_info | Größen-/Maßangaben |
| saison_info | Saisonkennzeichen-Info |
| tax_info | Steuer-Info |
Kaufmännische Daten und Sonstiges (5 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| salestype | Verkaufstyp-ID |
| deliverer_id | Lieferanten-ID |
| category_id | Fahrzeugkategorie(n); mehrere Werte kommagetrennt. Beim Anlegen hat category_id eine andere Bedeutung – siehe Abschnitt Warengruppe und Fahrzeugkategorie |
| contract_notes | Vertragsnotizen |
| description_html | Beschreibungstext, HTML |
/api/customerscars/byid
Ruft ein Kundenfahrzeug anhand der Fahrzeug-ID ab – oder alle Fahrzeuge eines Kunden anhand der Kunden-ID. Die Feldstruktur entspricht /api/customerscars/list.
Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| token | string | API-Token Pflicht |
| id | integer | Fahrzeug-ID (entweder id oder customerid) |
| customerid | integer | Kunden-ID – gibt alle Fahrzeuge dieses Kunden zurück (entweder id oder customerid) |
| statusid | integer | Nach Status filtern, Standard 1. Wirkt nur in Kombination mit customerid optional |
| withcustomerdata | integer | 1 = Kundendaten mitsenden (Standard 0) optional |
id oder customerid angegeben werden. Werden beide oder keiner übergeben, antwortet der Endpunkt mit Car or Customer ID is missing OR both provided. Beim Abruf über id greift der Statusfilter nicht – das Fahrzeug wird auch dann geliefert, wenn es inaktiv ist.GET /api/customerscars/byid?token=IHRGEHEIMERCATAMATOKEN&id=1085
(ein bestimmtes Fahrzeug)
GET /api/customerscars/byid?token=IHRGEHEIMERCATAMATOKEN&customerid=200&withcustomerdata=1
(alle Fahrzeuge des Kunden 200, mit Kundendaten)
Fehlerfälle
| message | Ursache |
|---|---|
| Invalid Token | Token fehlt oder ist ungültig |
| Invalid Customer ID | Zu customerid existiert kein Kunde |
| Car or Customer ID is missing OR both provided | Weder id noch customerid übergeben – oder beide |
/api/customerscars/byparam
Sucht Kundenfahrzeuge anhand der Fahrgestellnummer (VIN) und/oder des Kennzeichens. Die Feldstruktur der Antwort entspricht /api/customerscars/list.
Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| token | string | API-Token Pflicht |
| vin | string | Fahrgestellnummer oder Teil davon (mindestens vin oder plate) |
| plate | string | Kennzeichen oder Teil davon (mindestens vin oder plate) |
| withcustomerdata | integer | 1 = Kundendaten mitsenden (Standard 0) optional |
vin und plate gemeinsam übergeben, werden Fahrzeuge gefunden, die auf einen der beiden Werte passen (ODER-Verknüpfung) – nicht auf beide zugleich. Ein Statusfilter greift hier nicht.GET /api/customerscars/byparam?token=IHRGEHEIMERCATAMATOKEN&vin=WVWZZZ3CZWE123456
(Suche über die vollständige Fahrgestellnummer)
GET /api/customerscars/byparam?token=IHRGEHEIMERCATAMATOKEN&vin=ZZZ3CZ
(Teilstring der Fahrgestellnummer)
GET /api/customerscars/byparam?token=IHRGEHEIMERCATAMATOKEN&plate=B-AB
Fehlerfälle
| message | Ursache |
|---|---|
| Invalid Token | Token fehlt oder ist ungültig |
| vin or plate parameter is required | Weder vin noch plate übergeben |
/api/customerscars/create
Legt ein neues Kundenfahrzeug an und ordnet es einem bestehenden Kunden zu. Der Kunde und das Fabrikat müssen bereits im System existieren. Die Felder werden form-encoded (application/x-www-form-urlencoded) oder als JSON-Body übergeben.
Pflichtfelder
| Name | Typ | Beschreibung |
|---|---|---|
| token | string | API-Token Pflicht |
| customer_id | integer | ID des Kunden, dem das Fahrzeug zugeordnet wird Pflicht |
| fabricator | integer | Fabrikat-ID (nicht der Name). IDs liefert /api/mobiles/fabricators Pflicht |
| name | string | Fahrzeugbezeichnung, z. B. Golf VII Pflicht |
fabricator hier die ID und akzeptiert keinen Klartextnamen. Die gültigen IDs liefert /api/mobiles/fabricators, siehe Hersteller und Warengruppen.Optionale Felder – Text
| Name | Beschreibung |
|---|---|
| intern_id | Interne Fahrzeugnummer |
| modell | Modell / Ausführung |
| chassis_number | Fahrgestellnummer (VIN) |
| mobile_sign | Kennzeichen (wird beim Lesen als plate geliefert) |
| color | Farbe |
| color_code | Farbcode |
| color_designation | Farbbezeichnung |
| interiorcolor | Innenausstattung / Innenfarbe |
| mobile_gas | Kraftstoffart (wird beim Lesen als gas geliefert) |
| motor_code | Motorcode |
| motor_type | Motortyp |
| constructiontype | Aufbauart |
| serial_number | Seriennummer |
| tsnumber | TSN / Schlüsselnummer |
| code_number | Codenummer |
| key_code | Schlüsselcode |
| vehicle_key_code | Fahrzeug-Schlüsselcode |
| vehicle_registration_code | Fahrzeugbrief-Code |
| mobile_desc | Kurzbeschreibung |
| mobile_notes | Notizen |
| description_html | Beschreibungstext |
description_html nimmt beim Anlegen daher reinen Text auf.Optionale Felder – Zahlen
| Name | Beschreibung |
|---|---|
| mileage | Kilometerstand |
| power_ps | Leistung in PS |
| power_kw | Leistung in kW |
| cubic | Hubraum in ccm |
| mobile_kind | Fahrzeugart, Standard 2 (wird beim Lesen als kind_id geliefert) |
| geartype | Getriebeart (wird beim Lesen als geartype_id geliefert) |
| drivetype | Antriebsart (wird beim Lesen als drivetype_id geliefert) |
| emission_id | Schadstoffklasse |
| co2 | CO2-Ausstoß in g/km |
| seats | Anzahl Sitzplätze |
| previous_owner | Anzahl Vorbesitzer |
| weight | Gewicht in kg |
| model_year | Modelljahr |
| wheelbase | Radstand |
| roofheight | Dachhöhe |
| branch_id | Filial-ID |
| category_id | Warengruppe, Standard 1 – siehe Hinweis unten |
Optionale Felder – Datum
| Name | Beschreibung |
|---|---|
| ez | Erstzulassung. Formate: 15.03.2019, 03.2019 oder 2019. Ein Monat ohne Tag wird auf den 1. gesetzt, eine Jahresangabe auf den 1. Januar. Wird beim Lesen als registration_date geliefert |
| general_inspection | HU/AU. Formate: 01.03.2026 oder 03.2026. Eine reine Jahresangabe ist hier – anders als bei ez – nicht zulässig und führt zu einem falschen Datum |
category_id bedeutet beim Anlegen etwas anderes als beim Lesen: Beim Anlegen setzt category_id die Warengruppe des Fahrzeugs (Standard 1, IDs über /api/articles/categories). Beim Lesen liefert das Feld category_id dagegen die Fahrzeugkategorie. Ein angelegtes Fahrzeug gibt also unter category_id nicht den Wert zurück, den Sie beim Anlegen gesendet haben. In der Bestandsfahrzeug-API sind diese beiden Angaben getrennt benannt (category_id = Warengruppe, vehicle_category_id = Fahrzeugkategorie).mobile_kind wird die Fahrzeugart 2 gesetzt.POST /api/customerscars/create Content-Type: application/x-www-form-urlencoded token=IHRGEHEIMERCATAMATOKEN &customer_id=200 &fabricator=3 &name=Golf VII &modell=1.4 TSI &chassis_number=WVWZZZ3CZWE123456 &mobile_sign=B-AB 1234 &ez=15.03.2019 &general_inspection=03.2026 &mileage=85000
{
"data": {
"clientmobile_id": 1085,
"customer_id": 200,
"fabricator": 3,
"name": "Golf VII",
"branch_id": 1,
"modell": "1.4 TSI",
"chassis_number": "WVWZZZ3CZWE123456",
"mobile_sign": "B-AB 1234",
"ez": "15.03.2019",
"general_inspection": "03.2026",
"mileage": "85000"
},
"status": 1,
"message": "Success",
"clientmobile_id": 1085
}
data-Objekt spiegelt die gesendeten Werte unverändert zurück, also z. B. das Datum in der übergebenen Schreibweise. branch_id steht immer in der Antwort (mitgesendet oder Standard 1). Die neue Fahrzeug-ID steht in clientmobile_id. Für die gespeicherten und normalisierten Werte rufen Sie /api/customerscars/byid?id=… ab.Fehlerfälle
| message | Ursache |
|---|---|
| Invalid Token | Token fehlt oder ist ungültig |
| customer_id is required | customer_id fehlt oder ist 0 |
| fabricator is required | fabricator fehlt oder ist 0 |
| name is required | name fehlt oder ist leer |
| Customer not found | Zu customer_id existiert kein Kunde |
| Fabricator not found | Zu fabricator existiert kein Fabrikat |
| Failed to create client mobile | Anlage in CATAMA fehlgeschlagen |
Kundendaten-Objekt (withcustomerdata=1)
Wird bei list, byid oder byparam der Parameter withcustomerdata=1 gesetzt, enthält die Antwort zusätzlich das Objekt customer_data mit den Stammdaten des zugeordneten Kunden.
Felder im Objekt customer_data (28 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| id | Kunden-ID |
| title_id | Anrede-ID |
| title | Anrede im Klartext, z. B. Herr |
| company | Firmenname |
| forename | Vorname |
| lastname | Nachname |
| extra | Zusatz |
| street | Straße |
| zip | PLZ |
| city | Stadt |
| country | Land im Klartext |
| phone_mobile | Mobilnummer |
| phone_primary | Telefon (privat) |
| phone_secondary | Telefon (geschäftlich) |
| email_primary | |
| email_secondary | E-Mail 2 |
| email_tertiary | E-Mail 3 |
| kind_id | Kundenart-ID |
| kind_name | Kundenart im Klartext |
| type_id | Kundentyp-ID |
| type_name | Kundentyp im Klartext |
| type_shortcode | Kundentyp-Kürzel |
| bank_name | Bankname |
| bank_account_holder | Kontoinhaber |
| bank_iban | IBAN |
| bank_bic | BIC |
| birthday | Geburtstag, Format dd.mm.YYYY |
| online_invoice | Online-Rechnung (0/1) |
/api/customers/).Feldnamen beim Lesen und beim Schreiben
Einige Felder heißen beim Anlegen anders als in der Leseantwort. Diese Tabelle listet alle Abweichungen:
| Beim Lesen | Beim Anlegen | Inhalt |
|---|---|---|
| plate | mobile_sign | Kennzeichen |
| registration_date | ez | Erstzulassung |
| gas | mobile_gas | Kraftstoffart |
| kind_id | mobile_kind | Fahrzeugart |
| geartype_id | geartype | Getriebeart |
| drivetype_id | drivetype | Antriebsart |
| fabricator_id | fabricator | Fabrikat-ID |
| category_id | — | Fahrzeugkategorie (nur lesbar) |
| — | category_id | Warengruppe (nur schreibbar) |
color_code, color_designation, serial_number, tsnumber, constructiontype, mobile_desc, mobile_notes, co2, previous_owner, model_year, wheelbase, roofheight. branch_id ist schreibbar und steht jetzt auch in den Leseantworten. Alle übrigen Felder der Leseantwort (Garantien, Schlüsseldaten, Service-Infos …) sind derzeit nicht über die API beschreibbar./api/customers/list liefert je Kunde ein Array cars. Dort heißen dieselben Angaben noch einmal anders (fabricator_name, model, license_plate, first_registration, next_service) und das Array ist auf aktive Fahrzeuge im Bestand des Kunden gefiltert. Für die vollständigen Fahrzeugdaten nutzen Sie /api/customerscars/byid?customerid=….Änderungen und Löschen
Für Kundenfahrzeuge gibt es derzeit keinen Endpunkt zum Ändern oder Löschen. Bestehende Fahrzeuge werden in CATAMA über die Kundenakte gepflegt. Ein Teil-Update wie bei den Bestandsfahrzeugen (/api/vehicles/update) existiert hier nicht.
Antwortformat
Alle vier Endpunkte antworten mit Content-Type: application/json; charset=utf-8 und einem Objekt mit den Schlüsseln status (1 = Erfolg, 0 = Fehler), message und data. Der HTTP-Statuscode ist immer 200, auch im Fehlerfall – maßgeblich ist das Feld status. Das unterscheidet die Kundenfahrzeug-Endpunkte von den Schreib-Endpunkten der Bestandsfahrzeuge, die zusätzlich sprechende HTTP-Codes setzen.
Bei Fragen zur API steht Ihnen unser Support jederzeit zur Verfügung.