Menús
Los recursos de Menús te permiten interactuar con los menús de tus tiendas.
| Recurso API | Descripción |
|---|---|
GET menu | Devuelve la lista de menús creados por el aliado autenticado |
POST menu | Crea o actualiza un menú de una tienda |
GET menu/approved/{storeId} | Devuelve el estado actual de aprobación de un menú |
GET menu/rappi/{storeId} | Devuelve el último menú creado para una tienda |
GET menu
Utiliza este endpoint para obtener la colección de menús creados por el aliado autenticado.
URL del Endpoint
Utiliza esta URL para hacer una llamada con este endpoint:
https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/menu
{COUNTRY_DOMAIN}: Este es tu Dominio por País de Rappi. Mira la lista de Dominios por país.
Propiedades del Endpoint
Este recurso tiene las siguientes propiedades:
| Formato de respuesta | JSON |
| Requerimientos de autenticación | Token |
Parámetros
Este endpoint no permite parámetros adicionales.
Códigos de Respuesta
Estos son los posibles códigos de respuesta en este endpoint:
Ejemplo de Llamada
Este es un ejemplo de una llamada API usando este endpoint:
GET https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu
Este es un ejemplo de la llamada:
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", "Mozilla/5.0"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Accept", "application/json"); connection.setRequestProperty("x-authorization", "Bearer YOUR_TOKEN"); try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { StringBuilder response = new StringBuilder(); String responseLine; while ((responseLine = br.readLine()) != null) { response.append(responseLine.trim()); } System.out.println("Response body: " + response.toString()); } System.out.println("Response Code : " + connection.getResponseCode());
Ejemplo de Respuesta "200 Llamada exitosa":
Este es un ejemplo de la respuesta:
[ { "storeId": "900111978", "items": [ { "name": "Naked Cake con frutos", "description": "Naked cake decorado con frutos. Cubierta de trufa derretida (ganache) y decorada con frutos del bosque.", "sku": "8569874", "type": "PRODUCT", "price": 75.0, "category": { "id": "3", "name": "Tortas", "minQty": 0, "maxQty": 0, "sortingPosition": 0 }, "imageUrl": "https://image.com/image1.jpg", "children": [ { "name": "Chocolate", "description": "", "sku": "8569874-159", "type": "TOPPING", "price": 0.0, "category": { "id": "1", "name": "Sabor", "minQty": 0, "maxQty": 1, "sortingPosition": 0 }, "imageUrl": "https://image.com/image10.jpg", "children": [], "rappiIds": ["340948822"], "sortingPosition": 1, "maxLimit": 1 } ], "rappiIds": ["2135527868"], "sortingPosition": 0, "maxLimit": 1 }, { "name": "Snowman", "description": "Linda lata de Snowman con productos variadosIncluye:Galletas mantequilla 350 gr, 6 brookies y 4 trufas de brownie.", "sku": "856887", "type": "PRODUCT", "price": 75.0, "category": { "id": "9", "name": "Navidad", "minQty": 0, "maxQty": 0, "sortingPosition": 0 }, "imageUrl": "https://image.com/image2.jpg", "children": [], "rappiIds": ["2135524472"], "sortingPosition": 0, "maxLimit": 1 } ] } ]
Esta tabla describe los objectos dentro de la respuesta de ejemplo:
| Objeto en la respuesta | Descripción del objeto |
|---|---|
storeIdstring | Identificador de la tienda en la aplicación de Rappi. |
itemsarray of objects | Lista de productos dentro del menú de la tienda. |
items.namestring | Nombre del producto en el menú. |
items.descriptionstring | Descripción del producto en el menú. |
items.skustring | SKU que el aliado asigna al producto en el menú. |
items.typestring | Tipo de producto en el menú, en este caso solamente puede ser PRODUCT |
items.priceinteger | Precio del producto en el menú. |
items.imageUrlstring | Url de la imagen del producto en el menú |
items.rappiIdsarray of string | Lista de los identificadores que Rappi le da al producto |
items.sortingPositioninteger | La posición del producto en su categoría en el menú |
items.maxLimitinteger | Indicador máximo, es requerido solo si el tipo es topping |
items.categorystring | Categoría a la cual pertenece el producto en el menú |
items.category.idstring | Id de la categoría |
items.category.namestring | Nombre de la categoría |
items.category.minQtyinteger | La cantidad maxima de elementos que se pueden pedir en esta categoría |
items.category.maxQtyinteger | La cantidad minima de elementos que se pueden pedir en esta categoría (En toppings, si es 0 significa que no es obligatorio) |
items.category.sortingPositioninteger | Es la posición de la categoría en el menu |
items.childrenarray of objects | Lista de toppings del producto |
items.children.namestring | Nombre del topping en el menú. |
items.children.descriptionstring | Descripción del toppin en el menú. |
items.children.skustring | SKU que el aliado asigna al topping en el menú. |
items.children.typestring | Tipo de topping en el menú, en este caso solamente puede ser TOPPING |
items.children.priceinteger | Precio del topping en el menú. |
items.children.imageUrlstring | Url de la imagen del topping en el menú |
items.children.rappiIdsarray of string | Lista de los identificadores que Rappi le da al topping |
items.children.sortingPositioninteger | La posición del topping en su categoría en el menú |
items.children.maxLimitinteger | Indicador máximo, es requerido solo si el tipo es topping |
items.children.categorystring | Categoría a la cual pertenece el topping en el menú |
items.children.category.idstring | Id de la categoría |
items.children.category.namestring | Nombre de la categoría |
items.children.category.minQtyinteger | La cantidad maxima de elementos que se pueden pedir en esta categoría |
items.children.category.maxQtyinteger | La cantidad minima de elementos que se pueden pedir en esta categoría (En toppings, si es 0 significa que no es obligatorio) |
items.children.category.sortingPositioninteger | La posición de la categoría dentro del producto |
Ejemplo de Respuesta "Credenciales invalidas 401":
{ "message": "Not a valid token" }
Esta tabla describe los objectos dentro de la respuesta de ejemplo:
| Atributos | Descripción |
|---|---|
messagestring | El token es invalido |
POST menu
Usa este endpoint para crear un nuevo menú o añadir nuevos artículos a un menú existente del aliado autenticado.
Después de crear un menú o añadir nuevos artículos a alguno existente, el equipo de Rappi valida los artículos y la estructura del menú. Puedes consultar el estado de aprobación usando el endpoint GET menu/approved/{storeId}.
URL del Endpoint
Utiliza esta URL para hacer una llamada con este endpoint:
https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/menu
{COUNTRY_DOMAIN}: Este es tu Dominio por País de Rappi. Mira la lista de dominios por país.
Propiedades del Endpoint
Este recurso tiene las siguientes propiedades:
| Formato de respuesta | JSON |
| Requerimientos del body para llamadas | JSON |
| Requerimientos de autenticación | Token |
Parámetros
Este endpoint no permite parámetros adicionales.
Códigos de Respuesta
Estos son los posibles códigos de respuesta en este endpoint:
Ejemplo de Llamada
Este es un ejemplo de una llamada API usando este endpoint:
POST https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu
Este es un ejemplo de la llamada:
{ "storeId": "900103361", "items": [ { "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 }, "children": [], "name": "French Fries", "price": 5000, "sku": "2135092195", "sortingPosition": 1, "type": "TOPPING", "maxLimit": 1 }, { "category": { "id": "211", "maxQty": 1, "minQty": 0, "name": "Do you want to add?", "sortingPosition": 0 }, "children": [], "name": "Potato Wedges", "price": 7000, "sku": "2135092196", "sortingPosition": 1, "type": "TOPPING", "maxLimit": 1 } ], "name": "Grilled Chicken Burger", "price": 14000, "sku": "2135092197", "sortingPosition": 0, "type": "PRODUCT", "combo": true }, { "category": { "id": "2090019639", "maxQty": 0, "minQty": 0, "name": "Pizzas", "sortingPosition": 1 }, "children": [], "name": "Hawaiian Pizza", "price": 17000, "sku": "2135092198", "sortingPosition": 1, "type": "PRODUCT", "combo": true } ] }
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("User-Agent", "Mozilla/5.0"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Accept", "application/json"); connection.setRequestProperty("x-authorization", "Bearer YOUR_TOKEN"); connection.setDoOutput(true); String jsonInputString = "{\n" + " \"storeId\": \"900103361\",\n" + " \"items\": [\n" + " {\n" + " \"category\": {\n" + " \"id\": \"2090019638\",\n" + " \"maxQty\": 0,\n" + " \"minQty\": 0,\n" + " \"name\": \"Burgers\",\n" + " \"sortingPosition\": 0\n" + " },\n" + " \"children\": [\n" + " {\n" + " \"category\": {\n" + " \"id\": \"211\",\n" + " \"maxQty\": 1,\n" + " \"minQty\": 0,\n" + " \"name\": \"Do you want to add?\",\n" + " \"sortingPosition\": 0\n" + " },\n" + " \"children\": [],\n" + " \"name\": \"French Fries\",\n" + " \"price\": 5000,\n" + " \"sku\": \"2135092145\",\n" + " \"sortingPosition\": 1,\n" + " \"type\": \"TOPPING\",\n" + " \"maxLimit\": 1\n" + " },\n" + " {\n" + " \"category\": {\n" + " \"id\": \"211\",\n" + " \"maxQty\": 1,\n" + " \"minQty\": 0,\n" + " \"name\": \"Do you want to add?\",\n" + " \"sortingPosition\": 0\n" + " },\n" + " \"children\": [],\n" + " \"name\": \"Potato Wedges\",\n" + " \"price\": 7000,\n" + " \"sku\": \"2135092145\",\n" + " \"sortingPosition\": 1,\n" + " \"type\": \"TOPPING\",\n" + " \"maxLimit\": 1\n" + " }\n" + " ],\n" + " \"name\": \"Grilled Chicken Burger\",\n" + " \"price\": 14000,\n" + " \"sku\": \"2135092145\",\n" + " \"sortingPosition\": 0,\n" + " \"type\": \"PRODUCT\"\n" + " \"combo\": true\n" + " },\n" + " {\n" + " \"category\": {\n" + " \"id\": \"2090019639\",\n" + " \"maxQty\": 0,\n" + " \"minQty\": 0,\n" + " \"name\": \"Pizzas\",\n" + " \"sortingPosition\": 1\n" + " },\n" + " \"children\": [],\n" + " \"name\": \"Hawaiian Pizza\",\n" + " \"price\": 17000,\n" + " \"sku\": \"2135092145\",\n" + " \"sortingPosition\": 1,\n" + " \"type\": \"PRODUCT\"\n" + " \"combo\": true\n" + " }\n" + " ]\n" + "}\n"; try (OutputStream os = connection.getOutputStream()) { byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8); os.write(input, 0, input.length); } try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { StringBuilder response = new StringBuilder(); String responseLine; while ((responseLine = br.readLine()) != null) { response.append(responseLine.trim()); } System.out.println("Response body: " + response.toString()); } System.out.println("Response Code : " + connection.getResponseCode());
Esta tabla describe los atributos que el JSON de tu llamada requiere:
| Atributos | Requerido | Descripción |
|---|---|---|
storeIdstring | requerido | Identificador de la tienda en la aplicación de Rappi. |
itemsarray of objects | requerido | Lista de productos dentro del menú de la tienda. |
items.namestring | requerido | Nombre del producto en el menú. |
items.descriptionstring | requerido | Descripción del producto en el menú. |
items.skustring | requerido | SKU que el aliado asigna al producto en el menú. |
items.typestring | requerido | Tipo de producto en el menú, en este caso solamente puede ser PRODUCT |
items.priceinteger | requerido | Precio del producto en el menú. |
items.imageUrlstring | opcional | Url de la imagen del producto en el menú |
items.rappiIdsarray of string | opcional | Lista de los identificadores que Rappi le da al producto |
items.sortingPositioninteger | opcional | La posición del producto en su categoría en el menú |
items.maxLimitinteger | opcional | Indicador máximo, es requerido solo si el tipo es topping |
items.comboboolean | opcional | Indica si el elemento pertenece a un combo |
items.categorystring | requerido | Categoría a la cual pertenece el producto en el menú |
items.category.idstring | requerido | Id de la categoría |
items.category.namestring | requerido | Nombre de la categoría |
items.category.minQtyinteger | requerido | La cantidad maxima de elementos que se pueden pedir en esta categoría |
items.category.maxQtyinteger | requerido | La cantidad minima de elementos que se pueden pedir en esta categoría (En toppings, si es 0 significa que no es obligatorio) |
items.category.sortingPositioninteger | requerido | Es la posición de la categoría en el menu |
items.childrenarray of objects | opcional | Lista de toppings del producto |
items.children.namestring | requerido | Nombre del topping en el menú. |
items.children.descriptionstring | requerido | Descripción del toppin en el menú. |
items.children.skustring | requerido | SKU que el aliado asigna al topping en el menú. |
items.children.typestring | requerido | Tipo de topping en el menú, en este caso solamente puede ser TOPPING |
items.children.priceinteger | requerido | Precio del topping en el menú. |
items.children.imageUrlstring | opcional | Url de la imagen del topping en el menú |
items.children.rappiIdsarray of string | opcional | Lista de los identificadores que Rappi le da al topping |
items.children.sortingPositioninteger | requerido | La posición del topping en su categoría en el menú |
items.children.maxLimitinteger | requerido | Indicador máximo, es requerido solo si el tipo es topping |
items.children.categorystring | requerido | Categoría a la cual pertenece el topping en el menú |
items.children.category.idstring | requerido | Id de la categoría |
items.children.category.namestring | requerido | Nombre de la categoría |
items.children.category.minQtyinteger | requerido | La cantidad maxima de elementos que se pueden pedir en esta categoría |
items.children.category.maxQtyinteger | requerido | La cantidad minima de elementos que se pueden pedir en esta categoría (En toppings, si es 0 significa que no es obligatorio) |
items.children.category.sortingPositioninteger | requerido | La posición de la categoría dentro del producto |
Ejemplo de Respuesta "200 Llamada exitosa"
Este endpoint regresa solo un código de respuesta exitosa.
Ejemplo de Respuesta "400 La estructura del menú es invalida."
{ "message": "The submitted menu has errors.", "errors": [ { "reason": "All items must have a valid name, category or product description.", "relatedItems": [ { "description": "", "sku": "product1", "type": "PRODUCT", "price": 899.0, "category": { "id": "455", "name": "producto category name 1", "minQty": 0, "maxQty": 0, "sortingPosition": 0 }, "imageUrl": "https://anydomain/anyimagen_1.png", "rappiIds": ["1965855"], "sortingPosition": 0, "maxLimit": 1 } ] }, { "reason": "Invalid urls were found", "relatedItems": [ { "name": "producto name 1", "description": "", "sku": "product2", "type": "PRODUCT", "price": 899.0, "category": { "id": "455", "name": "producto category name 1", "minQty": 0, "maxQty": 0, "sortingPosition": 0 }, "imageUrl": "httpaas://anydomain/anyimagen_2.png", "rappiIds": ["1965855"], "sortingPosition": 0, "maxLimit": 1 } ] } ] }
Esta tabla describe los objetos dentro de la respuesta de ejemplo:
| Objeto en la respuesta | Descripción del objeto |
|---|---|
messagestring | Mensaje de error al enviar el menu. El mensaje por defecto es "The submitted menu has errors." |
errorsarray of objects | Lista de errores encontrados en el menu. |
errors.reasonstring | Descripción del error encontrado en el menu. Los distintos mensajes los podemos encontrar en "VALIDACIONES SOBRE EL MENU RECIBIDO" |
errors.relatedItemsarray of objects | Lista de items que poseen el error, pueden ser tanto productos como toppings |
Para ver todas las posibles validaciones de la estructura del menú pueden ver las VALIDACIONES SOBRE EL MENU RECIBIDO.
Ejemplo de Respuesta "401 Credenciales inválidas"
401 Credenciales inválidas:
{ "message": "Not a valid token" }
Esta tabla describe los objetos dentro de la respuesta de ejemplo:
| Atributos | Descripción |
|---|---|
messagestring | Token inválido |
Ejemplo de Respuesta "404 Tienda no encontrada"
404 Tienda no encontrada:
{ "message": "StoreId 9001035324: not found associated Stores" }
Esta tabla describe los objetos dentro de la respuesta de ejemplo:
| Atributos | Descripción |
|---|---|
messagestring | Tienda no encontrada |
Ejemplo de Respuesta "500 Error interno del servidor"
500 Error interno del servidor:
{ "message": "An error occurred while processing your request. please try again later.", "detail": { "error": { "code": "catalog_error_code", "message": "Descripción del error recibido desde el servicio de catálogo" } } }
Esta tabla describe los objetos dentro de la respuesta de ejemplo:
| Atributos | Descripción |
|---|---|
messagestring | Mensaje de error genérico indicando que la solicitud no pudo ser procesada. |
detailobject | string | null | Detalle del error reenviado desde el servicio interno de menú. Contiene el error retornado por el servicio de catálogo cuando está disponible. Puede ser un objeto JSON, una cadena de texto o null si no hay detalle disponible. |
detail.errorobject | Objeto de error del servicio interno. |
detail.error.codestring | Identificador del código de error proveniente del servicio de catálogo. |
detail.error.messagestring | Descripción legible del error proveniente del servicio de catálogo. |
Ejemplo de Respuesta "424 Dependencia Fallida"
424 Dependencia Fallida:
{ "message": "An error occurred while processing your request. please try again later.", "detail": { "error": { "code": "duplicated_items_complies", "message": "Hay productos repetidos dentro de una misma categoría o grupo de modificadores. Elimina los duplicados." } } }
Esta tabla describe los objetos dentro de la respuesta de ejemplo:
| Atributos | Descripción |
|---|---|
messagestring | Mensaje de error genérico indicando que la solicitud no pudo ser procesada. |
detailobject | string | null | Detalle del error reenviado desde el servicio interno de menú. Contiene el error retornado por el servicio de catálogo cuando está disponible. Puede ser un objeto JSON, una cadena de texto o null si no hay detalle disponible. |
detail.errorobject | Objeto de error del servicio interno. |
detail.error.codestring | Código de validación que identifica el error específico del servicio de catálogo. Consulta la tabla a continuación para ver los valores posibles. |
detail.error.messagestring | Descripción legible del error proveniente del servicio de catálogo. |
Códigos de validación del catálogo
| Código | Tipo | Descripción |
|---|---|---|
duplicated_categories_complies | Estructural | Hay categorías repetidas en el menú. Revisa que cada categoría tenga un nombre y código únicos. |
duplicated_items_complies | Estructural | Hay productos repetidos dentro de una misma categoría o grupo de modificadores. Elimina los duplicados. |
item_relation_complies | Estructural | La estructura del menú tiene un error: un producto está conectado directamente a otro producto, o un grupo de modificadores a otro grupo. Revisa la jerarquía. |
item_relation_without_cyclic_complies | Estructural | Se detectó un bucle en la estructura del menú: un producto aparece más de una vez en la misma ruta. Esto puede causar errores al navegar el menú. |
start_and_ends_with_item | Estructural | La ruta del menú no comienza o no termina con un producto. Cada ruta debe empezar y terminar con un producto, no con un grupo de modificadores. |
minimum_menus_complies | Estructural | No se encontró ningún menú en la tienda. Se necesita al menos un menú para publicar. |
minimum_categories_complies | Estructural | No se encontró ninguna categoría en el menú. Se necesita al menos una categoría. |
minimum_items_complies | Estructural | No se encontró ningún producto en el menú. Se necesita al menos un producto. |
image_url_complies | Contenido | La URL de la imagen del producto no es válida. Verifica que comience con http:// o https:// y que no tenga espacios. |
text_format_complies | Contenido | El texto contiene emojis o palabras prohibidas, los cuales no están permitidos en el nombre, descripción o código del producto o categoría. |
text_fields_length_complies | Contenido | El nombre o código del producto/categoría está vacío, es demasiado corto o demasiado largo. Todos los productos y categorías deben tener un nombre y código dentro de los límites permitidos. |
override_type_complies | Contenido | Se usó un tipo de personalización no válido en el producto. Revisa la configuración de las personalizaciones del producto. |
positive_numbers_complies | Contenido | El precio o las cantidades del producto son negativos, o un grupo de modificadores tiene la cantidad máxima en cero. Estos valores deben ser positivos. |
min_permitted_complies | Contenido | Un producto estándar tiene una cantidad mínima obligatoria mayor a cero. Los productos estándar no deben requerir una cantidad mínima. |
zero_price_complies | Contenido | El precio del producto es cero. Verifica que todos los productos tengan un precio asignado. |
max_item_childs_complies | Límites | El producto o grupo de modificadores tiene demasiados elementos hijos (más de 50). Reduce la cantidad de opciones. |
max_item_images_complies | Límites | El producto tiene demasiadas imágenes (más de 3). Reduce la cantidad de imágenes por producto. |
max_item_level_depth_complies | Límites | La estructura del menú tiene demasiados niveles de profundidad. El límite es de 11 niveles. Simplifica la estructura de modificadores. |
max_items_category_complies | Límites | La categoría tiene demasiados productos (más de 50). Divide los productos en varias categorías. |
max_time_periods_complies | Límites | El producto o categoría tiene demasiados horarios configurados (más de 6 por día). Reduce la cantidad de franjas horarias. |
max_permitted_in_items_complies | Límites | La suma de cantidades máximas permitidas de los productos hijos no es válida. Revisa las cantidades configuradas en el grupo de modificadores. |
GET menu/approved/{storeId}
Usa este endpoint para regresar el estado de aprobación de un menú.
URL del Endpoint
Usa esta URL para hacer llamadas con este endpoint:
https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/menu/approved/{storeId}
{COUNTRY_DOMAIN}: Este es tu Dominio por País de Rappi. Mira la lista de dominios por país.
Propiedades del Endpoint
Este recurso tiene las siguientes propiedades:
| Formato de respuesta | JSON |
| Requerimientos de autenticación | Token |
Parámetros
Este endpoint no permite parámetros adicionales.
Códigos de Respuesta
Estos son los posibles códigos de respuesta en este endpoint:
Ejemplo de Llamada
Este es un ejemplo de una llamada API usando este endpoint:
GET https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu/approved/251
Este es un ejemplo de la llamada:
final Integer storeId = 251; URL url = new URL(String.format("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu/approved/%s", storeId)); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", "Mozilla/5.0"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Accept", "application/json"); connection.setRequestProperty("x-authorization", "Bearer YOUR_TOKEN"); try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { StringBuilder response = new StringBuilder(); String responseLine; while ((responseLine = br.readLine()) != null) { response.append(responseLine.trim()); } System.out.println("Response body: " + response.toString()); } System.out.println("Response Code : " + connection.getResponseCode());
Ejemplo de Respuesta
Este endpoint regresa unicamente un código de respuesta.
401 Credenciales inválidas:
{ "message": "Not a valid token" }
GET menu/rappi/{storeId}
Utiliza este endpoint para obtener el último menú creado para una tienda en especifico.
URL del Endpoint
Utiliza esta URL para hacer llamadas con este endpoint:
https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/menu/rappi/{storeId}
{COUNTRY_DOMAIN}: Este es tu Dominio por País de Rappi. Mira la lista de dominios por país.{storeId}: Este es el identificador de la integración de tu tienda.
Propiedades del Endpoint
Este recurso tiene las siguientes propiedades:
| Formato de respuesta | JSON |
| Requerimientos de autenticación | Token |
Parámetros
Este endpoint no permite parámetros adicionales.
Códigos de Respuesta
Estos son los posibles códigos de respuesta en este endpoint:
Ejemplo de Llamada
Este es un ejemplo de una llamada API usando este endpoint:
GET https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu/rappi/251
Este es un ejemplo de la llamada:
final Integer storeId = 251; URL url = new URL(String.format("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu/rappi/%s", storeId)); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", "Mozilla/5.0"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Accept", "application/json"); connection.setRequestProperty("x-authorization", "Bearer YOUR_TOKEN"); try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { StringBuilder response = new StringBuilder(); String responseLine; while ((responseLine = br.readLine()) != null) { response.append(responseLine.trim()); } System.out.println("Response body: " + response.toString()); } System.out.println("Response Code : " + connection.getResponseCode());
Ejemplo de Respuesta
Este es un ejemplo de la respuesta "200 Llamada exitosa":
{ "storeId": "900111978", "items": [ { "name": "Naked Cake con frutos", "description": "Naked cake decorado con frutos. Cubierta de trufa derretida (ganache) y decorada con frutos del bosque.", "sku": "8569874", "type": "PRODUCT", "price": 75.0, "category": { "id": "3", "name": "Tortas", "minQty": 0, "maxQty": 0, "sortingPosition": 0 }, "imageUrl": "https://image.com/image1.jpg", "children": [ { "name": "Chocolate", "description": "", "sku": "8569874-159", "type": "TOPPING", "price": 0.0, "category": { "id": "1", "name": "Sabor", "minQty": 0, "maxQty": 1, "sortingPosition": 0 }, "imageUrl": "https://image.com/image10.jpg", "children": [], "rappiIds": ["340948822"], "sortingPosition": 1, "maxLimit": 1 } ], "rappiIds": ["2135527868"], "sortingPosition": 0, "maxLimit": 1 }, { "name": "Snowman", "description": "Linda lata de Snowman con productos variadosIncluye:Galletas mantequilla 350 gr, 6 brookies y 4 trufas de brownie.", "sku": "856887", "type": "PRODUCT", "price": 75.0, "category": { "id": "9", "name": "Navidad", "minQty": 0, "maxQty": 0, "sortingPosition": 0 }, "imageUrl": "https://image.com/image2.jpg", "children": [], "rappiIds": ["2135524472"], "sortingPosition": 0, "maxLimit": 1 } ] }
Este es un ejemplo de la respuesta "401 Credenciales inválidas":
{ "message": "Not a valid token" }
El detalle de lo que significa cada atributo esta dentro de la sección Get Menu.
