Gestionar Menus en Tiendas#

Referencia de API

La API de Rappi te permite administrar los menús de tus tiendas.

Puedes crear y actualizar menús en la plataforma, recuperar los elementos de los menús y revisar el estado de aprobación de tus solicitudes para crear o actualizar menús.

Las principales propiedades de los menús y los elementos creados a través de la API de Rappi consisten en los siguientes elementos:

  • storeId: El identificador de la tienda
  • items: Los elementos del menú
  • category: La categoría de los elementos del menú
    • id: El SKU (Stock-Keeping Unit) que el aliado le otorga a esta categoría
    • maxQty: La cantidad máxima de elementos que se pueden pedir en esta categoría
    • minQty: La cantidad mínima de elementos que se pueden pedir en esta categoría (En toppings, si es 0 significa que no es obligatorio)
    • name: Nombre de la categoría
    • sortingPosition: Si es una categoría de producto, es la posición de la categoría en el menu. En caso de ser la categoría de un Topping, es la posición de la categoría dentro del producto
  • children: Subelementos anidados en una categoría
  • name: El nombre del elemento en el menú
  • description: La descripción del elemento en el menú
  • imageUrl: La url de la imagen del elemento en el menú
  • price: El precio del artículo en el menú
  • rappiIds: El identificador que Rappi le da a este artículo
  • sku: El SKU (Stock-Keeping Unit) que el aliado le otorga a este artículo
  • sortingPosition: La posición del elemento en su categoría
  • type: El tipo de artículo
  • maxLimit: Indicador máximo del artículo, es requerido solo si el tipo es topping
  • availableFrom: Fecha de inicio de la disponibilidad del artículo
  • availableTo: Fecha final de la disponibilidad del artículo

Algunas de estas propiedades se subdividen en más objetos. Para obtener una vista detallada y una explicación más detallada de estos elementos, consulta el recurso de la API Menus en la Referencia de API .

Crear un Menú para una Tienda#

Referencia de API

Utiliza el endpoint POST menu para crear menús a través de la API.

Si quieres que un grupo de tiendas compartan el menú, debes pedirle a Rappi que configure una como tienda padre y al resto como tiendas hijas. Una vez hecha esta configuración, solo se podrán enviar menús para tiendas padres. Si se intenta enviar un menú a una tienda hija el endpoint lo va a rechazar.

Para crear un menú:

Realiza una solicitud POST a la siguiente URL y agrega un objeto JSON al cuerpo de la solicitud con los siguientes objetos.

URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/menu

