Dokumentation der RESTful API Version 2
Eine allgemeine Beschreibung der RESTful API finden Sie unter APIs.
Authentifizierung und Sicherheit
Die Authentifizierung erfolgt per Basic-HTTP-Auth mit Nutzername und Passwort.
Die Schnittstelle ist nur über HTTPS erreichbar.
Bei einem Authentifizierungsfehler wird ein Fehler mit Status 401 und Code "UNAUTHORIZED" zurückgegeben.
Datentypen, Encoding
POST-Parameter werden mit dem MIME-Type application/x-www-form-urlencoded
formatiert und mit UTF-8 kodiert übergeben.
Antworten werden als JSON (Mime-Type application/json) formatiert und
mit UTF-8 kodiert übertragen.
Fehlende Werte sowie null sind als gleichwertig zu betrachten. Im Gegensatz dazu bedeutet
ein leeres Array oder Objekt, dass das Feld zwar berechnet wurde, jedoch tatsächlich keine Daten enthält.
Verhalten im Fehlerfall
Genutzte HTTP-Statuscodes
Hinweis: Der code wird nur zurückgegeben, wenn die Anfrage die API erreicht. Antworten des Webservers enthalten damit kein JSON. Insbesondere ist dies der Fall für alle Requests über HTTP, die durch den Server mit 301 Moved Permanently und einer Weiterleitung zu HTTPS beantwortet werden.
HTTP-Status/ status | HTTP-Status Name | code | Beschreibung | Verwendung |
|---|---|---|---|---|
| 300 | Multiple Choices | MULTIPLE_MODELS | Mehrere zutreffende Modelle gefunden | Calculate |
| 301 | Moved Permanently | MOVED_PERMANENTLY | Zugriff ohne SSL mit Weiterleitung auf HTTPS | Überall |
| 400 | Bad Request | INVALID_INPUT | Falsche oder fehlende Parameter | Überall |
| 401 | Unauthorized | UNAUTHORIZED | Authentifizierungsfehler | Überall bei fehlenden oder falschen Anmeldedaten |
| 404 | Not found | NOT_FOUND | Fehlerhafte URL | Requests an nicht existierende URIs oder mit falschen Datentypen (z.B. einem String statt Integer) o.ä., die dadurch nicht zugeordnet werden können |
| NO_DATA | Keine Modelle gefunden | GetModels | ||
| Keine Baureihen gefunden | GetSeries | |||
| Keine Aufbauten gefunden | GetBodies | |||
| Keine Motoren gefunden | GetEngines | |||
| Keine Sondermodelle gefunden | GetEditions | |||
| HSN/TSN nicht gefunden | Calculate | |||
| NO_ESTIMATION_DATA | HSN/TSN kann nicht geschätzt werden | |||
| MODEL_NOT_FOUND | HSN/TSN gefunden, aber keine Treffer durch Angabe des Modells | |||
| SERIES_NOT_FOUND | HSN/TSN gefunden, aber keine Treffer durch Angabe der Baureihe | |||
| EDITION_NOT_FOUND | HSN/TSN gefunden, aber keine Treffer durch Angabe des Sondermodells | |||
| NO_MATCHES | HSN/TSN gefunden, aber keine Treffer zum gewünschten Zeitpunkt oder durch Angabe von Aufbau oder Türen | |||
| 405 | Method Not Allowed | METHOD_NOT_ALLOWED | Unzulässige HTTP-Methode | Überall |
| 450 | Rate Limit Exceeded | RATE_LIMIT_EXCEEDED | Request-Limit wurde erreicht | |
| 500 | Internal Server Error | INTERNAL_SERVER_ERROR | Ein serverseitiger Fehler ist aufgetreten. Wenn möglich, wird eine kurze Erklärung in message gegeben |
|
| 503 | Service Unavailable | SERVICE_UNAVAILABLE | API ist auf Grund von Wartungsarbeiten o.ä. temporär nicht erreichbar |
Format
error (Objekt) | status | Integer, entspricht dem HTTP-Status |
code | Maschinenlesbare Bezeichnung des Fehlers | |
message | Beschreibung des Fehlers. Diese kann sich ohne Ankündigung ändern und sollte nicht zur automatisierten Auswertung herangezogen werden | |
invalid | Für Status 400 (Bad Request): Liste ungültiger Eingabeparameter.Beispiel: "invalid":["year","month"] |
|
missing | Für Status 400 (Bad Request): Liste fehlender Eingabeparameter.Beispiel: "missing":["year","month"] |
|
options | Für Status 300 (Multiple Choices): Objekt mit Auswahlmöglichkeiten.Beispiel: "options":{"model":["X5","X6"]}] |
|
url | Für Status 300 (Multiple Choices): URL-Template mit Platzhaltern für die in options gelisteten Möglichkeiten.Beispiel (gekürzt): "url": "…\/calculate\/7909\/aak?…&model={model}" |
Beispiel
GET https://autofokus24.de/api/v2/calculate/7909/aak?pretty_print&mileage=1&year=2013&month=5
{
"error": {
"status": 300,
"code": "MULTIPLE_CHOICES",
"message": "For HSN=7909 \/ TSN=aak multiple models exist"
},
"options": {
"model": [
"X5",
"X6"
]
},
"url": "https:\/\/autofokus24.de\/api\/v2\/calculate\/7909\/aak?pretty_print&mileage=1&year=2013&month=5&model={model}"
}
URLs
Allgemeines
Prefix: /api/v2
Die folgenden URLs werden an den Prefix angehangen. Die zu verwendende HTTP-Methode zum Zugriff ist vorangestellt.
Alle aufgelisteten Parameter müssen, wenn nicht anders angegeben, übergeben werden.
Zusätzlich existiert für jede URI der Parameter pretty_print. Wird er mit übergeben, wird die Ausgabe serverseitig zur besseren Lesbarkeit formatiert. Der Wert des Parameters wird ignoriert.
Übersicht und Abrechnung
| Name | Methode | URL | Rückgabe | Abrechnung |
|---|---|---|---|---|
| GetAllColors | GET | /colors | Mögliche Farbcodes | |
| GetAllEquipment | GET | /equipment | Mögliche Ausstattungs-Kürzel | |
| GetAllBodies | GET | /bodies | Mögliche Aufbauvarianten | |
| GetBrands | GET | /brands | Alle Marken | |
| GetModels | GET | /brands/{brand_id}/models | Modelle einer Marke | |
| GetSeries | GET | /models/{model_id}/series | Baureihen eines Modells | |
| GetBodies | GET | /series/{series_id}/bodies | Aufbauten einer Baureihe | |
| GetEngines | GET | /series/{series_id}/bodies/{body_id}/engines | Motoren zur aktuellen Auswahl | Nur kostenpflichtig, falls kein Folgeaufruf von GetEditions erfolgt |
| GetEditions | GET | /series/{series_id}/bodies/{body_id}/ ↵ | Sondermodelle und HSN/TSNs zur aktuellen Auswahl | Kostenpflichtig, wird gezählt und abgerechnet |
| Calculate | GET, POST | /calculate/{hsn}/{tsn} | Fahrzeugbewertung |
GetAllColors
Beschreibung
Gibt ein Objekt mit Kurzbezeichnung-Farbname-Zuordnungen zurück. Die Kürzel können in Calculate verwendet werden.
Aufruf
- Methode:
GET - URL:
…/colors
Beispiel
GET /api/v2/colors
{
"wht": "weiss",
"red": "rot",
"ora": "orange",
...
}
GetAllEquipment
Beschreibung
Gibt ein Objekt mit Kurzbezeichnung-Featurename-Zuordnungen zurück. Die Kürzel können in Calculate verwendet werden.
Aufruf
- Methode:
GET - URL:
…/equipment
Beispiel
GET /api/v2/equipment
{
"GAS": "Gasantrieb",
"ELE": "Elektromotor",
"BHG": "behindertengerecht",
...
}
GetAllBodies
Beschreibung
Gibt ein Array aller verfügbaren Aufbauvarianten zurück. Die Kürzel können in Calculate verwendet werden.
Aufruf
- Methode:
GET - URL:
…/bodies
Beispiel
GET /api/v2/bodies
[
"BUS",
"CABRIO",
"COUPE",
...
]
GetBrands
Beschreibung
Gibt die Liste bekannter Marken mit ihrer jeweiligen ID zurück.
Aufruf
- Methode:
GET - URL:
…/brands
Rückgabe
Zurückgegeben wird ein Objekt mit zwei Elementen:
-
brands, welches wiederum ein Objekt mit ID–Marken-Zuordnungen enthält -
models_url: Die URL der nächsten möglichen Abfrage
Beispiel
GET /api/v2/brands
{
"brands": {
"1": "Alfa Romeo",
"57": "ALPINA",
"37": "VW",
...
},
"models_url": "https://autofokus24.de/api/v1/brands/{brand_id}/models",
}
GetModels
Beschreibung
Gibt die Liste der in einem bestimmten Zeitraum hergestellten Modelle zu einer angegebenen Marke zurück.
Aufruf
- Methode:
GET - URL:
…/brands/{brand_id}/models
Parameter
In der URL übergeben:
| Parameter | Beschreibung |
|---|---|
brand_id | ID der Marke |
Im Query-String übergeben:
| Parameter | Beschreibung | Erforderlich? |
|---|---|---|
year | Jahr der Erstzulassung | Ja |
month | Monat der Erstzulassung |
Rückgabe
Zurückgegeben wird ein Objekt mit zwei Elementen:
-
models, welches wiederum ein Objekt mit ID–Modellbezeichnung-Zuordnungen enthält -
series_url: Die URL der nächsten möglichen Abfrage
Fehler
-
404 NO_DATA
Beispiel
GET /api/v2/brands/37/models?year=2015&month=5
{
"models": {
"850": "Amarok",
"851": "Bora",
"864": "Passat",
...
},
"series_url": "https://autofokus24.de/api/v2/models/{model_id}/series"
}
GetSeries
Beschreibung
Gibt die Liste der in einem bestimmten Zeitraum hergestellten Baureihen zu einem angegebenen Modell einer Marke zurück.
Aufruf
- Methode:
GET - URL:
…/models/{model_id}/series
Parameter
In der URL übergeben:
| Parameter | Beschreibung |
|---|---|
model_id | ID des Modells |
Im Query-String übergeben:
| Parameter | Beschreibung | Erforderlich? |
|---|---|---|
year | Jahr der Erstzulassung | Ja |
month | Monat der Erstzulassung |
Rückgabe
Zurückgegeben wird ein Objekt mit zwei Elementen:
-
series, welches wiederum ein Objekt mit ID–Baureihenbezeichnung-Zuordnungen enthält -
bodies_url: Die URL der nächsten möglichen Abfrage
Fehler
-
404 NO_DATA
Beispiel
GET /api/v2/models/864/series?year=2015&month=5
{
"series": {
"1191": "Modell ab 2010",
"1192": "Modell ab 2008 (CC)",
},
"bodies_url": "https://autofokus24.de/api/v2/series/{series_id}/bodies"
}
GetBodies
Beschreibung
Gibt die Liste der verfügbaren Aufbauten zu einem Modell in einer Baureihe zurück.
Aufruf
- Methode:
GET - URL:
…/series/{series_id}/bodies
Parameter
In der URL übergeben:
| Parameter | Beschreibung |
|---|---|
series_id | ID der Baureihe |
Im Query-String übergeben:
| Parameter | Beschreibung | Erforderlich? |
|---|---|---|
year | Jahr der Erstzulassung | Ja |
month | Monat der Erstzulassung |
Rückgabe
Zurückgegeben wird ein Objekt mit zwei Elementen:
-
bodies, welches wiederum aus Aufbau-Objekten besteht, wobei die ID der Aufbauvariante als Key genutzt wird -
engines_url: Die URL der nächsten möglichen Abfrage
Die Aufbauobjekte bestehen aus folgenden Feldern:
| Feld | Typ | Beschreibung |
|---|---|---|
body | String | Bezeichnung des Aufbaus |
doors | Integer | Anzahl Türen |
Fehler
-
404 NO_DATA
Beispiel
GET /api/v2/series/1191/bodies?year=2015&month=5
{
"bodies": {
"42": {
"body": "KOMBI",
"doors": "5"
},
"45": {
"body": "LIMOUSINE",
"doors": "4"
}
},
"engines_url": "https://autofokus24.de/api/v2/series/1191/bodies/{body_id}/engines"
}
GetEngines
Beschreibung
Gibt die Liste der verfügbaren Motoren zu einem Modell in einer Baureihe mit einem bestimmten Aufbau zurück.
Aufruf
- Methode:
GET - URL:
…/series/{series_id}/bodies/{body_id}/engines
Parameter
In der URL übergeben:
| Parameter | Beschreibung |
|---|---|
series_id | ID der Baureihe |
body_id | ID der Aufbauvariante |
Im Query-String übergeben:
| Parameter | Beschreibung | Erforderlich? |
|---|---|---|
year | Jahr der Erstzulassung | Ja |
month | Monat der Erstzulassung |
Rückgabe
Zurückgegeben wird ein Objekt mit zwei Elementen:
-
engines, welches wiederum aus Motor-Objekten besteht, wobei die ID des Motors als Key genutzt wird -
editions_url: Die URL der nächsten möglichen Abfrage
Die Motorobjekte bestehen aus folgenden Feldern:
| Feld | Typ | Beschreibung |
|---|---|---|
kw | Integer | Leistung in Kilowatt (kW) |
fuel | String | Kraftstoff. Mögliche Werte: DIESEL, BENZIN, ELEKTRO, HYBRID-BENZIN, HYBRID-DIESEL |
cylinders | Integer | Zylinderanzahl |
cubic_capacity | Integer | Hubraum in Kubikzentimeter (cm³ / ccm) |
Fehler
-
404 NO_DATA
Beispiel
GET /api/v2/series/1191/bodies/42/engines?year=2015&month=5
{
"engines": {
"6590": {
"kw": "77",
"fuel": "DIESEL",
"cylinders": "4",
"cubic_capacity": "1.6"
},
"9050": {
"kw": "90",
"fuel": "BENZIN",
"cylinders": "4",
"cubic_capacity": "1.4"
},
...
},
"editions_url": "https://autofokus24.de/api/v2/series/1191/bodies/42/engines/{engine_id}/editions"
}
GetEditions
Beschreibung
Gibt die Liste der verfügbaren Sondermodelle zu einem Modell in einer Baureihe mit einem bestimmten Aufbau und Motor zurück.
Aufruf
- Methode:
GET - URL:
…/series/{series_id}/bodies/{body_id}/engines/{engine_id}/editions
Parameter
In der URL übergeben:
| Parameter | Beschreibung |
|---|---|
series_id | ID der Baureihe |
body_id | ID der Aufbauvariante |
engine_id | ID des Motors |
Im Query-String übergeben:
| Parameter | Beschreibung | Erforderlich? |
|---|---|---|
year | Jahr der Erstzulassung | Ja |
month | Monat der Erstzulassung |
Rückgabe
Zurückgegeben wird ein Objekt mit einem Element, editions, welches wiederum aus Sondermodell-Objekten besteht, wobei die ID des Sondermodells als Key genutzt wird.
Eine Folge-URL wird nicht übergeben, da in der Baumstruktur keine weiteren Schritte notwendig sind, um ein Fahrzeug zu identifizieren.
Die Sondermodellobjekte bestehen aus folgenden Feldern:
| Feld | Typ | Beschreibung |
|---|---|---|
edition | String | Bezeichnung des Sondermodells |
hsn | String | Herstellerschlüsselnummer |
tsn_list | Array | Ungeordnetes Array aller Typschlüsselnummern des Sondermodells |
Fehler
-
404 NO_DATA
Beispiel
GET /api/v2/series/1212/bodies/27/engines/11730/editions?year=2010&month=5
{
"editions": {
"55302": {
"edition": "BlueMotion Comfortline",
"hsn": "0603",
"tsn_list": [
"APW"
]
},
"55304": {
"edition": "Comfortline",
"hsn": "0603",
"tsn_list": [
"APW",
"ASF"
]
},
...
},
}
Calculate
Beschreibung
Gibt zu einer angegebenen HSN und TSN entsprechende Preisschätzungen, Ausstattung und weitere
Grundinformationen zurück. Da der Parameter free_text sehr lang werden kann, darf diese Funktion
auch per POST abgerufen werden.
Leere Werte werden nicht zurückgegeben, damit können einzelne Elemente der Antwort, wie motor_name,
color oder equipment_by_edition, mitunter scheinbar fehlen.
Aufruf
- Methode:
GET - URL:
…/calculate/{hsn}/{tsn}
Parameter
In der URL übergeben:
| Parameter | Beschreibung |
|---|---|
hsn | Herstellerschlüsselnummer |
tsn | Typschlüsselnummer |
Im Query-String übergeben:
| Parameter | Typ / Wertebereich | Beschreibung | Erforderlich? | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
year |
Integer | Jahr der Erstzulassung | Ja | |||||||||||||||||||||
month |
Integer | Monat der Erstzulassung | ||||||||||||||||||||||
mileage |
Integer | Laufleistung in km | ||||||||||||||||||||||
free_text |
String | Beliebiger Fließtext zur Auswertung mit Einfluss auf die Bewertung | Nein | |||||||||||||||||||||
model |
String | Modellbezeichnung wie in GetModels. Nur notwendig, wenn mehrere Modelle mit gleicher HSN/TSN gefunden wurden | ||||||||||||||||||||||
series |
String | Baureihenbezeichnung nach GetSeries | ||||||||||||||||||||||
edition |
String | Sondermodellbezeichnung; die Schreibweise des Sondermodells ist der Funktion GetEditions zu entnehmen | ||||||||||||||||||||||
equipment |
String | Kommagetrennte Aufzählung der Ausstattungsmerkmale als Kürzel nach GetAllEquipment | ||||||||||||||||||||||
color |
String | Kurzbezeichnung der Farbe nach GetAllColors | ||||||||||||||||||||||
body |
String | Aufbau nach GetAllBodies | ||||||||||||||||||||||
doors |
Integer | Anzahl Türen | ||||||||||||||||||||||
dealer_type |
-1 – 8 | Unternehmensart
|
||||||||||||||||||||||
dealer_price_range |
-1 – 7 | durchschnittliche Preisklasse des Händlers.
Diese Einstellung ist wichtig, um korrekte spezifische Preise für einen individuellen Geschäftsbetrieb zu berechnen. Bitte geben Sie hier an, welche maximale Preisklasse an Kfz üblicherweise über Ihre Plattform gehandelt wird.
|
||||||||||||||||||||||
stock_size |
-1 – 8 | durchschnittlicher Fahrzeugbestand
|
||||||||||||||||||||||
guarantees |
-1 – 4 | üblicherweise angebotene Garantieleistungen
|
||||||||||||||||||||||
average_standing_time |
0 – 4 | Standzeit in Monaten zur Berechnung der Verkaufswahrscheinlichkeiten in sales_probability |
||||||||||||||||||||||
yearly_mileage |
Integer | Jährliche Laufleistung in km zur Berechnung der Restwertprognose in degeneration |
||||||||||||||||||||||
planned_usage_time |
Integer | Geplante Nutzungsdauer in Jahren zur Berechnung der Restwertprognose in degeneration |
||||||||||||||||||||||
return_all_editions |
0 / 1 | Default ist 0. Alle gefundenen Sondermodelle zurückgeben, wenn 1, ansonsten wird auf ein Basismodell verallgemeinert | ||||||||||||||||||||||
use_production_tolerance |
0 / 1 | Default ist 0. Toleranzen um Produktionszeiträume beachten, wenn 1 | ||||||||||||||||||||||
ignore_missing_estimation |
0 / 1 | Default ist 0. Liefert auch Kfz-Daten, wenn keine Schätzung möglich ist, wenn 1 | ||||||||||||||||||||||
pretty_print |
Beliebig | Setzen, um die Ausgabe für Tests u.ä. zu formatieren |
Rückgabe
Zurückgegeben wird eine Liste von Fahrzeug-Objekten, die jeweils aus den in folgender Tabelle erklärten Feldern bestehen.
| Feld | Typ | Beschreibung |
|---|---|---|
hsn | String | Herstellerschlüsselnummer |
tsn | String | Typschlüsselnummer |
brand | String | Marke |
model | String | Modell |
series | String | Baureihe |
production_start | String | Produktionsstart der Baureihe im Format Monat/Jahr |
edition | String | Sondermodell |
body | String | Aufbauvariante |
doors | Integer | Anzahl Türen |
color | String | Optional. Farbe |
engine | String | Beschreibung des Motors |
engine_name | String | Optional. Herstellerspezifische Bezeichnung des Motors |
fuel | String | Kraftstoff |
kw | Integer | Leistung in Kilowatt (kW) |
cubic_capacity | Integer | Hubraum in Kubikzentimeter (cm³ / ccm) |
equipment_by_date | Array | Optional. Durch den Bauzeitraum definierte Grundausstattung |
equipment_by_engine | Array | Optional. Durch die Motorisierung definierte Ausstattungsmerkmale |
equipment_by_edition | Array | Optional. Durch das Sondermodell definierte Ausstattungsmerkmale |
equipment | Array | Optional. Gesamtausstattung, die zur Preisberechnung beachtet wurde.Neben den Werten aus equipment_by_date, equipment_by_engine und equipment_by_edition werden hier insbesonderedie beachtete Gewährleistung oder Garantie und per equipment übergebene sowie im free_text erkannte Ausstattungen gelistet. |
optional_equipment | Array | Optional. Mögliche weitere Ausstattungsmerkmale, welche sich gemäß der Autofokus24-Schätzung statistisch relevant auf den Fahrzeugwert auswirken (Analog zu "Weitere Ausstattung" auf der Autofokus24-Website). |
selling_price | Integer | Händlerverkaufspreis |
buying_price | Integer | Händlereinkaufspreis |
dealer_price_range | Integer | Zur Berechnung verwendete dealer_price_range. Details siehe Parameter |
guarantee | String | Bezeichnung der zur Berechnung verwendeten Gewährleistung oder Garantie |
estimated_standing_time | Integer | Geschätzte durchschnittliche Standzeit in Tagen beim berechneten Verkaufspreis |
sales_probability | Objekt | Optional. Verkaufspreis–Verkaufswahrscheinlichkeit-Zuordnungen.Es werden dabei für Preise in 100€-Schritten um den Marktpreis die jeweiligen Verkaufswahrscheinlichkeiten berechnet.Die Wahrscheinlichkeit bezieht sich dabei auf die als average_standing_time übergebene Wartezeit.Beispiel: Wenn für average_standing_time 2 übergeben wurde, und sales_probability den Eintrag "3900": 66 enthält,liegt die Wahrscheinlichkeit für den Verkauf innerhalb von 2 Monaten bei einem Verkaufspreis von 3900 Euro bei 66% |
degeneration | Array | Optional. Ein Objekt mit planned_usage_time*12 Einträgen, die jeweils den Restwert pro Monat ab dem aktuellen Monat angeben. Datenpunkt 0 entspricht dem Preis in selling_price.Wird berechnet, wenn planned_usage_time und yearly_mileage übergeben wurden |
Fehler
-
300 MULTIPLE_MODELS -
404 NO_DATA -
404 MODEL_NOT_FOUND -
404 SERIES_NOT_FOUND -
404 EDITION_NOT_FOUND -
404 NO_MATCHES
Beispiel
GET /api/v2/calculate/0035/afs?pretty_print&mileage=20000&year=2010&month=10&doors=5&dealer_price_range=3
[
{
"hsn": "0035",
"tsn": "afs",
"brand": "Opel",
"model": "Corsa",
"series": "Modell ab 2006 (D)",
"production_start": 2007,
"edition": null,
"body": "LIMOUSINE",
"doors": 5,
"color": null,
"engine": "4-Zylinder DIESELMOTOR",
"engine_name": null,
"fuel": "DIESEL",
"kw": 55,
"cubic_capacity": 1248,
"equipment_by_date": [
"AIB",
"BAB",
...
],
"equipment_by_engine": [],
"equipment_by_edition": [],
"equipment": [
"AIB",
"BAB",
...
],
"selling_price": 2345,
"buying_price": 1234,
"dealer_price_range": 3,
"guarantee": "Mit Gewährleistung",
"estimated_standing_time": 40,
"sales_probability": null,
"degeneration": null
}
]