Zum Hauptteil navigieren

Speisekarten erstellen und aktualisieren

Marketplace APIs are limited access

Unsere Pipeline für Marktplatz-Integration ist derzeit ausgelastet. Wir nehmen im Moment keine neuen Partner an, sind aber dabei, Self-Service-Tools für das Onboarding von Anbietern zu entwickeln. Bitte fülle das Formular für Interessenten der Marktplatz-Integration aus, um mit DoorDash in Kontakt zu treten, bevor du deine Integration erstellst.

Das nachstehende Bild gibt einen ungefähren Überblick darüber, wie die Erstellung und Aktualisierung von Speisekarten über unsere API funktioniert.

Speisekarte

Speisekarten erstellen (Pull)

GET /{merchant_pull_menu_endpoint}/{location_id}

Im Rahmen des Integrationsworkflows müssen Partner einen Endpunkt implementieren, der es DoorDash ermöglicht, Speisekarten abzurufen (Pull). Dies ermöglicht einen optimierten Prozess beim Onboarding neuer Anbieter. Auf diese Weise kann das DoorDash-Team den Anbieter konfigurieren und gleichzeitig die entsprechende Speisekarte abrufen, anstatt sich mit unseren Partnern über die Bereitstellung der Speisekarte mittels Push-Methode abstimmen zu müssen. Die Antwort auf den Prozess zur Aufnahme der Speisekarte entspricht der Beschreibung unten für die Push-Methode. Die Antwort auf diese GET-Anfrage unterscheidet sich von deiner Push-Anfrage. Unabhängig davon, ob als Teil der Antwort mehrere Speisekarten zurückgegeben werden müssen, sollten die Speisekarten als Array enthalten sein. Ein Beispiel findest du unten.

{
"store": {
"merchant_supplied_id": "<client's store id>",
"provider_type": "<client’s DoorDash provider type>"
},
"menus": [
{...},
{...}
]
}

Hinweis: Wie die Beispielantwort oben zeigt, müssen in der Antwort auf die Anfrage zum Speisekartenabruf die Speisekarten als Array zurückgegeben werden, auch wenn es sich nur um eine Speisekarte handelt.

Von Partnern wird erwartet, dass sie entsprechende Antwortcodes zurückgeben, wenn die Anfrage zum Speisekartenabruf fehlschlägt, um die Triage zu optimieren und bei Bedarf zu eskalieren.

Sobald unser Service die Erstellung deiner Speisekarte abgeschlossen hat oder wenn die Erstellung der Speisekarte fehlschlägt, sendet der Dienst eine POST-Webhook-Anfrage mit dem Ergebnis der Speisekartenerstellung. Du musst einen Endpunkt erstellen und uns dessen URL mitteilen, um die Webhook-Benachrichtigung zu erhalten. Diese Anfrage enthält die gleiche „Referenz“ wie die Antwort auf deine ursprüngliche Anfrage, sodass du nachverfolgen kannst, welche Anfragen vollständig bearbeitet wurden. Weitere Einzelheiten zu diesem Webhook findest du im Abschnitt Receiving Menu Status Updates.

Speisekarten erstellen (Push)

POST /api/v1/menus

Die Pipeline für die Speisekarten-Erstellung von DoorDash arbeitet asynchron. Nach einer erfolgreichen Anfrage an den POST-Endpunkt erhältst du eine Antwort mit dem Statuscode 200. Dieser zeigt an, dass wir die Anfrage zur Speisekarten-Erstellung erfolgreich erhalten haben. Das Ergebnis dieser Anfrage wird dir später über einen Speisekartenstatus-Webhook zugesandt. Die Bearbeitungszeit für die Speisekarte kann je nach Länge der Warteschlange zum Zeitpunkt der Erstellung des Speisekartenauftrags variieren. Die durchschnittliche Bearbeitungszeit für Speisekarten beträgt weniger als eine Minute.

Der Haupttext der Speisekartenanfrage enthält ein reference Feld, das optional ist. Dies kann eine beliebige vom Anbieter angegebene ID sein, die auf die Anfrage zum Erstellen der Speisekarte verweist und die im Speisekartenstatus-Webhook zurückgegeben wird, um die ursprüngliche Anfrage zu identifizieren, für die der Status gilt. Wenn dies nicht der Fall ist, füllt DoorDash diese ID aus und die von DoorDash generierte ID wird über die Antwort auf den MENU POST zurückgesendet. Eine leere Zeichenfolge oder ein Nullwert wird nicht akzeptiert.

Der Haupttext der Speisekartenanfrage enthält ein Feld provider_type, das deinen Anbietertyp ohne Versionsnummer angeben sollte. Wenn dein Header beispielsweise "User-Agent": DoordashClient/1.0 lautet, dann wäre der im provider_type Feld im Haupttext des Anfrage anzugebende Wert einfach "provider_type": "doordash_client".

Sobald unser Service die Erstellung deiner Speisekarte abgeschlossen hat oder wenn die Erstellung der Speisekarte fehlschlägt, sendet der Dienst eine POST-Webhook-Anfrage mit dem Ergebnis der Speisekartenerstellung. Du musst einen Endpunkt erstellen und uns dessen URL mitteilen, um die Webhook-Benachrichtigung zu erhalten. Diese Anfrage enthält die gleiche reference wie die Antwort auf deine ursprüngliche Anfrage, sodass du nachverfolgen kannst, welche Anfragen vollständig bearbeitet wurden. Weitere Einzelheiten zu diesem Webhook findest du im Abschnitt Receiving Menu Status Updates.