{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.

Este es un ejemplo del objeto JSON en el cuerpo de la solicitud:

{
  "storeId": "900103361",
  "items": [
      {
          "name": "Grilled Chicken Burger",
          "description": "Grilled chicken burger description",
          "price": 14000,
          "sku": "10",
          "sortingPosition": 0,
          "type": "PRODUCT",
          "category": {
              "id": "2090019638",
              "maxQty": 0,
              "minQty": 0,
              "name": "Burgers",
              "sortingPosition": 0
          },
          "children": [
              {
                  "category": {
                      "id": "211",
                      "maxQty": 1,
                      "minQty": 0,
                      "name": "Do you want to add?",
                      "sortingPosition": 0
                  },
                  "name": "French Fries",
                  "description": "crunchy french fries",
                  "price": 5000,
                  "sku": "1",
                  "maxLimit": 1,
                  "sortingPosition": 1,
                  "type": "TOPPING"
              },
              {
                  "category": {
                      "id": "211",
                      "maxQty": 1,
                      "minQty": 0,
                      "name": "Do you want to add?",
                      "sortingPosition": 0
                  },
                  "name": "Potato Wedges",
                  "price": 7000,
                  "sku": "2",
                  "maxLimit": 1,
                  "sortingPosition": 1,
                  "type": "TOPPING"
              }
          ]
      },
      {
          "name": "Hawaiian Pizza",
          "description": "hawaiian pizza description",
          "price": 18000,
          "sku": "11",
          "sortingPosition": 1,
          "type": "PRODUCT",
          "category": {
              "id": "2090019639",
              "maxQty": 0,
              "minQty": 0,
              "name": "Pizzas",
              "sortingPosition": 1
          },
          "children": []
      }
    ]
}

Note

Si necesitamos cambiar la disponibilidad de los products, podemos utilizar el módulo de Gestionar Disponibilidad

Note

Los valores de este JSON no son datos reales. Asegúrate de reemplazarlos con tus datos cuando realices solicitudes de API. Puedes agregar más elementos al menú agregando más objetos en items, separados por una coma.

El sistema muestra el mensaje de confirmación Menu updated and ready to be validated.

Note

No es posible procesar mas de 1 menú al tiempo, por tanto, si ya existe un menú en proceso de aprobación, todos los menus entrantes de la misma tienda serán ignorados

Tu menú está ahora bajo aprobación. Puedes consultar el estado de tu menú haciendo una solicitud GET al endpoint menú. Para obtener más información, Consulta la sección de Obtención de Información del Menú en esta página.

Validaciones sobre el menu recibido#

Cuando Rappi recibe el menú, hace varias validaciones a tomar en cuenta.

  • Lista de Items vacía: Si se recibe una lista de items vacía, se retorna el error: Items is required.
  • Items sin sku: El sku de los productos y los toppings no deben estar vacios ni ser nulos. Si no se cumple esta validacion, se retorna el error: This Store needs skus in all items..
  • Nombres y descripciones validas: Para todos los items (productos o toppings) se valida que:

    • La descripción de item debe tener un tamaño mínimo de 2 caracteres
    • El nombre del item debe tener un tamaño mínimo de 2 caracteres
    • El item debe contener una categoría
    • El id de la categoría del Producto y de los Toppings no deben estar vacíos ni ser nulos
    • El nombre de la categoría del Producto y de los Toppings deben tener un tamaño mínimo de 2 caracteres

    El máximo de caracteres para los distintos campos son parámetros configurables que pueden cambiar en el tiempo.

    Si no cumple alguna de estas validaciones, se retorna el error: All items must have a valid name, category or product description..

    En caso de obtener un error por esta validación por favor contáctese con el funcionario de Rappi que está apoyando su proceso.

  • Tipos de items validos: Se valida que los items de primer nivel sean de tipo PRODUCT y los items dentro de la lista "children" sean de tipo TOPPING. Si esta validación falla se retorna el error All parent items must be product type and children must be topping type.

  • Categorías de toppings duplicadas: Dentro de un producto, no pueden existir dos categorias de toppings con el mismo nombre y id pero distinto sortingPosition, si esta validación falla se retorna el error The topping categories cannot be duplicated (same name and id but different sorting position)
  • Categorías de productos duplicadas: No pueden existir dos categorías de productos con el mismo nombre y distinto id o sortingPosition, si esta validación falla se retorna el error The product categories cannot be duplicated (same name but different id or sorting position)
  • Límites de categorías de toppings: Para todos los toppings se valida:

    • El maxQty de la categoría del topping no puede ser 0 ni mayor a 20
    • El maxLimit del topping no puede ser 0 ni mayor al maxQty de su categoría

    El error retornado es: All toppings must have a valid maxQty or maxLimit must not be greater than maxQty

  • Producto con precio Cero: Para todos los productos se valida que:

    • Un Producto sin toppings (children) tiene que tener precio mayor a 0
    • Un Producto con toppings puede tener precio 0 si alguno de sus toppings tiene precio mayor a 0

    El error retornado es: Product price must be greater than 0 if the product doesn’t have any children. Otherwise at least one of its children must have price.

Note

En el proceso de gestion de menus, Rappi solo contempla 2 niveles de elementos: Productos y Toppings. No se permiten items dentro de un Topping.

  • Formato de imagenes: Los formatos aceptados para imagenes son JPG, JPG200 y PNG. Deben ser de Maximo 1 MB
  • Formato de url: Se valida que la url utilizada posea una estructura válida, también se válida que contenga http y https. El error retornado es: Invalid urls were found
  • Textos con Emojis: En caso de que alguno de los campos de texto posea un Emoji, se retorna el error: Some text fields in the menu have emojis, please delete them..

Note

Menú automático no soporta la reutilización de skus (ids) cuando se desea crear nuevos productos topping categories, y toppings.

Obtención de Información del Menú#

Referencia de API

Una vez que Rappi aprueba el contenido del menú, puedes traer el contenido de los menús de tu tienda utilizando el endpoint GET menu.

Para traer el contenido de los menús de tu tienda:

Realiza una solicitud GET a la siguiente URL.

URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/menu

{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.

El sistema devuelve una respuesta con un objeto JSON con la información de los menús de la tienda.

Consultar el Estado de Aprobación de tus Menús#

Referencia de API

Después de crear un menú usando nuestra API, el equipo de Rappi valida la estructura y el contenido de tu menú.

Puedes utilizar el endpoint GET menu/approved/{storeId} para consultar el estado de aprobación de tus menús.

Para consultar el estado de tus menús:

Realiza una solicitud GET a la siguiente URL.

URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/menu/approved/{storeId}

{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.

El sistema devuelve una respuesta con un objeto JSON con el estado de aprobación de los menús de la tienda.

Note

Si el tiempo de espera para aprobación de un menú supera el SLA acordado, se debe contactar con el equipo de soporte para validar el estado del menú.

Recuperar tu Ultimo Menú Creado#

Referencia de API

Utiliza el endpoint GET menu/rappi/{storeId} para recuperar la información del último menú creado para una tienda específica.

Para obtener el último menú creado:

Realiza una solicitud GET a la siguiente URL:

URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/menu/rappi/{storeId}

El sistema devuelve una respuesta JSON con la información del último menú creado para tu tienda.