Gestionar Disponibilidad
La API de Rappi te permite configurar la disponibilidad de los elementos de tus menús y tus tiendas, utilizando el recurso items.
Las siguientes secciones te guían a través del proceso de configuración de estas opciones para tu integración.
Disponibilidad del Artículo
Configura la disponibilidad de los elementos de tu menú y desactívalos cuando estén agotados, para evitar pedidos entrantes que contengan productos no disponibles.
La API de Rappi te permite configurar la disponibilidad mediante:
- Item SKU: Este es el SKU que proporcionaste para el artículo a Rappi cuando lo agregaste al menú.
- Item ID: Este es el identificador que Rappi le proporcionó al agregarlo al menú.
Consultar la Disponibilidad por SKU
Utiliza el endpoint POST availability/items/status para consultar la disponibilidad de tus artículos por SKU de artículo.
Para consultar la disponibilidad de tus artículos por SKU de artículo:
Realiza una solicitud POST a la siguiente URL y agrega unJSON al cuerpo de la solicitud con los siguientes objetos.
URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/items/status
{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.
Este es un ejemplo del JSON en el cuerpo de la solicitud:
{ "store_id": "900144512", "item_ids": ["7713", "2668", "3395", "5685"] }
Note
Los valores de este objeto JSON no son datos reales. Asegúrate de reemplazarlos con tus propios datos cuando realices solicitudes de API.
Este es un ejemplo JSON de la respuesta:
[ { "item_id": 2136411305, "item_type": "PRODUCT", "stock_out_state": "AVAILABLE" }, { "item_id": 2136411307, "item_type": "PRODUCT", "stock_out_state": "AVAILABLE" }, { "item_id": 2136411304, "item_type": "PRODUCT", "stock_out_state": "AVAILABLE" }, { "item_id": 2136411306, "item_type": "PRODUCT", "stock_out_state": "AVAILABLE" } ]
Consultar la Disponibilidad por ID de Rappi
Utiliza el endpoint POST availability/items/rappi/status para consultar la disponibilidad de tus artículos por SKU de artículo.
Para consultar la disponibilidad de tus artículos por SKU de artículo:
Realiza una solicitud POST a la siguiente URL y agrega un JSON al cuerpo de la solicitud con los siguientes objetos.
URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/items/rappi/status
{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.
Este es un ejemplo del JSON en el cuerpo de la solicitud:
{ "store_id": "900144512", "item_ids": ["2136411304"] }
Note
Los valores de este objeto JSON no son datos reales. Asegúrate de reemplazarlos con tus propios datos cuando realices solicitudes de API.
Este es un ejemplo JSON de la respuesta:
[ { "item_id": 2136411304, "item_type": "PRODUCT", "stock_out_state": "AVAILABLE" } ]
Configuración de la Disponibilidad por SKU
Utiliza el endpoint PUT availability/stores/items para configurar la disponibilidad de tus artículos por SKU de artículo.
Para configurar la disponibilidad de tus artículos por SKU de artículo:
Realiza una solicitud PUT a la siguiente URL y agrega unJSON al cuerpo de la solicitud con los siguientes objetos.
URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/token
{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.
Este es un ejemplo del JSON en el cuerpo de la solicitud:
[ { "store_integration_id": "999", "items": { "turn_on": ["1111", "2222", "3333"], "turn_off": ["5555"] } } ]
Note
Los valores de este objeto JSON no son datos reales. Asegúrate de reemplazarlos con tus propios datos cuando realices solicitudes de API. Puedes agregar más elementos a los objetos turn_on y turn_off en el JSON separados por una coma. Si solo deseas activar o desactivar elementos en su solicitud, elimina el otro objeto de tu JSON en consecuencia.
El sistema regresa una respuesta JSON con el mensaje de confirmación Items successfully updated.
Configuración de la Disponibilidad por ID de Rappi
Utiliza el endpoint PUT availability/stores/items/rappi para configurar la disponibilidad de sus artículos por ID de artículo.
Para configurar la disponibilidad de tus artículos por ID de artículo:
Realiza una solicitud PUT a la siguiente URL y agrega unJSON al cuerpo de la solicitud con los siguientes objetos.
URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores/items/rappi
{COUNTRY_DOMAIN}: Este es su dominio de país de Rappi. Ver la lista de dominios de países.
Este es un ejemplo del JSON en el cuerpo de la solicitud:
[ { "store_integration_id": "999", "items": { "turn_on": [1111, 2222, 3333], "turn_off": [5555] } } ]
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 a los objetos turn_on y turn_off en el JSON separados por una coma. Si solo deseas activar o desactivar elementos en tu solicitud, elimina el otro objeto de tu JSON en consecuencia.
El sistema devuelve una respuesta JSON con el mensaje de estado de confirmación "Items successfully updated".
Estado de la tienda
Utiliza el endpoint POST availability/stores para consultar la disponibilidad de tus tiendas.
Para consultar la disponibilidad de tus tiendas:
Realiza una solicitud POST a la siguiente URL y agrega un JSON al cuerpo de la solicitud con la siguiente estructura.
URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores
{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.
Este es un ejemplo del JSON en el cuerpo de la solicitud:
[900105433]
Nota
- Los valores de este
JSONno son datos reales. Asegúrate de reemplazarlos con tus datos cuando realices solicitudes de API. - Puedes agregar más tiendas en el
JSONseparados por una coma. - Puedes consultar hasta máximo de 100 tiendas en tu
JSON.
Este es un ejemplo JSON de la respuesta:
{ "900105433": false }
Health Check
Es un proceso que corre cada minuto para validar el estado de cada tienda asociada a un webhook. Cuando una tienda no está disponible se apaga hasta que vuelva a estarlo
Important
Este proceso solo estará disponible para aquellas tiendas que estén utilizando el webhook NEW_ORDER y se suscriban a PING
Funcionamiento
Se enviará un POST a la url configurada en el webhook con el siguiente formato
{ "store_id": 999 }
Donde store_id representa el id de la tienda configurada de su lado (external id)
La respuesta debe tener el siguiente formato
{ "status": "OK", "description": "Tienda prendida" }
- status: este campo es requerido, si viene null o con un valor distinto a OK se considerará que la tienda no está disponible
- description: este campo es opcional.
¿COMO FUNCIONA PING?
OBJETIVO Detectar cuando una tienda pierde conectividad y apagarla al ocurrir un cambio de ping de positivo a negativo, con el fin de prevenir futuras cancelaciones por consecuencia de dicha falta de conectividad en la tienda para aceptar el take. Este Ping debe estar implementado para cada tienda y no en un servidor central como general.
FUNCION El monitor recibe una notificación cada vez que una tienda pase de recibir ping positivo a negativo. Al darse esto, inmediatamente se apagará preventivamente la tienda en cuestión.
- El ping, cuando se tiene configurado un webhook, se envía cada 3 minutos, en caso de no tener webhook y utilizar Pulling de ordenes, se evaluará cada 3 minutos.
- Dependiendo del numero de ping negativos configurados, se genera un incidente de Ping Negativo.
- El rango de tiempo configurado para el tiempo de gracia será de 1 minuto.
- La cantidad máxima de intentos permitidos por falta de respuesta para una tienda actualmente está establecida en 2 para todos los aliados.
- Solo después de validar el tiempo de intermitencia, se genera el incidente de perdida o recuperación de la conectividad de acuerdo a la definición del mismo.
Importante
Si no utilizas webhooks, la evaluacion cada 3 minutos se hace sobre la ultima vez que descargaste ordenes, el tiempo de gracia para determinar si es un ping negativo es de 1 minuto
Importante
Existen tiendas que tiene horario fraccionado durante el día, por tanto, este horario se debe tener en cuenta para la generación del ping
Importante
Es impórtate aclarar que NO aplica para las tiendas que tienen horario de 24 horas
REGLAS PING
Estas son las siguientes reglas que tenemos en cuenta
PING NEGATIVO Esta regla crea un incidente de Conectividad Perdida, este incidente esta Status: Abierto en espera de un Ping Positivo.
PING POSITIVO En esta regla se dispara una alerta que busca el incidente de Conectividad perdida Status: Abierto para cambiarlo a Status: Cerrado.
Disponibilidad de la tienda (asincrono)
Utiliza el endpoint PUT availability/stores para configurar la disponibilidad de tus tiendas.
Importante
Este es un método asincrono por lo tanto el resultado de la operación no vendrá en la respuesta. Usando este enfoque se puede recibir el nuevo estado de la tienda a través del webhoook STORE_CONNECTIVITY. Ver Store Connectivity
Si se necesita una respuesta instantanea se debe usar el endpoint sincrono. Ver Disponibilidad de la tienda (sincrono)
Para configurar la disponibilidad de tus tiendas:
Realiza una solicitud PUT a la siguiente URL y agrega un JSON al cuerpo de la solicitud con los siguientes objetos.
URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores
{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.
Este es un ejemplo del JSON en el cuerpo de la solicitud:
{ "turn_on": ["2222"], "turn_off": ["333", "444"] }
Nota
- Los valores de este
JSONno son datos reales. Asegúrate de reemplazarlos con tus datos cuando realices solicitudes de API. - Puedes agregar más elementos a los objetos
turn_onyturn_offen elJSONseparados por una coma. - Si solo deseas activar o desactivar elementos en tu solicitud, elimina el otro objeto de tu
JSONen consecuencia.
El sistema devuelve una respuesta JSON con el mensaje de confirmación "Stores successfully updated".
Disponibilidad de la tienda masivo (asincrono)
Utiliza el endpoint PUT availability/stores/enable/massive para configurar la disponibilidad de tus tiendas.
Importante
Este es un método asincrono por lo tanto el resultado de la operación no vendrá en la respuesta. Usando este enfoque se puede recibir el nuevo estado de la tienda a través del webhoook STORE_CONNECTIVITY. Ver Store Connectivity
Es posible que una tienda no pueda ser encendida o apagada debido a que está suspendida o no publicada en la app de Rappi
Para configurar la disponibilidad de tus tiendas:
Realiza una solicitud PUT a la siguiente URL y agrega un JSON al cuerpo de la solicitud con los siguientes objetos.
URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores/enable/massive
{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.
Este es un ejemplo del JSON en el cuerpo de la solicitud:
{ "stores": [ { "store_id": "12312", "is_enabled": true }, { "store_id": "12312", "is_enabled": false } ] }
Disponibilidad de la tienda (sincrono)
Utiliza el endpoint PUT availability/stores/enable para configurar la disponibilidad de tus tiendas.
Importante
Este es un método sincrono por lo tanto el resultado de la operación vendrá directamente en la respuesta
Tenga en cuenta que se permite un máximo de 300 tiendas por request. Si necesita enviar mas stores utilice el metodo asincrono. Ver Disponibilidad de la tienday (asincrono)
Es posible que una tienda no pueda ser encendida o apagada debido a que está suspendida o no publicada en la app de Rappi
Para configurar la disponibilidad de tus tiendas:
Realiza una solicitud PUT a la siguiente URL y agrega un JSON al cuerpo de la solicitud con los siguientes objetos.
URL: https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores/enable
{COUNTRY_DOMAIN}: Este es tu dominio de país de Rappi. Ver la lista de dominios de países.
Este es un ejemplo del JSON en el cuerpo de la solicitud:
{ "stores": [ { "store_id": "12312", "is_enabled": true }, { "store_id": "12312", "is_enabled": false } ] }
Este es un ejemplo del JSON de respuesta:
{ "results": [ { "store_id": 90774, "is_enabled": false, "operation_result": false, "operation_result_type": "suspended", "suspended_reason": "suspended due to cancelled orders", "suspended_at": "2022-04-11T20:23:00.00Z", "suspended_time": 60 } ] }