Speisekarten aktualisieren (Push)

PATCH /api/v1/menus/{id}

Wenn du eine Speisekarte erstellst, erhältst du die "id": "menu-id" (UUID) in der POST-Anfrage, die vom Speisekartenstatus-Webhook von DoorDash gesendet wird. Bei der Aktualisierung einer Speisekarte solltest du die ID dieser Speisekarte in die URL-Parameter aufnehmen. Die Bearbeitungszeit für die Speisekarte kann je nach Größe der Warteschlange zum Zeitpunkt der Erstellung des Speisekartenauftrags variieren. Die durchschnittliche Bearbeitungszeit für Speisekarten beträgt weniger als eine Minute.

Die Pipeline für die Speisekarten-Aktualisierung funktioniert genauso wie die Pipeline für die Speisekarten-Erstellung. Wenn du eine Speisekarte aktualisierst, musst du die vollständige Speisekarte in deine Anfrage aufnehmen, nicht nur die Felder, die du aktualisieren möchtest. Daher ist die Datenvalidierung für den PATCH-Endpunkt identisch mit der des POST-Endpunkts, da dasselbe Modell verwendet wird. Genau wie bei POST kannst du ein reference Feld in der Payload angeben, um deine Anfrage zu identifizieren, oder dich auf die von DoorDash generierte Referenz verlassen.

Sobald wir die Aktualisierung deiner Speisekarte abgeschlossen haben oder wenn die Aktualisierung der Speisekarte fehlschlägt, sendet unser Webhook eine POST-Anfrage an den von dir angegebenen Endpunkt. Weitere Informationen findest du im folgenden Abschnitt: Receiving Menu Status Updates.

Speisekarten aktualisieren (Pull)

GET /{merchant_pull_menu_endpoint}/{location_id}[?ids=external_menu_ids]

Partner können denselben Pull-Endpunkt verwenden, um es DoorDash zu ermöglichen, Aktualisierungen der Speisekarte basierend auf einer Liste externer Speisekarten-IDs anzufordern. Dies bietet DoorDash eine gewisse Flexibilität, um sicherzustellen, dass die Speisekarten synchron sind. Die Empfehlung lautet, dass die Push-Logik auf Anbieterseite weiterhin so aufgebaut ist, dass sie bei Änderungen am POS automatisch eine Aktualisierung der Speisekarte auslöst.

Speisekarten-Antwortcodes:

StatuscodeDetails
200Erfolgreich abgeschlossen
400Fehlerhafte Anfrage
403Verboten
429Zu viele Anfragen
500Interner Serverfehler

Bei 429 kannst du es nach einer Minute erneut versuchen. Bei 500 kannst du es mit einem exponentiellen Backoff erneut versuchen. Bei 400 solltest du es nicht erneut versuchen. Es sollte eine zugehörige Fehlermeldung mit einem 400 Statuscode geben, der bei der Diagnose der Ursache des Problems hilft (Beispiel unten).

400 Bad Request: Invalid menu payload: [StoreMenu.menu.MenuCategory[IcedBeverages]: find duplicate merchant id:5757, name:Freshly Brewed Iced Coffee - Create Your Own - Custom.]

Im obigen Beispiel gibt es bereits einen Artikel mit der merchant_supplied_id 5757. Dies bedeutet, dass für einen Artikel im gleichen Bereich der Speisekarte mehrere IDs vorhanden sind. Du brauchst eindeutige merchant_supplied_ids für Artikel im gleichen Bereich der Speisekarte, um diesen Fehler zu beheben.

Maximale Länge von Speisekartenfeldern

Wenn ein Feld auf der Speisekarte die maximal erlaubte Länge überschreitet, schlägt die Speisekarte mit dem Antwortcode 400 „Fehlerhafte Anfrage“ fehl. Halte dich daher an die unten aufgeführten maximalen Feldlängen.

FeldMaximale Länge
Speisekarte
Name500
Untertitel500
merchant_supplied_id1024
Kategorie
Name500
Untertitel500
merchant_supplied_id1024
Item, ItemExtra und ItemExtraOption
Name500
Beschreibung1000
merchant_supplied_id1024

Wichtige Speisekartenfelder

  • reference: In der Antwort auf die Speisekartenabfrage erforderliches Feld. Es handelt sich um die Kennung einer Anbieter-Speisekarte, die mit der ID verknüpft wird (externe Speisekarten-ID).
  • id (externe Speisekarten-ID): Erforderlich ist der Ereignistyp MenuUpdate. Wird beim Erstellen der Speisekarte zurückgegeben und muss vom Anbieter nach MenuCreate gespeichert werden.
  • original_image_url: Wird für eine automatische Abfrage von Bildern über die Speisekarten-API verwendet. Weitere Informationen findest du im FAQ-Bereich.
  • nutritional_info: Wird verwendet, um Kalorienangaben für Artikel und Alternativen zu definieren.
  • classification_tags: Wird verwendet, um Artikeln und Alternativen Nährwertangaben zuzuweisen.