Bestandsfahrzeuge

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.

Authentifizierung
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.
GET
/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
Beispiel-Aufrufe
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)
Erfolgreiche Antwort
{
  "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"
}
Hinweis zu den Preisen: Einkaufspreis (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.
Reihenfolge der Felder: Die Felder je Fahrzeug werden alphabetisch sortiert ausgegeben. Verlassen Sie sich beim Auslesen auf die Feldnamen, nicht auf die Position. Der Schlüssel im 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
GET
/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
Beispiel-Aufruf
GET /api/vehicles/byid?id=1&token=IHRGEHEIMERCATAMATOKEN
Achtung, kleinere Feldstruktur als bei 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.
Erfolgreiche Antwort
{
  "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"
}
GET
/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.

Nur freigegebene Fahrzeuge: Ausgegeben werden ausschließlich Fahrzeuge, bei denen im Fahrzeugdatensatz die CarListing-API aktiviert ist. Fahrzeuge ohne diese Freigabe erscheinen hier nicht, auch wenn sie über /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
Beispiel-Aufrufe
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
Erfolgreiche Antwort
{
  "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"
}
Auch hier sind die Felder je Fahrzeug alphabetisch sortiert, und der Schlüssel im data-Objekt ist die Fahrzeug-ID. Die Bild-URLs enthalten den Hostnamen Ihrer CATAMA-Instanz und sind direkt einbindbar.
POST
/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.
Hersteller-IDs: Die gültigen Werte für fabricator_id liefert der Endpunkt /api/mobiles/fabricators, siehe Hersteller und Warengruppen.
Warengruppen-IDs: Die gültigen Werte für 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).
Feldnamen: Die Namen entsprechen der Ausgabe von /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.

Standard-Warengruppe: Übergeben Sie 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.
Achtung, Feldbedeutung geändert: 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.
Beispiel: Differenzbesteuerung setzen
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-Nummer: Ist in den Systemeinstellungen die automatische Vergabe der Intern-Nummer aktiv, vergibt CATAMA sie selbst – ein mitgesendetes 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.
Beispiel-Aufruf
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
&registration_date=15.03.2020
&general_inspection=06.2027
&vat_removeable=0
&category_id=22
&user_id=74
Erfolgreiche Antwort
{
  "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
POST PATCH
/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.

Protokollierung: Jede Änderung erzeugt einen Eintrag im Änderungsprotokoll des Fahrzeugs („Fahrzeugdaten bearbeitet (API)“) mit der Liste der geänderten Felder. Änderungen an price oder purchase_price werden zusätzlich in der Preisänderungs-Historie protokolliert.
Verkaufte Fahrzeuge sind teilweise gesperrt: Existiert zu einem Fahrzeug mit Status „verkauft“ ein nicht stornierter Verkaufsbeleg, lassen sich 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.
Beispiel-Aufrufe
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)
Steuerart und offene Belege: Wird 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.
Erfolgreiche Antwort
{
  "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
Abgrenzung: Die Endpunkte unter /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.

Ähnliche Artikel