Speisekarten erstellen und aktualisieren
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.
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:
Statuscode | Details |
---|---|
200 | Erfolgreich abgeschlossen |
400 | Fehlerhafte Anfrage |
403 | Verboten |
429 | Zu viele Anfragen |
500 | Interner 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.
Feld | Maximale Länge |
---|---|
Speisekarte | |
Name | 500 |
Untertitel | 500 |
merchant_supplied_id | 1024 |
Kategorie | |
Name | 500 |
Untertitel | 500 |
merchant_supplied_id | 1024 |
Item, ItemExtra und ItemExtraOption | |
Name | 500 |
Beschreibung | 1000 |
merchant_supplied_id | 1024 |
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 EreignistypMenuUpdate
. 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.