Saltar al contenido principal

Crear y actualizar menús

Marketplace APIs are limited access

En este momento, el proceso de integración en Marketplace se encuentra al máximo de su capacidad. No estamos aceptando nuevos socios por ahora, ya que estamos desarrollando herramientas de autogestión para la incorporación de tiendas. Completa el formulario para interesados en la integración de Marketplace para ponerte en contacto con DoorDash antes de realizar tu integración.

La siguiente imagen muestra una descripción general de cómo funciona la creación y actualización de menús a través de nuestra API.

Menú

Creación de menús (Pull)

GET /{merchant_pull_menu_endpoint}/{location_id}

Como parte del flujo de trabajo de integración, los socios deben implementar un punto de conexión que permita a DoorDash extraer los menús. Esto permite que el proceso de incorporación de nuevas tiendas sea más sencillo. De este modo, el equipo de DoorDash puede configurar la tienda y extraer el menú correspondiente de una sola vez, en lugar de ponerse a coordinar con los socios la inserción del menú. La respuesta para el proceso de incorporación de menús coincidirá con lo descrito a continuación para el método Push. La respuesta a esta solicitud GET será diferente a la solicitud Push. Independientemente de si es necesario devolver varios menús como parte de la respuesta, los menús deben incluirse como una matriz. A continuación, se muestra un ejemplo.

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

Nota: Como indica el ejemplo de respuesta anterior, la respuesta a la solicitud Menu Pull debe devolver los menús como una matriz, incluso si solo se devuelve un menú.

Se espera que los socios devuelvan los códigos de respuesta apropiados si la solicitud Menu Pull falla a fin de agilizar la clasificación y el escalamiento si es necesario.

Una vez que nuestro servicio termina de crear su menú o si la creación del menú falla, se enviará una solicitud POST del webhook con el resultado de la creación del menú. Debes crear un punto de conexión y proporcionarnos tu URL para recibir la notificación del webhook. Esta solicitud contendrá la misma “referencia” que la respuesta a tu solicitud inicial, lo que te permitirá hacer un seguimiento de las solicitudes que se hayan procesado por completo. Puedes encontrar más información sobre este webhook en la sección Receiving Menu Status Updates.

Creación de menús (Push)

POST /api/v1/menus

El proceso de creación de menús de DoorDash funciona de forma asincrónica. Tras realizar una solicitud con éxito al punto de conexión POST, recibirás una respuesta con el código de estado 200 que indica que la solicitud para crear el menú se recibió correctamente. Posteriormente, recibirás el resultado de esta solicitud a través de un webhook de estado del menú. El tiempo de procesamiento de los menús puede variar según el tamaño de la cola en el momento de la creación del trabajo de menú. El tiempo promedio de procesamiento del menú es inferior a 1 minuto.

El cuerpo de la solicitud de menú contiene un campo reference que es opcional. Este puede ser cualquier ID proporcionado por la tienda que haga referencia a la solicitud de creación de menú y se enviará de vuelta en el webhook de estado del menú para identificar la solicitud original a la que corresponde el estado. Si no se proporciona, DoorDash completará este ID y el ID obtenido se enviará de vuelta a través de la respuesta a MENU POST. Se recomienda no dejarlo como una cadena vacía o un valor nulo.

El cuerpo de la solicitud del menú contiene un campo provider_type que debe indicar el tipo de proveedor sin ningún número de versión. Por ejemplo, si el encabezado es "User-Agent": DoordashClient/1.0 entonces el valor que se indicará en el campo provider_type en el cuerpo de la llamada será simplemente "provider_type": "doordash_client".

Una vez que nuestro servicio termina de crear su menú o si la creación del menú falla, se enviará una solicitud POST del webhook con el resultado de la creación del menú. Debes crear un punto de conexión y proporcionarnos tu URL para recibir la notificación del webhook. Esta solicitud contendrá la misma reference que la respuesta a tu solicitud inicial, lo que te permitirá hacer un seguimiento de las solicitudes que se hayan procesado por completo. Puedes encontrar más información sobre este webhook en la sección Receiving Menu Status Updates.

