Créer et mettre à jour les menus
Notre pipeline d’intégration Marketplace est actuellement au maximum de sa capacité. Nous n’acceptons pas de nouveaux partenaires pour le moment pendant que nous développons des outils libre-service pour l’intégration des commerçants. Veuillez remplir le formulaire d’intérêt pour l’intégration de Marketplace pour communiquer avec DoorDash avant de développer votre intégration.
L’image ci-dessous présente un aperçu du fonctionnement de la création et de la mise à jour des menus avec notre API.
Créer des menus (extraction)
GET /{merchant_pull_menu_endpoint}/{location_id}
Dans le cadre du flux de travail d’intégration, les partenaires doivent mettre en œuvre un point de terminaison qui permet à DoorDash d’extraire des menus. Cela permet un processus plus simple lors de l’intégration de nouveaux commerces. L’équipe de DoorDash peut ainsi configurer le commerce et extraire le menu correspondant en une seule fois plutôt que de se coordonner les efforts de diffusion du menu avec nos partenaires. La réponse pour le processus d’ingestion de menu correspondra à ce qui est décrit ci-dessous pour la méthode de diffusion. La réponse à cette demande GET sera différente de votre demande de diffusion. Même si plusieurs menus doivent être renvoyés dans le cadre de la réponse, les menus doivent être inclus sous forme de tableau. Exemple ci-dessous.
{
"store": {
"merchant_supplied_id": "<client's store id>",
"provider_type": "<client’s DoorDash provider type>"
},
"menus": [
{...},
{...}
]
}
Remarque : Comme l’indique l’exemple de réponse ci-dessus, la réponse à la demande d’extraction de menu doit renvoyer le ou les menus sous forme de tableau, même si un seul menu est renvoyé.
Les partenaires doivent renvoyer les codes de réponse appropriés si la demande d’extraction de menu échoue pour simplifier le triage et effectuer une escalade, si nécessaire.
Une fois que notre service a terminé de créer votre menu ou si la création du menu échoue, le service enverra une demande de point d’ancrage Web POST avec le résultat de la création du menu. Vous devez créer un point de terminaison et nous fournir son URL afin de recevoir la notification du point d’ancrage Web. Cette demande contiendra la même « référence » que la réponse à votre demande initiale, ce qui vous permettra de savoir quelles demandes ont été traitées en entier. Vous pouvez trouver plus de détails à propos de ce point d’ancrage Web dans la section Receiving Menu Status Updates
.
Création de menus (diffusion)
POST /api/v1/menus
Le pipeline de création de menu de DoorDash fonctionne de manière asynchrone. Une fois la demande effectuée auprès du point de terminaison POST, vous recevrez une réponse avec le code d’état 200
indiquant que nous avons reçu avec succès la demande de création de menu. Le résultat de cette demande vous sera renvoyé plus tard avec un point d’ancrage Web sur l’état du menu. Le temps de traitement du menu peut varier en fonction de la taille de la file d’attente au moment de la création de la tâche de menu. Le temps moyen de traitement des menus est inférieur à 1 minute.
Le corps de la demande de menu contient un champ reference
, qui est facultatif. Il peut s’agir de tout identifiant fourni par le commerçant qui fait référence à la demande de création de menu et qui sera renvoyé dans le point d’ancrage Web de l’état du menu pour identifier la demande initiale à laquelle l’état est associé. S’il n’est pas fourni, DoorDash remplira cet identifiant et l’identifiant généré par DoorDash sera renvoyé avec la réponse MENU POST. Ne définissez pas cet identificateur comme une chaîne vide ou une valeur nulle.
Le corps de la demande de menu contient un champ provider_type qui doit transmettre votre type de fournisseur sans aucun numéro de version. Par exemple, si votre en-tête est "User-Agent": DoordashClient/1.0
, la valeur à transmettre dans le champ provider_type
dans le corps de l’appel serait simplement "provider_type": "doordash_client"
.
Une fois que notre service a terminé de créer votre menu ou si la création du menu échoue, le service enverra une demande de point d’ancrage Web POST avec le résultat de la création du menu. Vous devez créer un point de terminaison et nous fournir son URL afin de recevoir la notification du point d’ancrage Web. Cette demande contiendra la même reference
comme réponse à votre demande initiale, ce qui vous permet de savoir quelles demandes ont été entièrement traitées. Vous pouvez trouver plus de détails à propos de ce point d’ancrage Web dans la section Receiving Menu Status Updates
.
Mise à jour des menus (diffusion)
PATCH /api/v1/menus/{id}
Lors de la création d’un menu, vous recevrez le "id": "menu-id"
(UUID) dans la demande POST envoyée par le point d’ancrage Web de l’état du menu de DoorDash. Lors de la mise à jour d’un menu, vous devez inclure l’identifiant de ce menu dans les paramètres d’URL. Le temps de traitement du menu peut varier en fonction de la taille de la file d’attente au moment de la création de la tâche de menu, mais le temps de traitement moyen du menu est inférieur à 1 minute.
Le pipeline de mise à jour du menu fonctionne de la même manière que le pipeline de création de menu. Lors de la mise à jour d’un menu, vous devrez inclure le menu complet dans votre demande, et pas seulement les champs que vous souhaitez mettre à jour. Par conséquent, la vérification des données pour le point de terminaison PATCH sera identique à celle du point de terminaison POST, car il utilise le même modèle. Tout comme avec POST, vous pouvez également fournir un champ reference
dans la charge utile pour identifier votre demande ou vous fier à la référence générée par DoorDash.
Une fois que notre service aura terminé de mettre à jour votre menu ou si la mise à jour du menu échoue, notre point d’ancrage Web enverra une demande POST au point de terminaison que vous nous avez fourni. Les détails se trouvent dans la section suivante, Receiving Menu Status Updates
.
Mise à jour des menus (extraction)
GET /{merchant_pull_menu_endpoint}/{location_id}[?ids=external_menu_ids]
Les partenaires peuvent utiliser le même point de terminaison d’extraction pour permettre à DoorDash de demander des mises à jour de menu en fonction d’une liste d’identifiants de menu externes. Cela permet une flexibilité du côté de DoorDash pour s’assurer que les menus sont synchronisés. La recommandation est que la logique de diffusion soit toujours intégrée du côté du fournisseur pour déclencher automatiquement les mises à jour du menu lorsque des modifications sont apportées au PDV.
Codes de réponse du menu :
Code d’état | Détails |
---|---|
200 | Succès |
400 | Mauvaise demande |
403 | Interdit |
429 | Trop de demandes |
500 | Erreur interne du serveur |
Si vous recevez un 429
, veuillez réessayer après 1 minute. Si vous recevez un 500
, veuillez réessayer avec un délai exponentiel. Si vous recevez une réponse 400
, veuillez ne pas réessayer. Il devrait y avoir un message d’erreur associé avec un code d’état 400
qui vous aidera à diagnostiquer l’origine du problème (exemple ci-dessous).
400 Bad Request: Invalid menu payload: [StoreMenu.menu.MenuCategory[IcedBeverages]: find duplicate merchant id:5757, name:Freshly Brewed Iced Coffee - Create Your Own - Custom.]
Dans l’exemple ci-dessus, il y a déjà un article avec un merchant_supplied_id
de 5757
. Cela indique qu’il y a des identifiants en double pour un article au même niveau de menu. Pour résoudre cette erreur, vous devez avoir un merchant_supplied_ids
unique pour les articles du même niveau de menu.
Longueur maximale des champs du menu
Si un champ dans la charge utile du menu dépasse la longueur maximale autorisée, le menu échouera avec une réponse 400 Mauvaise demande. Veuillez respecter les longueurs maximales de champs indiquées ci-dessous.
Champ | Longueur maximale |
---|---|
Menu | |
name | 500 |
subtitle | 500 |
merchant_supplied_id | 1024 |
Category | |
name | 500 |
subtitle | 500 |
merchant_supplied_id | 1024 |
Item, ItemExtra et ItemExtraOption | |
name | 500 |
description | 1000 |
merchant_supplied_id | 1024 |
Champs de menu importants
reference
: Champ obligatoire dans la réponse à l’extraction du menu. Il s’agit d’un identifiant de menu du commerçant qui sera lié à l’identifiant (identifiant de menu externe)id
(identifiant de menu externe) : Obligatoire si le type d’événement estMenuUpdate
. Renvoyé lorsque le menu est créé et doit être stocké par le commerçant après MenuCreate.original_image_url
: Utilisé pour extraire automatiquement les images avec l’API Menu. Plus de détails sont inclus dans la section FAQ.nutritional_info
: Utilisé pour définir les informations sur les calories pour les articles et les modificateurs.classification_tags
: Utilisé pour désigner les étiquettes nutritionnelles pour les articles et les modificateurs.