VERSION 1.7 - idealo Blog
Transcription
VERSION 1.7 - idealo Blog
WEBSERVICE ANGEBOTSAKTUALISIERUNG VERSION 1.7 idealo internet GmbH | HRB 76749 - Amtsgericht Charlottenburg Geschäftsführer: Dr. Albrecht von Sonntag, Dr. Philipp-Christopher Peitsch Ritterstraße 11 | 10969 Berlin | Tel.: +49 30 403 010 - 33 | Fax: +49 30 319 89 25 - 02 | [email protected] | www.idealo.de Inhaltsverzeichnis 1.Allgemeines................................................................................................................3 2. updateOffers..............................................................................................................3 2.1. Beispiele.............................................................................................................4 2.2. Beschreibung der XML Elemente und Attribute der Anfrage.............................7 offers.offer.............................................................................................................7 offers.updateTimestamp.......................................................................................7 offers.testMode.....................................................................................................7 offers.offer.command............................................................................................7 offers.offer.sku.......................................................................................................8 offers.offer.revision................................................................................................8 offers.offer.title.......................................................................................................8 offers.offer.productTitle.........................................................................................8 offers.offer.url........................................................................................................9 offers.offer.delivery................................................................................................9 offers.offer.price....................................................................................................9 offers.offer.basePrice............................................................................................9 offers.offer.listPrice................................................................................................9 offers.offer.attributes...........................................................................................10 offers.offer.image................................................................................................10 offers.offer.shipping.............................................................................................10 offers.offer.shippingComment.............................................................................11 offers.offer.category.............................................................................................11 offers.offer.brand.................................................................................................11 offers.offer.oen....................................................................................................11 offers.offer.formerPrices......................................................................................12 offers.offer.deposits.............................................................................................12 offers.offer.ean....................................................................................................12 offers.offer.han....................................................................................................13 offers.offer.pzn....................................................................................................13 offers.offer.description.........................................................................................13 offers.offer.merchant...........................................................................................13 offers.offer.used..................................................................................................13 offers.offer.rebuild...............................................................................................14 offers.offer.contract.............................................................................................14 offers.offer.downloadable....................................................................................14 offers.offer.expireDate.........................................................................................14 offers.offer.voucherCode.....................................................................................14 offers.offer.eCommerce......................................................................................15 offers.offer.eCommerce.checkoutApproved.......................................................15 Offers.offer.eCommerce.checkoutLimit..............................................................16 Offers.offer.eCommerce.fulfillmenttype..............................................................16 Offers.offer.eCommerce.fulfillmentOptions.........................................................16 Offers.offer.eCommerce.fulfillmentOptions.twoManHandling.............................16 Offers.offer.eCommerce.fulfillmentOptions.disposal..........................................17 2.3. Attribute der Angebotselemente:......................................................................18 context (verschiedene Angebotselemente)........................................................18 type (Angebotselement shipping).......................................................................18 2.4. Die Antwort des updateOffers - Webservice....................................................20 1 / 29 2.5. Beschreibung der XML Elemente und Attribute der Antwort...........................21 offerResponses.error..........................................................................................21 offerResponses.offerResponse.id......................................................................21 offerResponses.offerResponse.sku....................................................................21 offerResponses.offerResponse.status................................................................21 offerResponses.offerResponse.statusMsg.........................................................22 3. getOffers..................................................................................................................22 3.1 Beschreibung der XML Elemente und Attribute der Antwort............................25 offers.offer...........................................................................................................25 offers.offer.sku.....................................................................................................25 offers.offer.revision..............................................................................................25 4. Notes.......................................................................................................................26 Version 1.7..............................................................................................................28 Version 1.6..............................................................................................................28 Version 1.5..............................................................................................................28 Version 1.4..............................................................................................................28 Version 1.3..............................................................................................................29 Version 1.2..............................................................................................................29 Version 1.1..............................................................................................................29 2 / 29 1. Allgemeines idealo stellt Ihnen zwei Webservices zur Verfügung, mit denen Sie die Daten Ihrer Angebote in Echtzeit aktualisieren (updateOffers), sowie Ihre aktuell an idealo übermittelten Angebote abrufen können (getOffers). Für die Nutzung der Webservices müssen Sie von idealo freigeschaltet werden. Hierfür wenden Sie sich bitte an [email protected] Die Webservices können über HTTPS mit verschiedenen Programmiersprachen benutzt werden. Eine beispielhafte Implementierung für Perl und PHP finden Sie im folgenden Abschnitt. Implementierungen in anderen Programmiersprachen sind ebenfalls einfach zu realisieren. Eine Liste der Änderungen gegenüber der letzten API-Version finden Sie am Ende dieses Dokuments. 2. updateOffers Zur Aktualisierung Ihrer Angebote wird an den Webservice ein HTTP-Request mit POST-Daten im XML-Format gesendet. Dieses XML beinhaltet eine Liste von Angeboten. Jedem dieser Angebote kann ein Kommando zum Hinzufügen, Ändern oder Löschen mitgegeben werden. Sobald der Webservice antwortet und für das Angebot der Status OK zurückgeliefert wurde, ist die Änderung erfolgreich an idealo übermittelt worden. Wird hingegen der Status FAILED zurückgeliefert, konnte das Angebot nicht korrekt verarbeitet werden. Die Rückgabe des Status OK bedeutet allerdings nicht, dass die Änderung(en) sofort auf idealo sichtbar werden. Dies geschieht in Abhängigkeit des Kommandos ggf. erst nach weiteren Bearbeitungsschritten durch das System. Als Zeitpunkt der letzten Aktualisierung wird immer der Zeitpunkt der letzten erfolgreichen Webserviceanfrage angegeben, sofern beim Webservice-Aufruf nichts anderes angegeben wurde. Dies bedeutet, dass idealo davon ausgeht, dass mit dem letzten Request alle Änderungen im Shop an idealo übergeben wurden. Bei allen Angeboten Ihres Shops wird dann auf idealo der Zeitstempel dieses letzten Requests angezeigt. Bitte stellen Sie deshalb sicher, dass Sie uns stets alle Änderungen übermitteln. Übermitteln Sie uns 3 Tage lang keine Requests, werden Ihre Angebote automatisch auf idealo deaktiviert. updateOffers wird über HTTPS aufgerufen: https://partner.idealo.de/partnerWs/v1/updateOffers Zur Authentifizierung muss Basic-Authentication verwendet werden. Hierfür benötigen Sie einen Benutzernamen und ein Passwort. Darüber hinaus müssen Sie die Ihnen von idealo vergebene sogenannte shopId als Header-Attribut übermitteln. Wichtiges zum Thema Encoding: Bitte geben Sie, wenn Sie einen Request stellen, unbedingt das Encoding im entsprechenden Header-Feld an. Beispielsweise: Content-Type: application/xml; charset=utf-8 Sie können hier unterschiedliche Encodings angeben (z.B. UTF-8, ISO-8859-1, ISO-8859-15). Das Encoding muss dem Encoding des XMLs entsprechen. Wie empfehlen Ihnen UTF-8 zu verwenden (siehe auch Programmierbeispiele auf den folgenden Seiten). 3 / 29 2.1. Beispiele Beispielimplementation (PHP) $url = "https://partner.idealo.de/partnerWs/v1/updateOffers"; $xml = '<?xml version="1.0" encoding="UTF-8"?><offers> ... </offers>'; $header = array( 'shopId: 12345', 'Content-Type: application/xml; charset=utf-8', 'Expect:'.'' ); $process = curl_init($url); curl_setopt($process, CURLOPT_HTTPHEADER, $header); curl_setopt($process, CURLOPT_USERPWD, '[email protected]:geheimesPasswort'); curl_setopt($process, CURLOPT_TIMEOUT, 30); curl_setopt($process, CURLOPT_POST, TRUE); curl_setopt($process, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($process, CURLOPT_POSTFIELDS, $xml); curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE); $return = curl_exec($process); print_r($return); 4 / 29 Beispielimplementation (Perl) #!/usr/bin/env perl use strict; use warnings; use LWP::UserAgent; use LWP::Protocol::https; use HTTP::Request; my $user = '[email protected]'; my $pass = 'geheimesPasswort'; my $shop = '12345'; my $method = 'POST'; my $url = 'https://partner.idealo.de/partnerWs/v1/updateOffers'; my $response = make_request(); process_response($response); sub make_request { my $ua = get_user_agent(); my $request = get_request(); return $ua->request($request); } sub get_user_agent { my $ua = LWP::UserAgent->new; $ua->agent( 'Idealo Partner WebService Client / libwww-perl' ); return $ua; } sub get_request { my $request = HTTP::Request->new( $method => $url ); $request->authorization_basic($user, $pass); $request->header('Content-Type' => 'application/xml; charset=utf-8'); $request->header('shopId' => $shop); $request->content('<?xml version="1.0" encoding="UTF-8"?><offers> ... </offers>'); return $request; } sub process_response { my ($response) = @_; if ($response->is_success()) { print $response->decoded_content . "\n"; } else { print "Unsuccessful: " . $response->status_line . "\n"; 5 / 29 } return 1; } Beispiel (Anfrage) XML mit Angebotsdaten Der Body der Anfrage enthält XML-Elemente mit bis zu 100 Angeboten und/oder einen Zeitstempel zum Setzen des Aktualisierungszeitpunkts. <?xml version="1.0" encoding="UTF-8"?> <offers> <offer> <command>UPDATE</command> <sku>ABC123</sku> <price context="DE">22.99</price> </offer> <offer> <command>INSERT</command> <sku>ABC234</sku> <title>Casio Exilim 50D</title> <url context="DE">http://www.shop.de/ABC234.html</url> <delivery>1-2 Tage</delivery> <price>225.99</price> <image>htp://www.shop.de/angebotsbildABC123.png</image> <shipping context="DE" type="CREDITCARD">2.99</shipping> <shipping context="DE" type="COD">5.99</shipping> <shippingComment>Abholung möglich</shippingComment> <category><![CDATA[Unterhaltungselektronik > Digitalkameras]]></category> <brand>Casio</brand> <ean>247395875646</ean> <description>Digitalkamera mit 8 Megapixel</description> </offer> <offer> <command>DELETE</command> <sku>ABC567</sku> </offer> </offers> 6 / 29 2.2. Beschreibung der XML Elemente und Attribute der Anfrage Die erlaubten XML-Elemente werden im Folgenden beschrieben: offers.offer erlaubte Werte Beschreibung Beispiel (optional) XML-Element, kann mehrfach enthalten sein Beinhaltet die Daten für ein Angebot - offers.updateTimestamp erlaubte Werte (optional) Zeitstempel Beschreibung setzt den im Preisvergleich angezeigten Zeitpunkt „letzte Aktualisierung“ nach erfolgtem Import der Angebote auf den übergebenen Zeitpunkt. Wird kein Zeitstempel übergeben, so wird der Zeitpunkt des Webserviceaufrufs angenommen. Beispiel 2015-02-06T12:44:22 offers.testMode erlaubte Werte (optional) Boolean (true/false) Beschreibung falls gesetzt (true), wird die Anfrage nur auf Gültigkeit geprüft, aber nicht tatsächlich ausgeführt. Beispiel false offers.offer.command erlaubte Werte Insert, Update, Replace, Delete, InsertOrReplace Beschreibung bestimmt, welche Aktion mit dem Angebot durchgeführt wird Beispiel Delete Werte: Insert Update Replace InsertOrReplace Delete Ein neues Angebot wird mit den Daten aus der Anfrage erzeugt. Falls die SKU bereits vergeben ist, wird eine Fehlermeldung zurückgeliefert. Aktualisiert bei dem Angebot mit der übergebenen SKU alle ebenfalls übergebenen Angebotseigenschaften. Nicht übergebene Eigenschaften bleiben unverändert. Mit Update können derzeit keine Angebote komplett gelöscht werden, hierzu ist Replace notwendig. Ersetzt das Angebot mit der übergebenen SKU durch ein neues Angebot mit den Daten im XML. Falls noch kein Angebot mit der SKU existiert, wird eine Fehlermeldung zurückgeliefert. Ersetzt das Angebot mit der übergebenen SKU durch ein neues Angebot mit den Daten im XML. Falls noch kein Angebot mit der SKU existiert, wird ein neues Angebot mit den übergebenen Daten erzeugt Löscht das Angebot mit der übergebenen SKU. 7 / 29 offers.offer.sku erlaubte Werte Zeichenkette bestehend aus Buchstaben und Zahlen, max. 20 Zeichen * Verwenden Sie nur die Zeichen a-z, A-Z, 0-9. Beschreibung eindeutiger Bezeichner eines Angebots, welcher von Ihnen frei gewählt werden kann Beispiel AB1234 offers.offer.revision erlaubte Werte (optional) Zeichenkette bestehend aus Buchstaben und Zahlen, max. 20 Zeichen Beschreibung eindeutiger Bezeichner der Version des Angebots, welcher von Ihnen frei gewählt werden kann. Beispiel 20100701ab1255 offers.offer.title erlaubte Werte Zeichenkette, max. 150 Zeichen Beschreibung Bezeichnung des Angebots, wird im Preisvergleich angezeigt. * Beachten Sie: Zeichen wie "<" und "&" sind nicht valide in XML Elementen. Falls Sie sie unbedingt benötigen, umschließen Sie sie mit CDATA. (siehe Beispiel 2). Beispiel 1 Nintendo Wii (schwarz) Beispiel 2 <![CDATA[Nintendo Wii (schwarz & weiß)]]> offers.offer.productTitle erlaubte Werte (optional) Zeichenkette, max. 150 Zeichen Beschreibung Hier kann eine für die automatische Produktzuordnung optimierte Produktbezeichnung übergeben werden. Diese enthält optimalerweise nur eine reduzierte Bezeichnung des Shopangebots ohne Zusätze wie Grundpreise, techn. Daten, Zertifikate, Hinweise auf Shopaktionen oder Garantieangaben, welche die Produktzuordnung erschweren würden. Der Inhalt dieses Feldes wird nicht im Preisvergleich angezeigt. Falls Ihre Angebotstitel keine zusätzlichen Informationen enthalten, muss die Information nicht übergeben werden. * Beachten Sie: Zeichen wie "<" und "&" sind nicht valide in XML Elementen. Falls Sie sie unbedingt benötigen, umschließen Sie sie mit CDATA. (siehe Beispiel 2). Beispiel 1 Nintendo Wii (schwarz) Beispiel 2 <![CDATA[Nintendo Wii (schwarz & weiß)]]> 8 / 29 offers.offer.url erlaubte Werte Zeichenkette, max. 1000 Zeichen Beschreibung URL zur Angebotsseite im Shop Beispiel http://www.redcoon.de/index.php/cmd/shop/a/ProductDetail/pid/B17038 8/cid/20018/refId/idealo/ Attribute context (optional) offers.offer.delivery erlaubte Werte Zeichenkette, max. 50 Zeichen Beschreibung Lieferzeit des Angebots Beispiel Sofort lieferbar Attribute context (optional) offers.offer.price erlaubte Werte positiver Zahlenwert Beschreibung Preis des Angebots in Euro Beispiel 189.00 Attribute context (optional) offers.offer.basePrice erlaubte Werte (optional) positiver Zahlenwert Beschreibung Grundpreis Beispiel <basePrice measure=“100“ unit=“ml“>0.99</basePrice> bedeutet: 0.99 EUR / 100ml Attribute context (optional), measure (erforderlich), unit (erforderlich) offers.offer.listPrice erlaubte Werte (optional) positiver Zahlenwert Beschreibung Listenpreis für ein Produkt Beispiel <listPrice context="DE">5.99</listPrice> Attribute context (optional) 9 / 29 offers.offer.attributes erlaubte Werte name: Zeichenkette, max. 100 Zeichen, nur Buchstaben, Zahlen und „-“ erlaubt. value: Zeichenkette, max. 250 Zeichen Beschreibung Attribute für ein Produkt * Beachten Sie: Zeichen wie "<" und "&" sind nicht valide in XML Elementen. Falls Sie sie unbedingt benötigen, umschließen Sie sie mit CDATA. (siehe Beispiel 2). Beispiel 1 <attributes> <attribute name=“SIZE“> <value>XL</value> </attribute> <attribute name="COLOR"> <value>rot</value> <value>blau</value> </attribute> </attributes> Beispiel 2 <attributes> <attribute name="BRAND"> <value><![CDATA[Bang & Olufsen]]></value> </attribute> </attributes> Attribute name (erforderlich) offers.offer.image erlaubte Werte (optional) Zeichenkette, max. 250 Zeichen Beschreibung URL zum Angebotsbild im Shop Beispiel http://ecx.images-amazon.com/images/I/41I0uyRkd2L._AA280_.jpg Attribute context (optional) offers.offer.shipping erlaubte Werte (optional) Zahlenwert, nicht negativ Beschreibung Versandkosten für die angegebene Zahlungs-/Versandart Beispiel 2.90 Attribute context (optional), type (erforderlich) 10 / 29 offers.offer.shippingComment erlaubte Werte (optional) Zeichenkette, max. 100 Zeichen Beschreibung Beschreibung: Kommentar zum Artikelversand oder zu Zahlungsweisen * Beachten Sie: Zeichen wie "<" und "&" sind nicht valide in XML Elementen. Falls Sie sie unbedingt benötigen, umschließen Sie sie mit CDATA. (siehe Beispiel 2). Beispiel 1 Abholung in 10119 Berlin möglich Beispiel 2 <![CDATA[Abholung in Berlin & Brandenburg möglich]]> Attribute context (optional) offers.offer.category erlaubte Werte Zeichenkette, max. 250 Zeichen Beschreibung frei wählbare Kategoriebezeichnung, welche die Produktgruppe beschreibt. Hier möglichst keine Hersteller-und Modellbezeichnungen verwenden. * Beachten Sie: Zeichen wie "<" und "&" sind nicht valide in XML Elementen. Falls Sie sie unbedingt benötigen, umschließen Sie sie mit CDATA. (siehe Beispiel 2). Beispiel 2 Spiele | Sony | Playstation 3 Beispiel 2 <![CDATA[MP3-Downlo ads > MP3-Alben > Schlager & Volksmusik]]> offers.offer.brand erlaubte Werte (optional) Zeichenkette, max. 50 Zeichen Beschreibung Hersteller des Produktes, verbessert die Zuordnung zum Produktkatalog * Beachten Sie: Zeichen wie "<" und "&" sind nicht valide in XML Elementen. Falls Sie sie unbedingt benötigen, umschließen Sie sie mit CDATA. (siehe Beispiel 2). Beispiel 1 Canon Beispiel 2 <![CDATA[Bang & Olufsen]]> offers.offer.oen erlaubte Werte Beschreibung (optional) Zahlenwert Original Ersatzteil Nummer besteht aus dem Herstellerkürzel und dem Identifier-Code mit Komma getrennt Beispiel <oen> <oenValues>VW,123 615 301</oenValues> <oenValues>XY,123 456 789</oenValues> </oen> offers.offer.kba 11 / 29 erlaubte Werte (optional) Zahlenwert Beschreibung Kraftfahrt-Bundesamt Nummer besteht aus den 4 Ziffern der Herstellerschluesselnummer (HSN) und den ersten 3 Zeichen der Typschluesselnummer (TSN) Beispiel <kba> <kbaValues>0600ABC</kbaValues> <kbaValues>0600920</kbaValues> <kbaValues>0600AH7</kbaValues> </kba> offers.offer.formerPrices erlaubte Werte (optional) Zeichenkette Beschreibung Sogenannte Streichpreise sind ehemalige Verkaufspreise. Wird benutzt, um die Differenz zum aktuellen Verkaufspreis darzustellen. Beispiel <formerPrices> <formerPrice context=“DE“>4.99</formerPrice> <formerPrice context=“FR“>5.19</formerPrice> </formerPrices> Attribute offers.offer.deposits erlaubte Werte Beschreibung context (optional) (optional) Zeichenkette Pfandwert, Dezimalzahl, gerundet auf 2 Nachkommastellen Beispiel <deposits> <deposit context=“DE“>4.99</deposit> <deposit context=“FR“>5.19</deposit> </deposits> Attribute context (optional) offers.offer.ean erlaubte Werte (optional) Zahlenwert Beschreibung EAN/GTIN des Angebots, verbessert die Zuordnung zum Produktkatalog ISBN-Nummern können ebenfalls hier übergeben werden Beispiel 45496342067 12 / 29 offers.offer.han erlaubte Werte (optional) Zeichenkette, max. 50 Zeichen Beschreibung Von Hersteller vergebene Artikelnummer, verbessert die Zuordnung zum Produktkatalog Beispiel DMC-TZ10EB-K offers.offer.pzn erlaubte Werte (optional) Zahlenwert Beschreibung PZN des Angebots (nur bei Apothekenangeboten), verbessert die Zuordnung zum Produktkatalog Beispiel 458532 offers.offer.description erlaubte Werte (optional) Zeichenkette, max. 1000 Zeichen Beschreibung Beschreibung des Angebots, verbessert die Zuordnung zum Produktkatalog und wird im Preisvergleich angezeigt * Beachten Sie: Zeichen wie "<" und "&" sind nicht valide in XML Elementen. Falls Sie sie unbedingt benötigen, umschließen Sie sie mit CDATA. (siehe Beispiel 2). Beispiel 1 Digital Foto DMC TZ 10 Digitalkamera mit 12.1 Mio. Pixeln Optischer Zoom 23,4 facher Optischer Bildstabilisator Beispiel 2 <![CDATA[Bang & Olufsen Kopfhörer A8 (schwarz)]]> offers.offer.merchant erlaubte Werte (optional) Zeichenkette Beschreibung Name des Verkäufers (bei Wiederverkäufern oder Marktplatzhändlern) Beispiel Attribute <merchant id=“0001“>megaSeller</merchant> id (optional) offers.offer.used erlaubte Werte (optional) Boolean (true/false) Beschreibung Markiert Angebote, welche nicht neu sind (z.B. Retouren, Vorführprodukte, geöffnete Verpackung, ...) Beispiel true 13 / 29 offers.offer.rebuild erlaubte Werte (optional) Boolean (true/false) Beschreibung Markiert Angebote, welche ein Nachbau von Produkten anderer Hersteller sind. Die Markierung ist notwendig, wenn das Originalprodukt im Angebotstitel vorkommt (z.B. "Qualitätsakku kompatibel zu Canon HK-2222") Beispiel true offers.offer.contract erlaubte Werte (optional) Boolean (true/false) Beschreibung Markiert Angebote, welche nur durch Abschluss eines Vertrages erworben werden können (z.B. Handys) Beispiel true offers.offer.downloadable erlaubte Werte (optional) Boolean (true/false) Beschreibung Markiert Angebote, welche nur per Download erworben werden können (z.B. Computerspiele) Beispiel true offers.offer.expireDate erlaubte Werte (optional) Zeitstempel Beschreibung bestimmt ein Ablaufdatum für ein Angebot. Sobald das Datum erreicht ist, wird das Angebot ausgeblendet. Beispiel 2010-04-23T15:41:21 offers.offer.voucherCode erlaubte Werte (optional) Zeichenkette, max. 200 Zeichen Beschreibung GutscheinCode mit Beschreibung. Bitte unbedingt die Struktur des Beispiels einhalten → CODE (Beschreibung) Beispiel AKTION2013 (10 % Rabatt ab 200 EUR Einkaufswert / gültig bis 31.12.2011). Attribute context (optional) 14 / 29 offers.offer.eCommerce erlaubte Elemente offers.offer.eCommerce.checkoutApproved, offers.offer.eCommerce.checkoutLimitPerPeriod, offers.offer.eCommerce.fulfillmenttype, offers.offer.eCommerce.fulfillmentOptions Beschreibung Wenn Sie Angebote über den idealo-Direktkauf vertreiben wollen, können Sie Ihre Bedingungen übermitteln. Bitte beachten Sie: zur Zeit (Stand März 2016) ist der Direktkauf nur auf idealo.de verfügbar. Beispiel <eCommerce> <checkoutApproved>true</checkoutApproved> <checkoutApproved context="FR">true</checkoutApproved> <checkoutLimitPerPeriod context="DE">1</checkoutLimitPerPeriod> <checkoutLimitPerPeriod context="FR">11</checkoutLimitPerPeriod> <fulfillmenttype context="DE">Spedition</fulfillmenttype> <fulfillmentOptions context="DE"> <disposal price="15" /> <twoManHandling price="49.9" /> </fulfillmentOptions> <fulfillmentOptions context="FR"> <twoManHandling price="49.9" /> </fulfillmentOptions> <fulfillmentOptions context="AT"> <twoManHandling price="49.9" /> <disposal price="15" /> </fulfillmentOptions> <fulfillmenttype context="FR">Paketdienst</fulfillmenttype> <checkoutApproved context="AT">false</checkoutApproved> </eCommerce> true optional offers.offer.eCommerce.checkoutApproved erlaubte Werte Boolean (true/false) Beschreibung Hiermit geben Sie ein Angebot im Feed für den Direktkauf frei. Nur für Angebote, die über dieses Datenfeld freigegeben werden, kann im idealo Direktkauf ein Kaufvorgang gestartet werden. Lassen Sie dieses Datenfeld weg, gilt das Angebot als nicht freigegeben. Beispiel <checkoutApproved context="FR">true</checkoutApproved> Attribute context (optional) optional true Offers.offer.eCommerce.checkoutLimit erlaubte Werte Positive ganze Zahl Beschreibung Hier können Sie idealo den Lagerbestand des Angebots angeben. Dies 15 / 29 Beispiel Attribute optional ist insbesondere bei begrenzten Sonderangeboten sinnvoll oder wenn sie eine größere Stückzahl eines Artikels in einem Checkout-Vorgang verkaufen wollen. Bei gesetztem Wert stellt idealo sicher, dass nicht mehr Angebote verkauft werden, als Sie verfügbar haben. Ohne diese Angabe bleibt das Angebot im Direktkauf verfügbar, bis das Angebot entweder gelöscht wird oder über "checkoutApproved" die Freigabe für den Direktkauf zurückgezogen wird. idealo empfiehlt im Kunden- und Händlerinteresse, dieses Feld bei allen Angeboten zu setzen. <checkoutLimitPerPeriod context="FR">11</checkoutLimitPerPeriod> context (optional) true Offers.offer.eCommerce.fulfillmenttype erlaubte Werte Zeichenkette Beschreibung Geben Sie als Lieferart "Spedition" an, wird beim Verkauf der entsprechenden Artikel die Telefonnummer des Käufers zur Abstimmung eines Liefertermins mit dem beauftragten Speditionsunternehmen erfragt. Nur für Artikel mit der Lieferart "Spedition" können die im folgenden genannten Zusatzoptionen im idealo Direktkauf angeboten werden. Lassen Sie dieses Datenfeld weg, wird als Lieferart "Paketdienst" angenommen. Beispiel <fulfillmenttype context="DE">spedition</fulfillmenttype> Attribute context (optional) optional true Offers.offer.eCommerce.fulfillmentOptions erlaubte Elemente offers.offer.eCommerce.fulfillmentOptions.twoManHandling, offers.offer.eCommerce.fulfillmentOptions.disposal Beschreibung Kosten für zusätzliche Optionen bei Speditionsware Beispiel <fulfillmentOptions context="AT"> <twoManHandling price="49.9" /> <disposal price="15" /> </fulfillmentOptions> Attribute context (optional) optional true Offers.offer.eCommerce.fulfillmentOptions.twoManHandling erlaubte Werte Beschreibung Für Artikel mit der Lieferart "Spedition" kann im idealo Direktkauf vom Käufer die zusätzliche Dienstleistung "Zwei-Mann-Lieferung bis zu Aufstellort" bestellt werden. Für Angebote, bei denen Sie die Zwei-MannLieferung anbieten wollen, geben Sie mit diesem Datenfeld den Preis incl. MwSt. an, der zusätzlich zum Artikelpreis und den Grundkosten für die Speditionslieferung erhoben werden soll. Lassen Sie dieses Datenfeld weg, wird die Dienstleistung "Zwei-Mann-Lieferung" im Checkout des idealo Direktkauf nicht angeboten. Beispiel <twoManHandling price="49.9" /> Attribute price (Preis in EUR) optional false 16 / 29 Offers.offer.eCommerce.fulfillmentOptions.disposal erlaubte Werte Beschreibung Für Artikel mit der Lieferart "Spedition" kann im idealo Direktkauf vom Käufer die zusätzliche Dienstleistung "Altegeräteabholung" bestellt werden. Für Angebote, bei denen Sie die Altgeräteabholung anbieten wollen, geben Sie mit diesem Datenfeld den Preis incl. MwSt. an, der zusätzlich zum Artikelpreis, den Grundkosten für die Speditionslieferung und den Kosten für die Zwei-Mann-Lieferung erhoben werden soll. Lassen Sie dieses Datenfeld weg, wird die Dienstleistung "Altgeräteabholung" im Checkout des idealo Direktkauf nicht angeboten. Die Altgeräteabholung kann nur in Kombination mit der Zwei-MannLieferung angeboten werden. Beispiel <disposal price="15" /> Attribute price (Preis in EUR) optional true 17 / 29 2.3. Attribute der Angebotselemente: context (verschiedene Angebotselemente) erlaubte Werte DE, AT, UK, FR, IT, ES, PL, IN Beschreibung schränkt den Gültigkeitsbereich einer Information ein (z.B. Versandkosten, Lieferzeit), falls ihr Shop auf mehr als einem Land bei idealo freigeschaltet ist. Informationen ohne optionales context-Attribut sind für alle Länder gültig. Beispiel DE Werte: DE Deutschland (idealo.de) AT Österreich (idealo.at) UK England (idealo.co.uk) FR Frankreich (idealo.fr) IT Italien (idealo.it) ES Spanien (idealo.es) PL Polen (idealo.pl) IN Indien (idealo.in) type (Angebotselement shipping) erlaubte Werte PREPAID, COD, DIRECTDEBIT, PAYPAL, INVOICE, CREDITCARD, SOFORTUEBERWEISUNG, GIROPAY, MONEYBOOKERS, CLICKANDBUY, PAYSAFECARD, GOOGLECHECKOUT, POSTALORDER, EPS, ICLEAR Beschreibung bestimmt, für welche Zahlungs-/Versandart der übergebene Preis gültig ist. Eine Kombination mit dem context-Attribut ist möglich. Beispiel CREDITCARD Werte: PREPAID Vorkasse / Vorabüberweisung COD Zahlung bei Lieferung (Nachnahme) DIRECTDEBIT Lastschrift / Bankeinzug PAYPAL Paypal INVOICE Zahlung nach Erhalt einer Rechnung CREDITCARD Kreditkarte (direkt, nicht über PayPal o.ä.) SOFORTUEBERWEIS UNG Sofortüberweisung GIROPAY http://www.giropay.de/ MONEYBOOKERS http://www.moneybookers.com/app/ CLICKANDBUY http://www.clickandbuy.com/DE_de/bezahlen/ PAYSAFECARD http://www.paysafecard.com/de/ 18 / 29 GOOGLECHECKOUT http://checkout.google.com/support/?hl=de POSTALORDER Postüberweisung EPS e-payment standard (Österreich) ICLEAR https://www.iclear.de/ 19 / 29 2.4. Die Antwort des updateOffers - Webservice Das Aktualisieren Ihrer Angebotsdaten per updateOffers wird mittels XML quittiert. Anhand der XMLANTWORT lässt sich für jedes Angebot das Ergebnis der Verarbeitung bei idealo auswerten. Bitte beachten Sie, dass der Webservice erst nach der Verarbeitung der Angebote bei idealo antwortet. Dies hängt unter anderem davon ab, wie viel Angebote in der Anfrage enthalten waren. Wir empfehlen in Ihrer Applikation einen Timeout von 2 Sekunden pro Angebot einzuplanen. Beispiel (Antwort): <?xml version="1.0" encoding="UTF-8"?> <offerResponses> <offerResponse> <id>357985368</id> <sku>ABC123</sku> <status>OK</status> <statusMsg/> </offerResponse> <offerResponse> <id>3579898369</id> <sku>ABC234</sku> <status>FAILED</status> <statusMsg>Invalid Content for Attribute: image</statusMsg> </offerResponse> <offerResponse> <id>35798983610</id> <sku>ABC2345</sku> <status>IGNORED</status> <statusMsg>There is nothing to update</statusMsg> </offerResponse> <offerResponse> <id>35798983611</id> <sku>ABC23456</sku> <status>IGNORED</status> <statusMsg>Failed to deactivate Offer with sku 17450651. No offer with given sku found. </statusMsg> </offerResponse> <offerResponse> <id>35798983612</id> <sku>ABC23457</sku> <status>FILTERED</status> <statusMsg>FILTERED</statusMsg> </offerResponse> </offerResponses> Erläuterung der Antwort-XML: 20 / 29 Das erste Angebot ist erfolgreich verarbeitet worden. Das zweite Angebot schlug fehl wegen ungültiger Bild-Url (image-url). Das dritte Angebot wurde ignoriert, da alle Daten bereits aktuell waren. Das vierte Angebot konnte nicht gelöscht werden, da es gar nicht existierte (deshalb IGNORED). Das fünfte Angebot wurde gefiltert, weil beispielsweise der Verkäufer auf idealo gesperrt ist. 2.5. Beschreibung der XML Elemente und Attribute der Antwort offerResponses.error Beschreibung Generelle Fehler, die den ganzen Request betreffen. Attributes message: Eine kurze Beschreibung des Fehlers. code: Request error code z.b. 400, 403, 404, 500,511,512 Beispiel <error> <message>UpdateTimestamp is older than 10 days.</message> <code>512</code> </error> offerResponses.offerResponse.id Beschreibung ID von dem Angebot. Beispiel 1037481673 offerResponses.offerResponse.sku Beschreibung SKU von dem Angebot, wie vom Shop geliefert. Beispiel 198430791 offerResponses.offerResponse.status Beschreibung Ergebnis des Verarbeitens durch den WebService. Beispiel OK Werte: OK Alles okay. IGNORED Request wäre nicht notwendig gewesen. Dies kann vorkommen falls: versucht wird, etwas zu löschen, was bei idealo bereits gelöscht ist. die Angebotsdaten bereits genauso bei idealo vorhanden sind. das Angebot innerhalb derselben Anfrage mehrfach vorhanden ist. FILTERED Angebot wurde gefiltert, also gelöscht. Dies kann folgende Ursachen haben: Das Angebot enthält Wörter oder Begriffe, die aus rechtlichen oder idealo-internen Gründen gesperrt sind. 21 / 29 FAILED Bei Marktplatz Shops ist der Verkäufer gesperrt. Fehler liegt vor. Entweder stimmt etwas mit dem geschickten XML nicht, oder es liegt ein internes Problem vor. offerResponses.offerResponse.statusMsg Beschreibung Eine kurze Beschreibung des Fehlers. A brief command execution status message. Beispiel 1 There is nothing to update (IGNORED) Beispiel 2 Failed to deactivate Offer with sku XXXXXXX. No offer with given sku found. (IGNORED) Beispiel 3 Offer with sku: XXXXX. When using command Insert or Replace a title is necessary! (FAILED) 3. getOffers Mit dem Webservice getOffers sind Sie in der Lage, Ihre derzeit an uns übermittelten Angebote abzufragen. Falls Sie die Verwendung des updateOffers Webservices vorübergehend ausgesetzt haben oder hierbei Probleme aufgetreten sind, können Sie mit geringem Aufwand die Angebotsliste in Ihrer Datenbank mit der bei uns hinterlegten Angebotsliste vergleichen und Änderungen ggf. nachreichen. getOffers wird über HTTPS aufgerufen: https://partner.idealo.de/partnerWs/v1/getOffers?pageNumber=1&pageSize=10 Zur Authentifizierung muss Basic-Authentication verwendet werden. Hierfür benötigen Sie einen Benutzernamen und ein Passwort. Darüber hinaus müssen Sie die Ihnen von idealo vergebene sogenannte shopId als Header-Attribut übermitteln. Bitte beachten Sie, dass es einige Zeit dauern kann bis der Webservice antwortet. Dies kann vorkommen, wenn Sie als pageSize-Parameter beispielsweise 10000 gewählt haben. Anfrage-Parameter: pageSize (Get-Parameter) Anzahl der Angebote, welche pro Aufruf zurückgeliefert werden sollen. Es werden maximal 10000 Angebote pro Aufruf zurückgeliefert. Größere Werte für den pageSize-Parameter sind nicht zulässig. PageNumber (Get-Parameter) 22 / 29 Falls auf Grund Ihrer Angebotsanzahl nicht alle Angebote innerhalb einer Anfrage zurückgeliefert werden können, können Sie hiermit die Seite angeben, die zurückgeliefert werden soll. Erlaubt sind Zahlenwerte >= 1. Beispiel (Anfrage) https://partner.idealo.de/partnerWs/v1/getOffers?pageNumber=1&pageSize=4 23 / 29 Beispiel (Antwort): <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <offers> <offer> <sku>ABC123</sku> </offer> <offer> <sku>ABC234</sku> <revision>2010-09-02 11:59:59.808</revision> </offer> <offer> <sku>ABC235</sku> <revision>2010-09-06 23:39:12.514</revision> </offer> <offer> <sku>ABC444</sku> <revision>2010-09-07 04:51:11.203</revision> </offer> </offers> 24 / 29 3.1 Beschreibung der XML Elemente und Attribute der Antwort offers.offer erlaubte Werte (optional) XML-Element, kann mehrfach enthalten sein Beschreibung Beinhaltet die Daten für ein Angebot Beispiel - offers.offer.sku erlaubte Werte Zeichenkette bestehend aus Buchstaben und Zahlen, max. 20 Zeichen * Verwenden Sie nur die Zeichen a-z, A-Z, 0-9. Beschreibung eindeutiger Bezeichner eines Angebots, welcher von Ihnen frei gewählt werden kann Beispiel AB1234 offers.offer.revision erlaubte Werte (optional) Zeichenkette bestehend aus Buchstaben und Zahlen, max. 20 Zeichen Beschreibung eindeutiger Bezeichner der Version des Angebots, welcher von Ihnen frei gewählt werden kann. Beispiel 20100701ab1255 25 / 29 4. Notes Falls das Zeitfenster, in dem ein Angebot aktualisiert wird, sehr klein ist (z.B. mehrere Updates desselben Angebots innerhalb weniger Sekunden), können wir nicht die Einhaltung der Reihenfolge gewährleisten, in welcher die Aktualisierungen vorgenommen werden. Dies könnte dazu führen, dass nicht der gewünschte Datensatz angezeigt wird. Wenn Sie uns Requests in sehr kurzen Zeitabständen übermitteln (mehrere Requests innerhalb weniger Sekunden), können wir nicht gewährleisten, dass die Angebote, welche uns in dem jew. Request übermittelt wurden, auch in der ursprünglichen Reihenfolge ins System übernommen werden. Dies könnte zu unerwarteten Ergebnissen führen, insbesondere, wenn in den verschiedenen Requests die gleichen Angebote enthalten sind. 26 / 29 5. FAQ Q: In der XML-Antwort taucht für Angebot X der Status „IGNORED“ auf. Was bedeutet das? A: Das Angebot war bereits aktuell bei idealo (die gesendeten Angebotsdaten enthielten keine Änderungen). In einer Anfrage war ein und dasselbe Angebot mehrfach vorhanden. (In diesem Fall wird das erste Offer einlesen und für weitere identische SKUs ein IGNORED in die Response geschrieben.) In einer Anfrage war ein und dasselbe Angebot mehrfach vorhanden und die Daten (z. B. Preis) sind unterschiedlich. In diesem Fall wird für alle identischen SKUs mit einem IGNORED geantwortet, da unklar ist, welche SKU die aktuellsten Daten enthält. Bitte achten Sie deshalb darauf, dass Sie uns in einer Anfrage jedes Angebot nur einmal übermitteln. Q: In der XML-Antwort taucht für Angebot X der Status „FILTERED“ auf. Was bedeutet das? A: Das Angebot enthält Wörter oder Begriffe, die aus rechtlichen oder idealo-internen Gründen gesperrt sind. Bei Marktplatz-Shops ist der Verkäufer gesperrt. Q: Ich bekomme als Antwort keine XML-Antwort sondern den HTML-Status 403 (Forbidden). A: Die Authentifizierung ist fehlgeschlagen. Überprüfen sie Username und Passwort oder wenden Sie sich an [email protected]. Q: Ich bekomme als Antwort keine XML-Antwort sondern den HTML-Status 400 (Bad Request). A: Die Anfrage war fehlerhaft. Meist durch invalides XML. Q: Ich bekomme als Antwort keine XML-Antwort sondern den HTML-Status 503 (Service Unavailable). A: Der Server ist im Moment überlastet oder es gibt ein idealo-internes Problem. Bitte versuchen Sie es später noch einmal. Q: Werden Angebote, die im testMode verschickt werden, bei idealo gespeichert oder angezeigt? A: Nein. Der testMode dient nur dazu, die Erreichbarkeit des Webservice und die syntaktische Korrektheit der Anfrage zu überprüfen. Q: Der Webservice antwortet nicht oder der Webservice braucht sehr lange bis er antwortet. A: Bitte beachten Sie, dass es einige Zeit dauern kann bis der Webservice antwortet. Dies hängt unter anderem davon ab, wie viele Angebote in der Anfrage enthalten waren. Wir empfehlen in Ihrer Applikation einen Timeout von 2 Sekunden pro Angebot einzuplanen. 27 / 29 6. Changelog / Änderungen Version 1.7 - offers.offer.expireDate Format wurde geändert - offer.updateTimestamp Format wurde geändert - Brand Beispiel in offers.offer.attributes Beispiel ersetzt - context erweitert um Kontexte für weitere Länder - Erläuterungen zum Direktkauf wurden hinzugefügt Version 1.6 - Hinweis zum Encoding im Request-Header eingefügt. - Booleanfelder eingeschränkt auf die Werte true und false. Version 1.5 - Basic Authentifizierung wurde eingeführt und damit auch die URL geändert - Beispiele in Dokumentation wurden an die Authentifizierung angepasst - Neue Rückgabestatus IGNORED, FILTERED eingeführt - In der SKU zulässige Zeichen eingeschränkt. - Timeout: 2 Sekunden per Angebot berücksichtigen. Version 1.4 updateOffers: - offer.oen: neu hinzugefügt - offer.kba: neu hinzugefügt - offer.formerPrices: neu hinzugefügt - offer.deposits: neu hinzugefügt - offer.title: CDATA unterstützt - offer.productTitle: CDATA unterstützt - offer.attributes: CDATA unterstützt - offer.shippingComment: CDATA unterstützt - offer.category: CDATA unterstützt - offer.brand: CDATA unterstützt - offer.description: CDATA unterstützt Antwort XML neu hinzugefügt. offerResponses: - offerResponses.error: neu hinzugefügt - offerResponse.id: neu hinzugefügt - offerResponse.sku: neu hinzugefügt - offerResponse.status: neu hinzugefügt - offerResponse.statusMsg: neu hinzugefügt 28 / 29 Version 1.3 updateOffers: - offers.offer.listPrice: neu hinzugefügt - offers.offer.attributes: neu hinzugefügt Version 1.2 updateOffers: - context Italien (IT) hinzugefügt - weitere Zahlarten: SOFORTUEBERWEISUNG, GIROPAY, MONEYBOOKERS, CLICKANDBUY, PAYSAFECARD, GOOGLECHECKOUT, POSTALORDER, EPS, ICLEAR Version 1.1 updateOffers: - offers.offer.revision: neu hinzugefügt - offers.testMode: neu hinzugefügt getOffers: - Neu in Version 1.1 29 / 29