API Dokumentation – Bestandsfahrzeuge
Alle Endpunkte unter /api/vehicles/ zum Abruf, zur Anlage und zur Änderung von Bestandsfahrzeugen. 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. Die Funktion steht für CATAMA Enterprise Unlimited Instanzen zur Verfügung.
Alle Endpunkte erfordern den Parameter
token mit dem gültigen API-Token.Bei ungültigem Token wird
{"status": 0, "message": "Invalid Token"} zurückgegeben – bei den Schreib-Endpunkten zusätzlich mit HTTP 401.Endpunkte
- GET /api/vehicles/list — Bestandsfahrzeuge auflisten
- GET /api/vehicles/byid — Einzelnes Fahrzeug per ID abrufen
- GET /api/vehicles/listing — Fahrzeuge für die Webseite inkl. Preis und Fotos
- POST /api/vehicles/create — Neues Bestandsfahrzeug anlegen
- POST /api/vehicles/update — Bestandsfahrzeug ändern (auch PATCH)
/api/vehicles/list
Gibt eine paginierbare Liste der Bestandsfahrzeuge zurück, inklusive Stammdaten, technischer Daten, Garantie- und Schlüsseldaten sowie Standort.
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 |
| branch_id | integer | Nur Fahrzeuge dieser Filiale. Ohne Angabe werden alle Filialen gemischt. IDs liefert /api/branches. optional |
GET /api/vehicles/list?token=IHRGEHEIMERCATAMATOKEN
(sämtliche Bestandsfahrzeuge)
GET /api/vehicles/list?token=IHRGEHEIMERCATAMATOKEN&take=10&offset=10
(maximal 10 Fahrzeuge ab dem 10. Datensatz)
GET /api/vehicles/list?token=IHRGEHEIMERCATAMATOKEN&statusid=2
(nur inaktive Fahrzeuge)
GET /api/vehicles/list?token=IHRGEHEIMERCATAMATOKEN&branch_id=2
(nur Fahrzeuge der Filiale 2)
{
"data": {
"108": {
"id": 108,
"intern_id": "FZ-00108",
"branch_id": 1,
"fabricator_id": "12",
"fabricator": "Volkswagen",
"kind_id": "1",
"name": "Golf",
"modell": "VII 2.0 TDI",
"name_modell": "Golf VII 2.0 TDI",
"chassis_number": "WVWZZZ1KZAW000000",
"plate": "M-AB 1234",
"registration_date": "15.03.2020",
"registration_year": 2020,
"general_inspection": "01.06.2027",
"purchased_at": "02.08.2026",
"nextservice_at": "01.03.2027",
"added_time": "16.08.2026",
"mileage": 84500,
"power_ps": "150",
"power_kw": "110",
"cubic": "1968",
"seats": "5",
"gas": "Diesel",
"emission_id": "6d",
"geartype_id": "2",
"drivetype_id": "1",
"type_id": 2,
"type_name": "Gebrauchtfahrzeug",
"category_id": 2704,
"category": "Fahrzeugeinkauf §25a",
"vat_removeable": 0,
"vehicle_category_id": "3",
"color": "Schwarz",
"basic_color": "Schwarz",
"interiorcolor": "Stoff Anthrazit",
"status_type": 1,
"status": 1,
"mobile_status": 1,
"location_id": "1",
"location_name": "Halle 1",
"description_html": "<p>Scheckheftgepflegt</p>",
"..."
}
},
"status": 1,
"message": "Success"
}
purchase_price) und Verkaufspreis (price) sind in list und byid enthalten – dieselben Werte wie im Fahrzeug-Editor. purchase_price ist ohne Überführungskosten; leere Preise kommen als 0. In /api/vehicles/listing (CarListing / Website) bleibt der Einkaufspreis bewusst aus. Die Besteuerung steht als diff_tax (1 = Differenzbesteuerung § 25a, 0 = USt. ausweisbar) und zusätzlich als vat_removeable (umgekehrt: 1 = USt. ausweisbar). Datumsfelder werden im Format dd.mm.YYYY geliefert; ist kein Datum gesetzt, kommt ein leerer String.data-Objekt ist die Fahrzeug-ID.Felder im Fahrzeug-Objekt
Diese 81 Felder liefert /api/vehicles/list. /api/vehicles/listing liefert dieselben Felder außer purchase_price und diff_tax plus neun Zusatzfelder, /api/vehicles/byid liefert 74 davon – die Unterschiede stehen jeweils im entsprechenden Abschnitt.
Identifikation und Fahrzeugbezeichnung (12 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| id | Fahrzeug-ID (identisch mit dem Schlüssel im data-Objekt) |
| 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 |
| name_modell | Bezeichnung und Modell zusammengesetzt |
| chassis_number | Fahrgestellnummer (VIN) |
| plate | Kennzeichen |
| type_id | Fahrzeugtyp-ID (Neu-, Gebraucht-, Vorführfahrzeug …) |
| type_name | Fahrzeugtyp im Klartext, z. B. Gebrauchtfahrzeug |
Status und Standort (5 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| status_type | Status des Fahrzeugs: 1 = aktiv, 2 = inaktiv |
| status | Datensatzstatus |
| mobile_status | Bestandsstatus des Fahrzeugs |
| location_id | ID des Standorts |
| location_name | Standortbezeichnung im Klartext, z. B. Halle 1 |
Technische Daten (21 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| registration_date | Erstzulassung, Format dd.mm.YYYY |
| registration_year | Jahr der Erstzulassung |
| 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 |
Warengruppe, Steuer und Fahrzeugkategorie (4 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| category_id | ID der Warengruppe (Einkaufs-Warengruppe, bestimmt das DATEV-Konto) |
| category | Name der Warengruppe im Klartext, z. B. Fahrzeugeinkauf §25a |
| vat_removeable | 1 = USt. ausweisbar (Regelbesteuerung), 0 = nicht ausweisbar (Differenzbesteuerung § 25a) |
| vehicle_category_id | Fahrzeugkategorie(n); mehrere Werte kommagetrennt |
Preise und Besteuerung (3 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| purchase_price | Einkaufspreis aus dem Fahrzeug-Editor, ohne Überführungskosten. Leerer oder fehlender Wert kommt als 0. |
| price | Verkaufspreis aus dem Fahrzeug-Editor. Leerer oder fehlender Wert kommt als 0. |
| diff_tax | 1 = Differenzbesteuerung § 25a, 0 = USt. ausweisbar. Entspricht dem umgekehrten Wert von vat_removeable. |
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 | Einkaufsdatum, 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 (4 Felder) anzeigen
| Feld | Beschreibung |
|---|---|
| salestype | Verkaufstyp-ID |
| deliverer_id | Lieferanten-ID |
| contract_notes | Vertragsnotizen |
| description_html | Beschreibungstext, HTML |
/api/vehicles/byid
Ruft ein einzelnes Bestandsfahrzeug anhand seiner ID ab.
Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| token | string | API-Token Pflicht |
| id | integer | ID des Fahrzeugs (Fahrzeug-ID) Pflicht |
GET /api/vehicles/byid?id=1&token=IHRGEHEIMERCATAMATOKEN
list: byid liefert 74 der 81 Felder. Es fehlen name_modell, registration_year, type_id, type_name, status_type, status und mobile_status. Wer den Fahrzeugtyp oder den Status braucht, liest über /api/vehicles/list.{
"data": {
"1": {
"id": 1,
"intern_id": "FZ-00001",
"fabricator_id": "12",
"fabricator": "Volkswagen",
"name": "Golf",
"modell": "VII 2.0 TDI",
"chassis_number": "WVWZZZ1KZAW000000",
"..."
}
},
"status": 1,
"message": "Success"
}
/api/vehicles/listing
Liefert die Fahrzeuge, die für die Fahrzeugbörse bzw. die eigene Webseite freigegeben sind – inklusive Verkaufspreis, Verfügbarkeitsstatus und Foto-URLs. Dieser Endpunkt ist die Grundlage der CATAMA CarListing-Anbindung.
/api/vehicles/list abrufbar sind. Kommt eine leere Liste zurück, ist in der Regel bei keinem Fahrzeug die Freigabe gesetzt.Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| token | string | API-Token Pflicht |
| take | integer | Anzahl an Datensätzen (nur in Kombination mit offset) optional |
| offset | integer | Startposition für Paginierung (nur in Kombination mit take) optional |
| statusid | integer | Nach Status filtern, Standard 1 (aktiv) optional |
| branch_id | integer | Nur Fahrzeuge dieser Filiale. Ohne Angabe werden alle Filialen gemischt. optional |
| photos | integer | Fotos mitliefern. Standard: aktiv. Mit photos=0 bleibt das Array photos leer optional |
| photosize | string | Bildgröße: thumb (Standard, ca. 200 px Höhe), medium (ca. 600 px Höhe) oder full (bis 1900 px Breite) optional |
GET /api/vehicles/listing?token=IHRGEHEIMERCATAMATOKEN
(alle freigegebenen Fahrzeuge mit Thumbnails)
GET /api/vehicles/listing?token=IHRGEHEIMERCATAMATOKEN&photosize=full
(mit Bildern in voller Größe)
GET /api/vehicles/listing?token=IHRGEHEIMERCATAMATOKEN&take=20&offset=0&photos=0
(erste 20 Fahrzeuge ohne Bilder)
Zusatzfelder gegenüber /api/vehicles/list
Die Antwort enthält 79 der 81 Felder aus /api/vehicles/list (ohne purchase_price und diff_tax) und zusätzlich diese neun:
| Feld | Beschreibung |
|---|---|
| price | Verkaufspreis |
| carlisting_vk_netto | Verkaufspreis netto für die Anzeige |
| carlisting_uvp_price | UVP / Vergleichspreis |
| carlisting_show_uvp | 1 = UVP in der Anzeige einblenden |
| carlisting_show_freight | 1 = Überführungskosten in der Anzeige einblenden |
| finance_additionalcost_transport | Überführungskosten |
| carlisting_status | Verfügbarkeit: 1 = Verfügbar, 2 = Reserviert, 3 = Bald verfügbar |
| carlisting_status_name | Verfügbarkeit im Klartext, z. B. Reserviert |
| photos | Array mit den vollständigen Bild-URLs. Das Hauptbild steht immer an erster Stelle, danach folgen die Bilder in der im Fahrzeug festgelegten Sortierung. Ohne Bilder ein leeres Array |
{
"data": {
"108": {
"id": 108,
"fabricator": "Volkswagen",
"name_modell": "Golf VII 2.0 TDI",
"registration_year": 2020,
"mileage": 84500,
"price": "18900.00",
"carlisting_vk_netto": "15882.35",
"carlisting_uvp_price": "21500.00",
"carlisting_show_uvp": 1,
"carlisting_show_freight": 0,
"finance_additionalcost_transport": "690.00",
"carlisting_status": 1,
"carlisting_status_name": "Verfügbar",
"photos": [
"https://ihre-instanz.catama-software.de/storage/images/mobiles/108/t_bild1.jpg",
"https://ihre-instanz.catama-software.de/storage/images/mobiles/108/t_bild2.jpg"
],
"..."
}
},
"status": 1,
"message": "Success"
}
data-Objekt ist die Fahrzeug-ID. Die Bild-URLs enthalten den Hostnamen Ihrer CATAMA-Instanz und sind direkt einbindbar./api/vehicles/create neu
Legt ein neues Bestandsfahrzeug an. Die Anlage läuft intern über dieselbe Routine wie die Fahrzeugmaske in CATAMA – Intern-Nummern-Vergabe, Schlüsseltresor-Zuordnung, Standardbilder und der Eintrag im Änderungsprotokoll verhalten sich identisch zur manuellen Anlage.
Die Felder werden form-encoded (application/x-www-form-urlencoded) oder als JSON-Body übergeben.
Pflichtfelder
| Name | Typ | Beschreibung |
|---|---|---|
| token | string | API-Token Pflicht |
| name | string | Fahrzeugbezeichnung, z. B. Golf Pflicht |
| fabricator_id | integer | Hersteller-ID Pflicht |
| fabricator | string | Alternative zu fabricator_id: Herstellername im Klartext, z. B. Volkswagen. Wird serverseitig aufgelöst. |
fabricator_id liefert der Endpunkt /api/mobiles/fabricators, siehe Hersteller und Warengruppen.category_id und die zugehörigen Namen für category liefert der Endpunkt /api/articles/categories, ebenfalls beschrieben in Hersteller und Warengruppen.Schreibbare Felder (create und update)
| Name | Typ | Beschreibung |
|---|---|---|
| intern_id | string | Interne Fahrzeugnummer. Muss innerhalb der Filiale eindeutig sein. |
| name | string | Fahrzeugbezeichnung |
| modell | string | Modell / Ausführung |
| chassis_number | string | Fahrgestellnummer (VIN) |
| plate | string | Kennzeichen |
| color | string | Farbe (Herstellerbezeichnung) |
| basic_color | string | Grundfarbe |
| interiorcolor | string | Innenausstattung / Innenfarbe |
| mileage | integer | Kilometerstand |
| power_ps | integer | Leistung in PS |
| power_kw | integer | Leistung in kW |
| cubic | integer | Hubraum in ccm |
| kind_id | integer | Fahrzeugart (PKW, Motorrad …) |
| type_id | integer | Fahrzeugtyp; Standardwerte: 1 = Neufahrzeug, 2 = Gebrauchtfahrzeug, 3 = Vorführer, 4 = Jahreswagen, 5 = Werksmaschine, 6 = Mietfahrzeug, 7 = Firmenfahrzeug. Die Liste ist je Installation pflegbar; der Klartext steht in type_name der GET-Antwort. |
| geartype_id | integer | Getriebeart |
| drivetype_id | integer | Antriebsart |
| emission_id | string | Schadstoffklasse |
| category_id | integer | Warengruppe des Fahrzeugs; sie steuert die DATEV-Konten bei der Fakturierung. Gültige IDs liefert /api/articles/categories. |
| category | string | Alternative zu category_id: Name der Warengruppe im Klartext, z. B. Fahrzeugeinkauf §25a. Wird serverseitig aufgelöst. Sind beide Felder gesetzt, gewinnt category_id. |
| vat_removeable | integer | USt. ausweisbar: 1 = Regelbesteuerung, 0 = Differenzbesteuerung nach § 25a UStG |
| vehicle_category_id | string | Fahrzeugkategorie(n) wie Sportler oder Tourer; mehrere Werte kommagetrennt. Hat nichts mit der Warengruppe zu tun. |
| registration_date | string | Erstzulassung, Format dd.mm.YYYY (auch mm.YYYY oder YYYY) |
| general_inspection | string | HU/AU, Format mm.YYYY oder dd.mm.YYYY |
| purchased_at | string | Ankaufsdatum, Format dd.mm.YYYY |
| nextservice_at | string | Nächster Service, Format mm.YYYY oder dd.mm.YYYY |
| price | decimal | Verkaufspreis; Komma oder Punkt als Dezimaltrenner |
| purchase_price | decimal | Einkaufspreis; Komma oder Punkt als Dezimaltrenner |
| status_type | integer | 1 = aktiv (Standard), 2 = inaktiv |
| mobile_status | integer | Bestandsstatus, Standard 1 (verfügbar) – siehe Referenztabelle unten |
| location_id | integer | Standort-ID |
| description_html | string | Beschreibungstext, HTML erlaubt |
| branch_id | integer | Filiale, Standard 1. Nur bei create relevant. |
| user_id | integer | CATAMA-Benutzer, der als Verursacher im Änderungsprotokoll erscheint. Standard 0 (System). |
/api/vehicles/list. Was Sie lesen, können Sie unter demselben Namen wieder schreiben. Alle übrigen Felder der GET-Antwort (Garantien, Schlüsseldaten, Freifelder …) sind derzeit nicht beschreibbar.Einkaufs-Steuerart und Warengruppe
Die DATEV-Konten hängen an der Warengruppe des Fahrzeugs (category_id bzw. category), nicht an der Fahrzeugkategorie. Ob die Umsatzsteuer ausgewiesen wird, steuert vat_removeable. Beide Felder lassen sich bei create und update setzen:
| Steuerart | vat_removeable | Warengruppe |
|---|---|---|
| Regelbesteuerung | 1 | Warengruppe für Fahrzeuge mit USt-Ausweis |
| Differenzbesteuerung § 25a | 0 | Warengruppe für differenzbesteuerte Fahrzeuge |
| Innergemeinschaftlicher Erwerb | 1 | Warengruppe mit den Konten für den IG-Erwerb |
Für den innergemeinschaftlichen Erwerb gibt es kein eigenes Kennzeichen – er wird über eine eigene Warengruppe mit den passenden Konten abgebildet. Übergeben Sie diese deshalb immer explizit.
vat_removeable ohne category_id/category, setzt CATAMA die in den Systemeinstellungen hinterlegte Standard-Warengruppe („Standard WG Fahrzeug-Verkauf“ bzw. „Standard WG Fahrzeug-Diff-Steuer“) – genau wie beim Umschalten des Hakens in der Fahrzeugmaske. Ist dort keine Warengruppe hinterlegt, bleibt die bestehende Warengruppe unverändert. Eine mitgesendete Warengruppe hat immer Vorrang. Bei Kommissionsfahrzeugen greift die Vorgabe nicht – sie behalten ihre Warengruppe.category_id steht seit dieser Version für die Warengruppe. Die Fahrzeugkategorie, die früher unter category_id gelesen und geschrieben wurde, heißt jetzt vehicle_category_id.POST /api/vehicles/update Content-Type: application/x-www-form-urlencoded token=IHRGEHEIMERCATAMATOKEN &id=108 &vat_removeable=0 &category_id=22 (alternativ statt category_id: &category=Fahrzeugeinkauf §25a)
intern_id wird dann wie in der Oberfläche ignoriert bzw. nur als Vorgabe interpretiert. Prüfen Sie deshalb immer die intern_id in der Antwort.POST /api/vehicles/create Content-Type: application/x-www-form-urlencoded token=IHRGEHEIMERCATAMATOKEN &fabricator_id=12 &name=Golf &modell=VII 2.0 TDI &chassis_number=WVWZZZ1KZAW000000 &mileage=84500 &price=18900,00 &purchase_price=15400,00 ®istration_date=15.03.2020 &general_inspection=06.2027 &vat_removeable=0 &category_id=22 &user_id=74
{
"status": 1,
"message": "Success",
"data": {
"vehicle": {
"id": 108,
"intern_id": "FZ-00108",
"name": "Golf",
"modell": "VII 2.0 TDI",
"fabricator_id": 12,
"status_type": 1,
"mobile_status": 1,
"branch_id": 1,
"category_id": 22,
"vat_removeable": 0
}
},
"vehicle_id": 108
}
category_id und vat_removeable in der Antwort zeigen den tatsächlich gespeicherten Stand. Das ist wichtig, wenn die Warengruppe aus der Standardvorgabe der Systemeinstellungen stammt.Fehlerfälle
| HTTP | message | Ursache |
|---|---|---|
| 401 | Invalid Token | Token fehlt oder ist ungültig |
| 400 | Parameter name is required | name fehlt |
| 400 | Parameter fabricator_id is required | Weder fabricator_id noch fabricator übergeben |
| 400 | Fabricator not found | Hersteller-ID bzw. -Name existiert nicht |
| 400 | Category not found | Warengruppe aus category_id bzw. category existiert nicht oder ist inaktiv |
| 400 | Parameter vat_removeable must be 0 (Differenzbesteuerung) or 1 (USt. ausweisbar) | vat_removeable enthält einen anderen Wert als 0 oder 1 |
| 400 | Parameter … must be numeric | Zahlenfeld enthält keinen gültigen Wert |
| 400 | Parameter … must be a date (d.m.Y, m.Y or Y) | Datumsfeld nicht interpretierbar |
| 409 | Vehicle with this intern_id already exists in branch | intern_id in dieser Filiale bereits vergeben |
| 500 | Insert failed | Anlage in CATAMA fehlgeschlagen |
/api/vehicles/update neu
Ändert ein bestehendes Bestandsfahrzeug. POST und PATCH verhalten sich identisch – beide führen ein Teil-Update durch: Es werden ausschließlich die Felder geschrieben, die im Request enthalten sind. Alle übrigen Daten des Fahrzeugs, einschließlich Fotos, Dokumenten und Datumsfeldern, bleiben unverändert.
Pflichtfelder
| Name | Typ | Beschreibung |
|---|---|---|
| token | string | API-Token Pflicht |
| id | integer | Fahrzeug-ID aus /api/vehicles/list Pflicht |
Dazu mindestens ein schreibbares Feld aus der Tabelle bei /api/vehicles/create. branch_id wird beim Update ignoriert – ein Fahrzeug bleibt in seiner Filiale.
price oder purchase_price werden zusätzlich in der Preisänderungs-Historie protokolliert.mobile_status, price, purchase_price und purchased_at nicht mehr per API ändern (Antwort HTTP 409). Das entspricht der Sperre in der Oberfläche und schützt abgeschlossene Verkaufsauswertungen. Der Statuswechsel weg von „verkauft“ erfolgt über die Funktion „Fahrzeug zurückkaufen“ in CATAMA.PATCH /api/vehicles/update
Content-Type: application/x-www-form-urlencoded
token=IHRGEHEIMERCATAMATOKEN&id=108&mileage=87200&user_id=74
(nur der Kilometerstand wird geändert)
POST /api/vehicles/update
Content-Type: application/json
{ "token": "IHRGEHEIMERCATAMATOKEN", "id": 108, "price": "17900.00", "mobile_status": 2 }
(Preis senken und auf "reserviert" setzen)
vat_removeable geändert, stellt CATAMA offene Belege zum Fahrzeug automatisch auf die neue Besteuerung um und rechnet die Summen neu – wie beim Umschalten des Hakens in der Fahrzeugmaske. Die betroffenen Beleg-IDs stehen in der Antwort unter recalculated_documents. Bereits abgeschlossene Belege bleiben unverändert.{
"status": 1,
"message": "Success",
"data": {
"vehicle": {
"id": 108,
"updated_fields": ["mileage"],
"recalculated_documents": []
}
},
"vehicle_id": 108
}
Fehlerfälle
| HTTP | message | Ursache |
|---|---|---|
| 401 | Invalid Token | Token fehlt oder ist ungültig |
| 400 | Parameter id is required and must be > 0 | id fehlt oder ist ungültig |
| 404 | Vehicle not found | Kein Fahrzeug mit dieser ID |
| 400 | No updatable field was provided | Request enthält kein schreibbares Feld |
| 409 | Vehicle with this intern_id already exists in branch | Neue intern_id ist bereits vergeben |
| 400 | Category not found | Warengruppe aus category_id bzw. category existiert nicht oder ist inaktiv |
| 409 | Vehicle is sold and has an active sales document … | Gesperrtes Feld bei verkauftem Fahrzeug |
Referenz: status_type
| Wert | Bedeutung |
|---|---|
| 1 | aktiv |
| 2 | inaktiv |
Referenz: mobile_status
| Wert | Bedeutung |
|---|---|
| -2 | In Anlage / in Zulauf |
| 1 | Verfügbar / im Bestand |
| 2 | Reserviert |
| 3 | Verkauft |
| 4 | In Zulauf |
| 8 | Nicht verfügbar |
| 11 | In EKF gegeben |
| 12 | In EKF übertragen |
| 13 | Aus EKF gelöst |
/api/vehicles/ betreffen ausschließlich den Fahrzeugbestand. Kundeneigene Fahrzeuge werden getrennt geführt und über /api/customerscars/ gepflegt, siehe Kundenfahrzeugdaten.Bei Fragen zur API, steht Ihnen unser Support jederzeit zur Verfügung.