====== Dokumentation der SOAP Schnittstelle Version 2.0 ======
**Bitte beachten Sie, dass die SOAP-APIs nicht mehr aktiv weiterentwickelt werden. Neue Kunden sollten ausschließlich die RESTful API nutzen, bestehende Nutzer der SOAP-Schnittstellen sollten mittelfristig auf REST umstellen.**
Eine allgemeine Beschreibung der SOAP-Schnittstelle finden Sie unter [[apis]].
===== SOAP-Zugangsdaten =====
* Proxy / SOAP-Server: ''https://autofokus24.de/SoapServer2.php''
* WSDL-Datei: ''https://autofokus24.de/genwsdl.php?type=hsntsn-v2''
* Encoding: ''utf-8''
* Namespace/URN: ''autofokus24''
===== Funktionen =====
==== login ====
Syntax: ''bool login(string username, string password [, bool useSoapFaults = false])''
Mit dieser Funktion loggen Sie sich mit Ihrem Nutzernamen/Passwort im System ein. Der Login wird serverseitig in einer
Session gehalten, dafür ist es aber notwendig, dass Sie clientseitig das Setzen von Cookies ermöglichen. Sollte dies
nicht möglich sein, kann bei jedem anderen Funktionsaufruf der Nutzername und das Passwort als letzter optionaler
Parameter übergeben werden.
* Parameter
* ''username'': Ihr Nutzername
* ''password'': Ihr Passwort
* Rückgabewert
* Liefert true im Erfolgsfall zurück. Liefert false im Fehlerfall zurück. Sollte die Ausnahmebehandlung aktiviert sein (''useSoapFaults=true'') wird ein Fehler (Exception) geworfen.
==== calcCar ====
Syntax: ''array calcCar(string hsn, string tsn, int year, int month, int miles [, string fuzzyText = ""
[, string model = "" [, string specialModel = "" [, string featureList = "" [, string color = "" [, int power = 0
[, int fuel = 0 [, int buildType = 0 [, int doorCount = 0 [, int dealerSize = 0 [, int priceClass = 0
[, int carVolume = 0 [, int garantieValue = 0 [, int monthWaitForSell = 0 [, string username = ""
[, string password = "" [, int milesPerYear = 0 [, int usageYearCount = 0 ]]]]]]]]]]]]]]]]]])''
Diese Funktion liefert Ihnen ein Array mit den Daten des erkannten Fahrzeuges, sowie den berechneten Verkaufspreis
(price) und den Händlereinkaufspreis (priceEK).
Wenn die übergebenen Parameter nicht eindeutig auf ein bestimmtes Fahrzeug verweisen (häufig der Fall bei fehlender
Angabe des Sondermodells (specialModel), bei Fahrzeugen mit 2/3-Türer oder 4/5-Türer innerhalb der Baureihe oder bei Uneindeutigkeit der Baureihe selbst), wird eine Liste aus mehreren Arrays
zurückgegeben. Für jedes Ergebnis werden dabei weiterhin die Preise berechnet. Sie können dann programmseitig filtern,
oder die Parameter entsprechend einschränken.
In seltenen Fällen ist die HSN/TSN Kombination nicht eindeutig hinsichtlich des Modells (nicht nur der Baureihe). Treffen mehrere verschiedene Modelle auf Ihre Anfrage zu, wird seit SOAP Version 2 ein Hinweis (HINT) mit der Liste zutreffender Modellbezeichnungen zurückgegeben. Sie erhalten in diesen Fällen keine Preisberechnungen zurück. Zum Beispiel trifft die HSN/TSN-Kombination 8566/AAH für die Modelle Ford Focus, Ford C-Max und Ford Kuga zu.
Seit Version 1.2 werden auch Standzeitinformationen (siehe [[standzeit|Standzeiten]]) sowie Verkaufswahrscheinlichkeiten (siehe
[[verkaufswahrscheinlichkeit]]) zurückgegeben.
Optional können auch weitere Parameter zur Händlergröße angegeben werden. Durch die Angaben der Händlerinformationen
können realistischere Verkaufspreise ermittelt werden. Die Berechnung des Einkaufspreises bleibt davon unberührt. Zu den
Händlerinformationen gehören die Parameter dealerSize, priceClass, carVolume sowie garantieValue. Weitere Informationen
zur Händlergröße finden Sie unter [[haendlergroessen]].
* Parameter
* ''hsn'': Die 4-stellige Herstellerschlüsselnummer gemäß Kraftfahrzeugbundesamt
* ''tsn'': Die 3-stellige Typschlüsselnummer gemäß Kraftfahrzeugbundesamt
* ''year'': Das Jahr der Erstzulassung
* ''month'': Der Monat der Erstzulassung
* ''miles'': Laufleistung in Kilometern
* ''fuzzyText'': (optional) Hier kann der Freitext übergeben werden, mit dessen Hilfe die interne künstliche Intelligenz die Ausstattungen, Extras, Farbe, Sondermodell usw. erkannt wird. Als Freitext eignet sich beispielsweise die Inseratsbeschreibung inkl. Titel eines angebotenen Fahrzeuges.
* ''model'': (optional) Der Name eines bestimmten Modells (z.B.: "A3" oder "Mégane"...)
* ''specialModel'': (optional) Der Name eines bestimmten Sondermodells (z.B.: "Elegance" oder "Highline"...)
* ''featureList'': (optional) Eine Kommaseparierte Liste an Kürzel/Shortcuts von expliziten Extras oder Ausstattungsmerkmalen (z.B.: "KLI,AIB,NAV,PDC") Die Funktion getFeatureList(...) liefert Ihnen eine Liste an möglichen Extras und deren Kürzel/Shortcuts. Hier können auch Werte für die Garantie/Gewährleistung übergeben werden, mit welcher das Fahrzeug verkauft werden soll. Die Garantieleistungen beeinflussen ebenfalls den Fahrzeugwert. Hier können folgende weitere Kürzel/Shortcuts für die Garantieleistung übergeben werden:
* ''OGEW'' = Verkauf ohne Gewährleistung
* ''NO_OGEW'' = Verkauf mit Gewährleistung
* ''GARANTIE'' = Verkauf mit Garantie
* ''GARANTIE_MARKE'' = Verkauf mit Markengarantie
* ''GARANTIE_HERSTELLER'' = Verkauf mit Herstellergarantie
* ''color'': (optional) Das Kürzel/Shortcut der Farbe des Fahrzeuges. (z.B.: "RED") Die Funktion getColors(...) liefert Ihnen eine Liste an möglichen Farben und deren Kürzel/Shortcuts.
* ''power'': (optional) Die Motorleistung des Fahrzeuges in Kilowatt.
* ''fuel'': (optional) Die Motorart des Fahrzeuges (1 = Ottomotor, 2 = Dieselmotor, 3 = Wankelmotor, 4 = Benzin-Elektro-Hybrid).
* ''buildType'': (optional) Die Aufbauvariante des Fahrzeuges (1 = Limousine, 2 = Kombi/Van, 3 = Coupe, 4 = Cabrio).
* ''doorCount'': (optional) Anzahl der Türen.
* ''dealerSize'': (optional) Die Unternehmensart, mit welcher der Verkäufer des Fahrzeuges agiert. Es können dabei folgende Werte übergeben werden:
* 1 = Vertrags- bzw. Markenhändler
* 2 = Freier Händler der Luxusklasse
* 3 = Freier Neuwagen- und Jahreswagenhändler
* 4 = Freier Händler
* 5 = Freier Händler, überwiegend Export
* 6 = Gutachter/Makler
* 7 = Steuerberater/Versicherung
* 8 = Werkstatt mit kleinem Handel
* ''priceClass'': (optional) Preisklasse im Durchschnitt, welche der Verkäufer handelt:
* 0= kein Handel
* 1= 0 - 5.000 €
* 2= 5.000 - 10.000 €
* 3= 10.000 - 15.000 €
* 4 = 15.000 - 20.000 €
* 5 = 20.000 - 30.000 €
* 6 = 30.000 - 40.000 €
* 7 = über 40.000 €
* ''carVolume'': (optional) Fahrzeugbestand im Durchschnitt, welche der Verkäufer handelt:
* 0 = kein Handel
* 1 = 0 - 5 Fahrzeuge
* 2 = 5 - 10 Fahrzeuge
* 3 = 10 - 20 Fahrzeuge
* 4 = 20-50 Fahrzeuge
* 5 = 50-100 Fahrzeuge
* 6 = 100-250 Fahrzeuge
* 7 = 250-1.000 Fahrzeuge
* 8 = über 1.000 Fahrzeuge
* ''garantieValue'': (optional) Garantieleistungen, welche der Verkäufer für gewöhnlich anbietet:
* 0 = kein Handel
* 1 = Verkäufe überwiegend ohne Gewährleistung
* 2 = Verkäufe überwiegend mit Gewährleistung, ohne Garantie.
* 3 = Verkäufe überwiegend mit Garantieversicherung.
* 4 = Verkäufe überwiegend mit Herstellergarantie.
* ''monthWaitForSell'': (optional) Zeitraum der Wartezeit in Monaten, die Fahrzeuge beim Händler maximal stehen sollen. Daraus werden die Verkaufswahrscheinlichkeiten (siehe [[verkaufswahrscheinlichkeit]] sowie [[wahrscheinlichkeit]]) berechnet. Realistisch sind hierbei Werte zwischen 1 und 6. Wird beispielsweise der Wert 2 übergeben, dann wird im Rückgabewert ein Array mit Preisen und dazugehörigen Verkaufswahrscheinlichkeiten geliefert, welche die Wahrscheinlichkeit für den Verkauf innerhalb von 2 Monaten bewerten. Je kürzer die maximale Wartezeit, desto geringer sind die berechneten Verkaufspreise. Empfehlung: Verwenden Sie hier 2 bis 3 Monate.
* ''username'': (optional) Ihr Nutzername, falls das Sessionhandling durch die Funktion login(...) nicht funktioniert.
* ''password'': (optional) Ihr Passwort, falls das Sessionhandling durch die Funktion login(...) nicht funktioniert.
* ''milesPerYear'': (optional) Für die Restwertprognose: Die Laufleistung pro Jahr in Kilometern
* ''usageYearCount'': (optional) Für die Restwertprognose: Die geplante Nutzungsdauer in Jahren
* Rückgabewert
* Liefert im Erfolgsfall ein Array oder eine Liste an Arrays zurück mit den genauen Daten des erkannten Fahrzeuges und die geschätzten Fahrzeugpreise.\\ Dabei ist "price" der Verkaufspreis und "priceEK" der Händlereinkaufspreis. Alle weiteren Daten erklären sich quasi von selbst.\\ Wenn kein Fahrzeug erkannt wird, wird ein leeres Array zurückgegeben.
* Für die erkannten Ausstattungsmerkmale gibt es zusätzlich eine Reihe von Rückgabewerten:
* ''extras'': Dieses Array enthält die spezifische Ausstattung des gelieferten Kfz. Das ist die Summe der Ausstattungen extrasByDate, extrasByMotor, extrasBySpecialModel und der im Fuzzytext erkannten Sonderausstattung.
* ''extrasByDate'': Sind die Ausstattungsmerkmale welche das Fahrzeug anhand seiner Grundausstattung und Bauzeit hat (Analog der Darstellung auf der Autofokus24-Website "Grundausstattung nach Bauzeit").
* ''extrasByMotor'': Sind die zusätzlichen Ausstattungsmerkmale welche das Fahrzeug aufgrund seiner Motorisierung hat (Analog der Darstellung auf der Autofokus24-Website "Zusatzausstattung durch Motorisierung").
* ''extrasBySpecialModel'': Sind die zusätzlichen Ausstattungsmerkmale welche das Fahrzeug aufgrund seines Sondermodells hat (Analog der Darstellung auf der Autofokus24-Website "Zusatzausstattung durch Sondermodell").
* ''significantExtras'': Sind die möglichen weiteren Ausstattungsmerkmale welche sich gemäß der Autofokus24-Schätzung statistisch relevant auf den Fahrzeugwert auswirken (Analog der Darstellung auf der Autofokus24-Website "Weitere Ausstattung").
* ''avgSellingTimeAtPrice'': Ist die durchschnittliche Standzeit in Tagen bis zum Verkauf bei Marktpreis (price).
* ''avgSellingTimes'': Ist ein Array bestehend aus 2-Tupeln(Verkaufspreis, Verkaufswahrhscheinlichkeit). Es werden dabei stufenweise Preise +/- um den Marktpreis und die zugehörigen Verkaufswahrscheinlichkeiten berechnet. Die Verkaufswahrscheinlichkeit bezieht sich dabei auf die übergebene Wartezeit (monthWaitForSell). Wenn also monthWaitForSell=2 übergeben wurde, und das avgSellingTimes-Array den Eintrag [3900;66] enthält, dann bedeutet es, dass bei einem Verkaufspreis von 3900 Euro die Wahrscheinlichkeit für den Verkauf innerhalb von 2 Monaten 66% beträgt.
* ''degeneration'': Ein Array mit ''usageYearCount''*12 Einträgen, die jeweils den Restwert pro Monat ab dem aktuellen Monat angeben. Wird berechnet, wenn ''milesPerYear'' und ''usageYearCount'' übergeben wurden.
==== getFeatureList ====
Syntax: ''array getFeatureList ([username = "", password = ""])''
Diese Funktion liefert Ihnen ein Array der möglichen Ausstattungen/Extras und dessen Kürzel/Shortcuts, welche bei der
Funktion calcCar(...) explizit übergeben werden können.
* Parameter
* ''username'': (optional) Ihr Nutzername, falls das Sessionhandling durch die Funktion login(...) nicht funktioniert.
* ''password'': (optional) Ihr Passwort, falls das Sessionhandling durch die Funktion login(...) nicht funktioniert.
* Rückgabewert
* Liefert ein Array mit den möglichen Ausstattungen/Extras und dessen Kürzel/Shortcuts zurück. Im Fehlerfall wird ein leeres Array zurückgegeben. Sollte die Ausnahmebehandlung aktiviert sein (useSoapFaults=true) wird ein Fehler (Execption) geworfen.
==== getColors ====
Syntax: ''array getColors ([username = "", password = ""]) ''
Diese Funktion liefert Ihnen ein Array der möglichen Farben und dessen Kürzel/Shortcuts, welche bei der Funktion
calcCar(...) explizit übergeben werden können.
* Parameter
* ''username'': (optional) Ihr Nutzername, falls das Sessionhandling durch die Funktion login(...) nicht funktioniert.
* ''password'': (optional) Ihr Passwort, falls das Sessionhandling durch die Funktion login(...) nicht funktioniert.
* Rückgabewert
* Liefert ein Array mit den möglichen Farben und dessen Kürzel/Shortcuts zurück. Im Fehlerfall wird ein leeres Array zurückgegeben. Sollte die Ausnahmebehandlung aktiviert sein (useSoapFaults=true) wird ein Fehler (Execption) geworfen.
==== getLastError ====
Syntax: ''array getLastError () ''
Liefert den letzten aufgetretenen Fehler falls vorhanden.
* Rückgabewert
* Liefert den Fehlercode (errorcode) und die Fehlerbeschreibung (faultstring) des letzten Fehlers zurück, falls ein Fehler aufgetreten ist. Liegt kein Fehler vor, sind die beiden zurückgegebenen Felder leer.
===== Tutorials =====
Im folgenden Abschnitt werden einige einfache Beispiele zur Verwendung der SOAP-Schnittstelle von Autofokus24.de
dargestellt.
==== PHP-Tutorial ====
Für die Verwendung in PHP benötigen Sie die [[http://www.php.net/manual/de/class.soapclient.php|PHP-SoapClient-Klasse]].
Code:
WSDL_CACHE_BOTH,
'encoding'=>'utf-8')
);
/* Login: Mit eMail, Passwort. SoapFaults auf 1 setzen*/
$client->login("mymail@myhost.de","meinpasswort",1);
/* Fahrzeug ermitteln, Preis berechnen und Ergebnis formatiert ausgeben...*/
print_r($client->calcCar("0999", /* HSN */
"269", /* TSN */
2004, /* Jahr */
4, /* Monat */
123000, /* Laufleistung */
" /* Freitext (aus Inserat) */
C 220 T CDI Automatik DPF,Sportpaket.Modell 2005
Brillantsilber met.,Leder Twin schwarz, Sportpaket,
AHK abnehmbar, Regensensor, Scheibenwaschanlage
beheizt, Radio Audio 20 CD, Klimaautomatik,
Sitzheizung, Automatikgetriebe 5 Gang,
Dieselpartikelfilter, LM-Felgen 17 Zoll,
Eingabefehler u.Irrtümer behalten wir uns vor.
",
"Classic", /* Sondermodell */
"XEN,PDC", /* Explizite Ausstattungen */
"", /* Farbe, keine Angabe */
110, /* Motorleistung in Kilowatt */
2, /* Motorart = Diesel */
2, /* Aufbau = Kombi */
0, /* Türen = keine Angabe */
3, /* Unternehmensart = Freier Händler */
2, /* Preisklasse = 5.000 - 10.000 € */
4, /* Fahrzeugbestand = 20-50 */
2, /* Garantieleistungen = Verkäufe überwiegend mit Gewährleistung, ohne Garantie. */
2 /* Verkaufsperiode = 2 Monate */
));
}catch (SOAPFault $f)
{
print $f->faultstring;
}
?>
Ergibt folgende Ausgabe:
Array
(
[0] => Array
(
[make] => Mercedes-Benz
[model] => C-Klasse
[submodelName] => Modell ab 2004 (W203 Facelift)
[buildKind] => 2
[specialModel] => Classic
[power] => 110
[doorCount] => 5
[color] =>
[fuel] => 2
[packets] => Array
(
[0] => AMG/Sport Paket
)
[extras] => Array
(
[PAK3] => 1
[KLI] => 1
[KLIAU] => 1
[AIB] => 1
[BAB] => 1
[SAB] => 1
[WFS] => 1
[KAB] => 1
[FAB] => 1
[ABSS] => 1
[AFLS] => 1
[BC] => 1
[BRA] => 1
[REL] => 1
[ESPI] => 1
[FH] => 1
[ESI] => 1
[ESP] => 1
[ASR] => 1
[NSW] => 1
[SV] => 1
[TMP] => 1
[Z] => 1
[ZF] => 1
[SVT] => 1
[XEN] => 1
[PDC] => 1
[LED] => 1
[LLR] => 1
[AHK] => 1
[CD] => 1
[ALU] => 1
[MET] => 1
[PF] => 1
[REG] => 1
[SOUND] => 1
[SIH] => 1
[NO_OGEW] => 1
)
[extrasByDate] => Array
(
[KLI] => 1
[KLIAU] => 1
[AIB] => 1
[BAB] => 1
[SAB] => 1
[WFS] => 1
[KAB] => 1
[FAB] => 1
[ABSS] => 1
[AFLS] => 1
[BC] => 1
[BRA] => 1
[REL] => 1
[ESPI] => 1
[FH] => 1
[ESI] => 1
[ESP] => 1
[ASR] => 1
[NSW] => 1
[SV] => 1
[TMP] => 1
[Z] => 1
[ZF] => 1
[SVT] => 1
)
[significantExtras] => Array
(
[0] => OGEW
[1] => LED
[2] => ALL
[3] => GAS
[4] => SHZG
[5] => NAV
[6] => NAV
[7] => AUTOMATIK
[8] => PF
[9] => SD
[10] => ALU
[11] => XEN
[12] => AHK
[13] => PDC
[14] => SIH
[15] => REG
[16] => GAR
[17] => WR
[18] => TLED
[19] => IAA
[20] => BXEN
[21] => SPSI
[22] => SOUND
[23] => OTUEV
[24] => LLR
)
[price] => 9096
[priceEK] => 5967
[avgSellingTimeAtPrice] => 41
[avgSellingTimes] => Array
(
[0] => Array
(
[0] => 8600
[1] => 85
)
[1] => Array
(
[0] => 8700
[1] => 83
)
[2] => Array
(
[0] => 8800
[1] => 80
)
[3] => Array
(
[0] => 8900
[1] => 78
)
[4] => Array
(
[0] => 9000
[1] => 75
)
[5] => Array
(
[0] => 9100
[1] => 73
)
[6] => Array
(
[0] => 9200
[1] => 70
)
[7] => Array
(
[0] => 9300
[1] => 68
)
[8] => Array
(
[0] => 9400
[1] => 65
)
[9] => Array
(
[0] => 9500
[1] => 63
)
[10] => Array
(
[0] => 9600
[1] => 60
)
)
)
)
An der Ausgabe ist zu erkennen, dass zunächst Marke, Modell und Submodell anhang der HSN/TSN erkannt und zugeordnet
wurden. Die Farbe wurde automatisch anhand des Freitextes erkannt. Das Paket "Sport" wurde auch am Freitext erkannt.
Weiterhin wurden die serienmäßigen Extras sowie die am Freitext erkannten Extras zugeordnet. Im Funktionsaufruf wurde
das Kürzel "XEN" und "PDC" übergeben, wodurch diese Extras explizit übergeben wurden. Die Extras LED, LLR, AHK, CD, ALU,
MET, PF, REG, SOUND, SIH wurden ebenfalls anhand des Freitextes erkannt. Schließlich wird der Verkaufspreis (price) und
Händlereinkaufspreis (priceEK) zurückgegeben.