Actualización de menús (Push)

PATCH /api/v1/menus/{id}

Cuando crees el menú, recibirás el "id": "menu-id" (UUID) en la solicitud POST enviada por el webhook de estado del menú de DoorDash. Cuando actualices un menú, deberás incluir el ID de ese menú en los parámetros de la URL. El tiempo de procesamiento de los menús puede variar según el tamaño de la cola al momento de la creación del trabajo del menú, pero el tiempo promedio de procesamiento del menú es inferior a un minuto.

El proceso de actualización de menús funciona de forma idéntica al proceso de creación de menús. Cuando actualices un menú, tendrás que incluir todo el menú en tu solicitud, no solo los campos específicos que desees actualizar. Por lo tanto, la validación de datos para el punto de conexión PATCH será idéntica a la del punto de conexión POST, ya que utiliza el mismo modelo. Al igual que con POST, también puedes proporcionar un campo reference en la carga para identificar tu solicitud o basarte en la referencia generada por DoorDash.

Una vez que nuestro servicio termine de actualizar tu menú o si la actualización del menú falla, nuestro webhook enviará una solicitud POST al punto de conexión que nos proporciones. Los detalles se pueden encontrar en la sección Receiving Menu Status Updates.

Actualización de menús (Pull)

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

Los socios pueden utilizar el mismo punto de conexión Pull que permite a DoorDash solicitar actualizaciones de los menús basándose en una lista de identificadores de menús externos. Esto permite la flexibilidad del lado de DoorDash para garantizar que los menús estén sincronizados. La recomendación es que la lógica Push se siga desarrollando en el lado del proveedor para activar automáticamente las actualizaciones de los menús cuando se realicen cambios en el POS.

Códigos de respuesta del menú:

Código de estadoDetalles
200Éxito
400Solicitud incorrecta
403Prohibido
429Demasiadas solicitudes
500Error interno del servidor

Si recibes el código 429, vuelve a intentarlo después de 1 minuto. Si recibes el código 500, vuelve a intentarlo con un retardo exponencial. Si recibes 400 como respuesta, no vuelvas a intentarlo. Debería haber un mensaje de error asociado con un código de estado 400 que ayude a diagnosticar el origen del problema (ejemplo a continuación).

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

En el ejemplo anterior, ya existe un artículo con el merchant_supplied_id de 5757. Esto indica que hay identificadores duplicados para un artículo dentro del mismo nivel del menú. Para resolver el error, debes tener merchant_supplied_ids únicos en los artículos dentro del mismo nivel del menú.

Longitud máxima de los campos del menú

Si un campo de la carga del menú excede la longitud máxima permitida, el menú fallará con la respuesta 400 Solicitud incorrecta. Respeta la longitud máxima que se indica a continuación.

CampoLongitud máx.
Menú
nombre500
subtítulo500
merchant_supplied_id1024
Categoría
nombre500
subtítulo500
merchant_supplied_id1024
Item, ItemExtra y ItemExtraOption
nombre500
descripción1000
merchant_supplied_id1024

Campos de menú destacados

  • reference: campo obligatorio en la respuesta de extracción del menú. Se trata de un identificador de menú de la tienda que estará vinculado al ID (ID de menú externo).
  • id (ID de menú externo) es obligatorio si el tipo de evento es MenuUpdate. Se devuelve cuando se crea el menú y la tienda debe guardarlo después del evento MenuCreate.
  • original_image_url: se utiliza para extraer automáticamente las imágenes a través de la API de menús. Para obtener más información, consulte la sección de preguntas frecuentes.
  • nutritional_info: se utiliza para definir la información calórica de los artículos y modificadores.
  • classification_tags: se utiliza para designar las etiquetas dietéticas nutricionales de los artículos y modificadores.