java node python go

Rappi API v1.24.5

Rappi API v1.24.5 incluye todos los recursos, endpoints y metodos que permiten la integración con la aplicación de Rappi.

La tabla siguiente contiene todos los recursos disponibles de nuestra API:

Recurso API Endpoint Descripción del Endpoint
Menús GET menu Devuelve la colección de menús creados por el aliado autenticado
POST menu Añade o actualiza un menú en una tienda
GET menu/approved/{storeId} Devuelve el estado de aprobación actual de un menú
GET menu/rappi/{storeId} Devuelve el ultimo menú creado para una tienda
Ordenes GET orders Devuelve una lista de nuevas ordenes creadas
GET orders/status/sent Devuelve una lista de nuevas ordenes creadas en estado SENT
PUT orders/{orderId}/take/{cookingTime} Toma una orden para ser preparada
PUT orders/{orderId}/reject Rechaza una orden
POST orders/{orderId}/ready-for-pickup Confirma que la orden esta lista para ser recogida
GET orders/{orderId}/events Devuelve los ultimos eventos de las ordenes
Tiendas GET stores-pa Devuelve la lista de tiendas del cliente autenticado
PUT stores-pa/{storeId}/status Actualiza una tienda a integrada o no integrada
Disponibilidad PUT availability/stores/items Controla la disponibilidad de los articulos en la aplicación por su SKU
PUT availability/stores/items/rappi Controla la disponibilidad de los articulos en la aplicación por su ID
PUT availability/stores Controla la disponibilidad de la tienda en la aplicación
Webhooks GET webhook/{event} Regresa los Webhooks configurados de todas las tiendas del cliente autenticado
PUT webhook/{event}/add-stores Agrega tiendas al evento del webhook especificado
PUT webhook/{event}/change-url Cambia la url para una lista de stores
POST webhook Crea un nuevo Webhook para una lista de tiendas del cliente autenticado
DELETE webhook/{event}/remove-stores Elimina stores del webhook especificado
PUT webhook/{event}/reset-secret Reinicia el secret y genera uno nuevo al cliente autenticado
PUT webhook/{event}/change-status Habilita o deshabilita Webhooks para una lista de tiendas

Introducción

Para comenzar a usar nuestra API, necesitas registrarte como Rappi Aliado.

Despues de registrarte como Rappi Aliado, recibirás tus Credenciales de Rappi que se componen de la siguiente manera:

Utiliza estas credenciales para generar tu Token de Acceso con el endpoint POST token. Después de generar tu token, puedes comenzar a usar nuestra API.

Autenticación

Para autenticarte al hacer una llamada a Rappi API, se requiere un Token de Acceso

Rappi API usa autenticación Bearer como metodo de autenticación HTTP para las llamadas a la API.

Para hacer llamadas API, envía el token en un customer header para interactuar con los recursos protegidos.

Rappi utiliza los siguientes esquemas para la autenticación Bearer:

Key Value
x-authorization bearer [access_token]

POST token

Usa este endpoint para generar un Token de Acceso. Este Token te permite autenticarte al hacer una llamada API.

URLs de los endpoints

Utiliza las siguientes URLs para hacer llamadas con este endpoint:

Propiedades del Endpoint

Este recurso tiene las siguientes propiedades:

Formato de respuesta JSON
Requerimientos del body para llamadas JSON

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://rests-integrations-dev.auth0.com/oauth/token

Este es un ejemplo de la llamada:

{
   "client_id":"7iCfjZCO4bTns3OjqLK4de2GV3sp6Ymd",
   "client_secret":"40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW",
   "audience":"https://int-public-api-v2/api",
   "grant_type":"client_credentials"
}
URL url = new URL("https://rests-integrations-dev.auth0.com/oauth/token");

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.setDoOutput(true);

final String jsonInputString = "{\n" +
                "   \"client_id\":\"7iCfjZCO4bTns3OjqLK4de2GV3sp6Ymd\",\n" +
                "   \"client_secret\":\"40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW\",\n" +
                "   \"audience\":\"https://int-public-api-v2/api\",\n" +
                "   \"grant_type\":\"client_credentials\"\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());
import requests

url = "https://rests-integrations-dev.auth0.com/oauth/token"

payload = "{ \"client_id\":\"7iCfjZCO4bTns3OjqLK4de2GV3sp6Ymd\"," \
         "\"client_secret\":\"40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW\"," \
         "\"audience\":\"https://int-public-api-v2/api\"," \
         "\"grant_type\":\"client_credentials\"} "
headers = {
   'Content-Type': 'application/json',
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text.encode('utf8'))

var https = require('https');

var options = {
    'method': 'POST',
    'hostname': 'rests-integrations-dev.auth0.com',
    'path': '/oauth/token?',
    'headers': {
        'Content-Type': 'application/json',
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
        "client_id":"7iCfjZCO4bTns3OjqLK4de2GV3sp6Ymd",
        "client_secret":"40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW",
        "audience":"https://int-public-api-v2/api",
        "grant_type":"client_credentials"
    });

req.write(postData);

req.end();
package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "strings"
)

func main() {

    url := "https://rests-integrations-dev.auth0.com/oauth/token"
    method := "POST"

    payload := strings.NewReader("{\n   " +
        "\"client_id\":\"7iCfjZCO4bTns3OjqLK4de2GV3sp6Ymd\",\n   " +
        "\"client_secret\":\"40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW40iFFYJV9A1LrVmJsaIeARW\",\n   " +
        "\"audience\":\"https://int-public-api-v2/api\",\n   " +
        "\"grant_type\":\"client_credentials\"\n}")

    client := &http.Client{
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerido Descripción
client_id
string
required Id de cliente de tus credenciales de Rappi.
client_secret
string
required Secret de cliente de tus credenciales de Rappi.
audience
string
required Identificador de la API de Rappi.
grant_type
string
required Permisos para la llamada API.

Ejemplo de Respuesta:

Este es un ejemplo de la llamada:

{
   "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpeyJhbGciOiJIUzI1NiIsInR5cCI6IkpeyJhbGciOiJIUzI1NiIsInR5cCI6Ikp",
   "scope":"integration:health-check",
   "expires_in":86400,
   "token_type":"Bearer"
}

Esta tabla describe los objetos que contiene la respuesta del ejemplo:

Respuesta Descripción
access_token
string
Token de acceso para los endpoints protegidos.
scope
string
Alcance otorgado por el token de acceso.
expires_in
integer
Tiempo de vida del token en segundos.
token_type
string
Tipo de token.

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());
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu"

payload = {}
headers = {
    'Content-Type': 'application/json',
    'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
var https = require('https');

var options = {
  'method': 'GET',
  'hostname': 'microservices.dev.rappi.com',
  'path': '/api/v2/restaurants-integrations-public-api/menu',
  'headers': {
      'Content-Type': 'application/json',
      'x-authorization': 'bearer YOUR_TOKEN'
  }
};

var req = https.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
      chunks.push(chunk);
  });

  res.on("end", function (chunk) {
      var body = Buffer.concat(chunks);
      console.log(body.toString());
  });

  res.on("error", function (error) {
      console.error(error);
  });
});

req.end();
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

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": [],
                        "availableFrom": null,
                        "availableTo": null,
                        "rappiIds": [
                            "340948822"
                        ],
                        "sortingPosition": 1,
                        "maxLimit": 1
                    }
                ],
                "availableFrom": null,
                "availableTo": null,
                "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": [],
                "availableFrom": null,
                "availableTo": null,
                "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
storeId
string
Identificador de la tienda en la aplicación de Rappi.
items
array of objects
Lista de productos dentro del menú de la tienda.
items.name
string
Nombre del producto en el menú.
items.description
string
Descripción del producto en el menú.
items.sku
string
SKU que el aliado asigna al producto en el menú.
items.type
string
Tipo de producto en el menú, en este caso solamente puede ser PRODUCT
items.price
integer
Precio del producto en el menú.
items.imageUrl
string
Url de la imagen del producto en el menú
items.availableFrom
string
Fecha de inicio en la que el producto esta disponible en el menú
items.availableTo
string
Fecha final en la que el producto esta disponible en el menú
items.rappiIds
array of string
Lista de los identificadores que Rappi le da al producto
items.sortingPosition
integer
La posición del producto en su categoría en el menú
items.maxLimit
integer
Indicador máximo, es requerido solo si el tipo es topping
items.category
string
Categoría a la cual pertenece el producto en el menú
items.category.id
string
Id de la categoría
items.category.name
string
Nombre de la categoría
items.category.minQty
integer
La cantidad maxima de elementos que se pueden pedir en esta categoría
items.category.maxQty
integer
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.sortingPosition
integer
Es la posición de la categoría en el menu
items.children
array of objects
Lista de toppings del producto
items.children.name
string
Nombre del topping en el menú.
items.children.description
string
Descripción del toppin en el menú.
items.children.sku
string
SKU que el aliado asigna al topping en el menú.
items.children.type
string
Tipo de topping en el menú, en este caso solamente puede ser TOPPING
items.children.price
integer
Precio del topping en el menú.
items.children.imageUrl
string
Url de la imagen del topping en el menú
items.children.availableFrom
string
Fecha de inicio en la que el topping esta disponible en el menú
items.children.availableTo
string
Fecha final en la que el topping esta disponible en el menú
items.children.rappiIds
array of string
Lista de los identificadores que Rappi le da al topping
items.children.sortingPosition
integer
La posición del topping en su categoría en el menú
items.children.maxLimit
integer
Indicador máximo, es requerido solo si el tipo es topping
items.children.category
string
Categoría a la cual pertenece el topping en el menú
items.children.category.id
string
Id de la categoría
items.children.category.name
string
Nombre de la categoría
items.children.category.minQty
integer
La cantidad maxima de elementos que se pueden pedir en esta categoría
items.children.category.maxQty
integer
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.sortingPosition
integer
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
message
string
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"
    },
    {
      "category": {
        "id": "2090019639",
        "maxQty": 0,
        "minQty": 0,
        "name": "Pizzas",
        "sortingPosition": 1
      },
      "children": [],
      "name": "Hawaiian Pizza",
      "price": 17000,
      "sku": "2135092198",
      "sortingPosition": 1,
      "type": "PRODUCT"
    }
  ]
}
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" +
        "    },\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" +
        "    }\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());
var https = require('https');

var options = {
    'method': 'POST',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/menu',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify(
    {
        "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": "2135092145",
                        "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": "2135092145",
                        "sortingPosition": 1,
                        "type": "TOPPING",
                        "maxLimit": 1
                    }
                ],
                "name": "Grilled Chicken Burger",
                "price": 14000,
                "sku": "2135092145",
                "sortingPosition": 0,
                "type": "PRODUCT"
            },
            {
                "category": {
                    "id": "2090019639",
                    "maxQty": 0,
                    "minQty": 0,
                    "name": "Pizzas",
                    "sortingPosition": 1
                },
                "children": [],
                "name": "Hawaiian Pizza",
                "price": 17000,
                "sku": "2135092145",
                "sortingPosition": 1,
                "type": "PRODUCT"
            }
        ]
    }
);

req.write(postData);

req.end();
 import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu"

payload = "{\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" \
            "    },\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" \
            "    }\n" \
            "  ]\n" \
            "}\n"
headers = {
    'Content-Type': 'application/json',
    'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu"
    method := "POST"

    payload := strings.NewReader("{\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" +
        "    },\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" +
        "    }\n" +
        "  ]\n" +
        "}\n")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerido Descripción
storeId
string
required Identificador de la tienda en la aplicación de Rappi.
items
array of objects
required Lista de productos dentro del menú de la tienda.
items.name
string
required Nombre del producto en el menú.
items.description
string
required Descripción del producto en el menú.
items.sku
string
required SKU que el aliado asigna al producto en el menú.
items.type
string
required Tipo de producto en el menú, en este caso solamente puede ser PRODUCT
items.price
integer
required Precio del producto en el menú.
items.imageUrl
string
optional Url de la imagen del producto en el menú
items.availableFrom
string
optional Fecha de inicio en la que el producto esta disponible en el menú
items.availableTo
string
optional Fecha final en la que el producto esta disponible en el menú
items.rappiIds
array of string
optional Lista de los identificadores que Rappi le da al producto
items.sortingPosition
integer
optional La posición del producto en su categoría en el menú
items.maxLimit
integer
optional Indicador máximo, es requerido solo si el tipo es topping
items.category
string
required Categoría a la cual pertenece el producto en el menú
items.category.id
string
required Id de la categoría
items.category.name
string
required Nombre de la categoría
items.category.minQty
integer
required La cantidad maxima de elementos que se pueden pedir en esta categoría
items.category.maxQty
integer
required 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.sortingPosition
integer
required Es la posición de la categoría en el menu
items.children
array of objects
optional Lista de toppings del producto
items.children.name
string
required Nombre del topping en el menú.
items.children.description
string
required Descripción del toppin en el menú.
items.children.sku
string
required SKU que el aliado asigna al topping en el menú.
items.children.type
string
required Tipo de topping en el menú, en este caso solamente puede ser TOPPING
items.children.price
integer
required Precio del topping en el menú.
items.children.imageUrl
string
optional Url de la imagen del topping en el menú
items.children.availableFrom
string
optional Fecha de inicio en la que el topping esta disponible en el menú
items.children.availableTo
string
optional Fecha final en la que el topping esta disponible en el menú
items.children.rappiIds
array of string
optional Lista de los identificadores que Rappi le da al topping
items.children.sortingPosition
integer
required La posición del topping en su categoría en el menú
items.children.maxLimit
integer
required Indicador máximo, es requerido solo si el tipo es topping
items.children.category
string
required Categoría a la cual pertenece el topping en el menú
items.children.category.id
string
required Id de la categoría
items.children.category.name
string
required Nombre de la categoría
items.children.category.minQty
integer
required La cantidad maxima de elementos que se pueden pedir en esta categoría
items.children.category.maxQty
integer
required 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.sortingPosition
integer
required 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",
     "availableFrom": null,
     "availableTo": null,
     "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",
     "availableFrom": null,
     "availableTo": null,
     "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
message
string
Mensaje de error al enviar el menu. El mensaje por defecto es "The submitted menu has errors."
errors
array of objects
Lista de errores encontrados en el menu.
errors.reason
string
Descripción del error encontrado en el menu. Los distintos mensajes los podemos encontrar en "VALIDACIONES SOBRE EL MENU RECIBIDO"
errors.relatedItems
array 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
message
string
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
message
string
Tienda no encontrada

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/menu/approved/251',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu/approved/251"

payload = {}
headers = {
    'Content-Type': 'application/json',
    'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu/approved/251"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

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}

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/menu/rappi/251',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu/rappi/251"

payload = {}
headers = {
    'Content-Type': 'application/json',
    'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/menu/rappi/251"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

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": [],
                    "availableFrom": null,
                    "availableTo": null,
                    "rappiIds": [
                        "340948822"
                    ],
                    "sortingPosition": 1,
                    "maxLimit": 1
                }
            ],
            "availableFrom": null,
            "availableTo": null,
            "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": [],
            "availableFrom": null,
            "availableTo": null,
            "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.

Ordenes

Los recursos de órdenes te permiten interactuar con las órdenes de tus tiendas.

La siguiente tabla describe los diferentes contenidos del recurso órdenes:

Recurso Descripción
GET orders Regresa una lista de nuevas órdenes creadas.
GET orders/status/sent Regresa una lista de nuevas órdenes creadas en estado SENT
PUT orders/{orderId}/take/{cookingTime} Toma una orden para comenzar su preparación.
PUT orders/{orderId}/reject Rechaza una orden.
POST orders/{orderId}/ready-for-pickup Confirma que la orden está lista para ser recogida.
GET orders/{orderId}/events Regresa los últimos eventos de una orden.

GET orders

Usa este endpoint para obtener una lista con las nuevas órdenes para las tiendas del aliado autenticado.

URL del Endpoint

Usa esta URL para hacer una llamada con este endpoint:

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

{COUNTRY_DOMAIN}: Este es tu Dominio por País de Rappi. Mira la lista de Dominios por país.

Propiedades del Endpoint

Este recurso tienes las siguiente propiedades:

Formato de respuesta JSON
Requerimientos de autenticación Token

Parámetros

Este endpoint acepta los siguientes parámetros opcionales:

Parámetro Descripción
{storeId} Regresa únicamente las órdenes de una tienda

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/orders

Este es un ejemplo de la llamada:

URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/orders',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta

Este es un ejemplo de la respuesta:

[
  {
    "order_detail": {
      "order_id": "392625",
      "cooking_time": 10,
      "min_cooking_time": 5,
      "max_cooking_time": 20,
      "created_at": "2019-04-10T11:12:57.000Z",
      "delivery_method": "delivery",
      "payment_method": "cc",
      "delivery_information": {
        "city": "Ciudad de México",
        "complete_address": "Nombre de la calle 5050. Barrio. 12345. Ciudad De México",
        "street_number": "5050",
        "neighborhood": "Barrio",
        "complement": "Portón verde",
        "postal_code": "12345",
        "street_name": "Nombre de la calle"
      },
      "billing_information": {
        "address": "148  Davis Court",
        "billing_type": "Bill",
        "document_number": "32432342",
        "document_type": "DNI",
        "email": "client@gmail.com",
        "name": "John Doe",
        "phone": "43333222"
      },
      "totals": {
        "total_products": 204000,
        "total_discounts": 173685,
        "total_order": 204180,
        "total_discount_by_partner": 40180,
        "total_to_pay": 0,
        "discount_by_support": 0,
        "charges": {
          "shipping": 50,
          "service_fee": 100
        },
        "other_totals": {
          "tip": 30,
          "total_rappi_pay": 0,
          "total_rappi_credits": 0
        }
      },
      "items": [
        {
          "sku": "1234",
          "id": "2089918083",
          "name": "Chicken and Apple Salad",
          "type": "PRODUCT",
          "comments": "No vinegar",
          "price": 28900,
          "quantity": 3,
          "subitems": [
            {
              "sku": "11",
              "id": "10005260",
              "name": "Burrata Cheese",
              "type": "TOPPING",
              "price": 13500,
              "quantity": 1
            }
          ]
        },
        {
          "id": "2089918082",
          "name": "Seafood Salad",
          "comments": "",
          "price": 34900,
          "quantity": 2,
          "subitems": [
            {
              "id": "9928277",
              "name": "With white vinaigrette",
              "price": 0,
              "quantity": 1
            },
            {
              "id": "10005257",
              "name": "Ricotta Cheese",
              "price": 3500,
              "quantity": 1
            }
          ]
        }
      ],
      "delivery_discount": {
        "total_percentage_discount": 100,
        "total_value_discount": 50
      },
      "discounts": [
        {
          "value": 7600,
          "description": "Envío gratis",
          "title": "Envío gratis",
          "product_id": null,
          "sku": null,
          "type": "shipping",
          "raw_value": 100,
          "value_type": "percentage",
          "max_value": null,
          "includes_toppings": false,
          "percentage_by_rappi": 100,
          "percentage_by_partners": 0,
          "amount_by_rappi": 7600,
          "amount_by_partner": 0,
          "discount_product_units": 0,
          "discount_product_unit_value": null
        },
        {
          "value": 100,
          "description": "Disfruta de 20% de descuento en productos seleccionados.",
          "title": "Disfruta de 20% de descuento en productos seleccionados.",
          "product_id": 2089918082,
          "sku": 2089918082,
          "type": "offer_by_product",
          "raw_value": 20,
          "value_type": "percentage",
          "max_value": null,
          "includes_toppings": false,
          "percentage_by_rappi": 0,
          "percentage_by_partners": 100,
          "amount_by_rappi": 0,
          "amount_by_partner": 100,
          "discount_product_units": 1,
          "discount_product_unit_value": 100
        }
      ]
    },
    "customer": {
      "first_name": "John",
      "last_name": "Doe",
      "phone_number": "3163535",
      "document_number": "34545678",
      "user_type": "USER_VIP"
    },
    "store": {
      "internal_id": "30000011",
      "external_id": "123445",
      "name": "Store 1"
    }
  }
]

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto en la respuesta Descripción del objeto
order_detail
array of objects
Propiedades de los detalles de la orden.
order_detail.order_id
string
Identificador de la orden.
order_detail.coooking_time
integer
Tiempo de preparación estimado para la orden.
order_detail.min_cooking_time
integer
Tiempo mínimo de preparación en minutos para esta orden.
order_detail.max_cooking_time
integer
Tiempo máximo de preparación en minutos para esta orden.
order_detail.created_at
string
Fecha en la que se creó la orden.
order_detail.delivery_method
string, enumerable
Método de entrega de la orden. Opciones disponibles: delivery,marketplace, pickup.
order_detail.payment_method
string, enumerable
Metodo de pago de la orden. Opciones disponibles: rappi_pay, cc, cash, paypal, edenred, webpay, masterpass, dc, pos_terminal, elo, sodexo, vale_r, ticket_r, alelo, visa_checkout,google_pay, apple_pay, rappicorp, PSE, PIX, unknown. (Es importante tener en cuenta que Rappi constantemente acepta nuevos métodos de pago, por lo tanto esta lista puede variar en el tiempo y no es necesario validarla.)
order_detail.delivery_information
object
Propiedades de la dirección de entrega.
order_detail.delivery_information.city
string
Ciudad de la dirección de entrega
order_detail.delivery_information.complete_address
string
Dirección de entrega con todos los campos
order_detail.delivery_information.street_number
string
Numero de la calle
order_detail.delivery_information.neighborhood
string
Barrio de la dirección de entrega
order_detail.delivery_information.complement
string
Información adicional de la dirección de entrega
order_detail.delivery_information.postal_code
string
Código postal establecido para la dirección
order_detail.delivery_information.street_name
string
Nombre de la calle establecido para la dirección de entrega
order_detail.billing_information
array of objects
Propiedades de facturación del pago .
order_detail.billing_information.address
string
Dirección de entrega de la orden.
order_detail.billing_information.billing_type
string
Tipo de cobro de la orden.
order_detail.billing_information.document_number
string
Número de documento del cliente.
order_detail.billing_information.document_type
string
Tipo de documento del cliente.
order_detail.billing_information.email
string
Email establecido para recibir información de facturación.
order_detail.billing_information.name
string
Nombre establecido para la facturación.
order_detail.billing_information.phone
string
Teléfono establecido para la facturación.
order_detail.totals
array of objects
Propiedades del total de la orden.
order_detail.totals.total_products
integer
Total de los productos sin descuentos.
order_detail.totals.total_discounts
integer
Total de productos sin descuento en la orden.
order_detail.totals.total_order
integer
Cantidad total que el restaurante recibe.
Cuando el metodo de entrega es marketplace este campo incluye propina y cargos de entrega.
Para otros métodos de entrega, este campo contiene solo el valor total de todos los productos.
En todos los casos, este campo incluye los descuentos asumidos por el restaurante.
order_detail.totals.total_to_pay
integer
El total que el usuario paga al repartidor en efectivo. Aplica únicamente cuando el metodo de entrega es marketplace o pickup, y el método de pago es: cash.
order_detail.totals.discount_by_support
integer
Descuento aplicado al usuario por el equipo de soporte de Rappi.
order_detail.totals.charges
array of objects
Propiedades de cargos adicionales de la orden .
order_detail.totals.charges.shipping
integer
Total de cargos de envío .
order_detail.totals.charges.service_fee
integer
Cargos del servicio de Rappi
order_detail.totals.other_totals
array of objects
Otros cargos incluidos en esta orden.
order_detail.totals.other_totals.tip
integer
Propina para el repartidor.
order_detail.totals.other_totals.total_rappi_pay
integer
Total pagado usando Rappi Pay.
order_detail.totals.othet_totals.total_rappi_credits
integer
Total pagado usando Rappi Creditos .
order_detail.items
array of objects
Propiedades de los artículos que contiene la orden.
order_detail.items.sku
string
SKU del artículo en el menú. El aliado asigna su propio SKU al artículo.
order_detail.items.id
string
Identificador del artículo en la orden.
order_detail.items.name
string
Nombre del artículo en la orden.
order_detail.items.type
string, enumerable
Tipo de artículo. Opciones disponibles:
product, o topping.
order_detail.items.comments
array
Comentarios del usuario para un artículo en la orden.
order_detail.items.price
integer
Precio unitario del artículo sin descuento.
order_detail.items.quantity
integer
Cantidad especificada del artículo en la orden.
order_detail.items.subitems
array of objects
Propiedades de los subartículos en la orden.
order_detail.items.subitems.sku
string
SKU del subartículo en el menú. El aliado asigna su propio SKU al artículo.
order_detail.items.subitems.id
string
Identificador que Rappi asigna al artículo.
order_detail.items.subitems.name
string
Nombre del subartículo en la orden.
order_detail.items.subitems.type
string, enumerable
Tipo del subartículo en la orden. Opciones disponibles: product, o topping.
order_detail.items.subitems.price
integer
Precio unitario del subartículo sin descuento
order_detail.items.subitems.quantity
integer
Cantidad especificada del subartículo en la orden.
order_detail.delivery_discount
integer
Propiedades de los descuentos en la entrega de la orden.
order_detail.delivery_discount.total_percentage_discount
integer
Porcentaje de descuento en la entrega de la orden.
order_detail.delivery_discount.total_value_discount
integer
Monto total del descuento en la entrega.
order_detail.customer
array of objects
Propiedades del usuario de Rappi que crea la orden. Solo se envían cuando el método de entrega es marketplace o si se solicita a Rappi que envíe esta información
order_detail.customer.first_name
string
Nombre del usuario de Rappi que crea la orden.
order_detail.customer.last_name
string
Apellido del usuario de Rappi que crea la orden.
order_detail.customer.phone_number
string
Número de teléfono del usuario de Rappi que crea la orden.
order_detail.customer.document_number
string
Número de documento del usuario de Rappi que crea la orden.
order_detail.customer.user_type
string
Si el usuario es VIP se envía el valor USER_VIP. Para el resto de los usuarios este campo no se envía.
order_detail.store
array of objects
Propiedades de la tienda que prepara la orden.
order_detail.store.internal_id
string
Identificador interno que Rappi asigna a la tienda.
order_detail.store.external_id
string
Identificador de la integración que Rappi asigna a la tienda.
order_detail.store.name
string
Nombre de la tienda que prepara la orden.
order_detail.discounts.value
integer
Valor del descuento reflejado en divisa.
order_detail.discounts.description
string
Mensaje descriptivo explicando el descuento.
order_detail.discounts.title
string
Nombre del descuento.
order_detail.discounts.product_id
integer
ID del producto si el descuento aplica producto.
order_detail.discounts.sku
string
SKU del producto si el descuento aplica producto.
order_detail.discounts.type
string
Indica el tipo del descuento.
order_detail.discounts.raw_value
integer
El valor del descuento, puede representar un porcentaje o un valor en divisa dependiendo del type_value.
order_detail.discounts.value_type
string, enumerable
El tipo de valor del descuento. Opciones disponibles: value, percentage.
order_detail.discounts.max_value
integer
Máximo valor en divisa a descontar.
order_detail.discounts.includes_toppings
boolean
Indica si el descuento se resta del total de producto con toppings o no.
order_detail.discounts.percentage_by_rappi
integer
El porcentaje del descuento asumido por Rappi.
order_detail.discounts.percentage_by_partners
integer
El porcentaje del descuento asumido por el aliado.
order_detail.discounts.amount_by_rappi
integer
Valor del descuento reflejado en divisa asumido por Rappi.
order_detail.discounts.amount_by_partner
integer
Valor del descuento reflejado en divisa asumido por el aliado.
order_detail.discounts.discount_product_units
integer
Cantidad de productos a las que aplicó el descuento.
order_detail.discounts.discount_product_unit_value
integer
Valor del descuento por unidad de producto.

GET orders status SENT

Usa este endpoint para obtener una lista con las nuevas órdenes en estado SENT para las tiendas del aliado autenticado.

URL del Endpoint

Usa esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/orders/status/sent

{COUNTRY_DOMAIN}: Este es tu Dominio por País de Rappi. Mira la lista de Dominios por país.

Propiedades del Endpoint

Este recurso tienes las siguiente propiedades:

Formato de respuesta JSON
Requerimientos de autenticación Token

Parámetros

Este endpoint acepta los siguientes parametros opcionales:

Parámetro Descripción
{storeId} Regresa únicamente las órdenes en estado SENT de una tienda

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/orders/status/sent

Este es un ejemplo de la llamada:

URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/status/sent");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/orders/status/sent',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/status/sent"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/status/sent"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta

Este es un ejemplo de la respuesta:

[
  {
    "order_detail": {
      "order_id": "392625",
      "cooking_time": 10,
      "min_cooking_time": 5,
      "max_cooking_time": 20,
      "created_at": "2019-04-10T11:12:57.000Z",
      "delivery_method": "delivery",
      "payment_method": "cc",
      "delivery_information": {
        "city": "Ciudad de México",
        "complete_address": "Nombre de la calle 5050. Barrio. 12345. Ciudad De México",
        "street_number": "5050",
        "neighborhood": "Barrio",
        "complement": "Portón verde",
        "postal_code": "12345",
        "street_name": "Nombre de la calle"
      },
      "billing_information": {
        "address": "148  Davis Court",
        "billing_type": "Bill",
        "document_number": "32432342",
        "document_type": "DNI",
        "email": "client@gmail.com",
        "name": "John Doe",
        "phone": "43333222"
      },
      "totals": {
        "total_products": 204000,
        "total_discounts": 173685,
        "total_order": 204180,
        "total_discount_by_partner": 40180,
        "total_to_pay": 0,
        "discount_by_support": 0,
        "charges": {
          "shipping": 50,
          "service_fee": 100
        },
        "other_totals": {
          "tip": 30,
          "total_rappi_pay": 0,
          "total_rappi_credits": 0
        }
      },
      "items": [
        {
          "sku": "1234",
          "id": "2089918083",
          "name": "Chicken and Apple Salad",
          "type": "PRODUCT",
          "comments": "No vinegar",
          "price": 28900,
          "quantity": 3,
          "subitems": [
            {
              "sku": "11",
              "id": "10005260",
              "name": "Burrata Cheese",
              "type": "TOPPING",
              "price": 13500,
              "quantity": 1
            }
          ]
        },
        {
          "id": "2089918082",
          "name": "Seafood Salad",
          "comments": "",
          "price": 34900,
          "quantity": 2,
          "subitems": [
            {
              "id": "9928277",
              "name": "With white vinaigrette",
              "price": 0,
              "quantity": 1
            },
            {
              "id": "10005257",
              "name": "Ricotta Cheese",
              "price": 3500,
              "quantity": 1
            }
          ]
        }
      ],
      "delivery_discount": {
        "total_percentage_discount": 100,
        "total_value_discount": 50
      },
      "discounts": [
        {
          "value": 7600,
          "description": "Envío gratis",
          "title": "Envío gratis",
          "product_id": null,
          "sku": null,
          "type": "shipping",
          "raw_value": 100,
          "value_type": "percentage",
          "max_value": null,
          "includes_toppings": false,
          "percentage_by_rappi": 100,
          "percentage_by_partners": 0,
          "amount_by_rappi": 7600,
          "amount_by_partner": 0,
          "discount_product_units": 0,
          "discount_product_unit_value": null
        },
        {
          "value": 100,
          "description": "Disfruta de 20% de descuento en productos seleccionados.",
          "title": "Disfruta de 20% de descuento en productos seleccionados.",
          "product_id": 2089918082,
          "sku": 2089918082,
          "type": "offer_by_product",
          "raw_value": 20,
          "value_type": "percentage",
          "max_value": null,
          "includes_toppings": false,
          "percentage_by_rappi": 0,
          "percentage_by_partners": 100,
          "amount_by_rappi": 0,
          "amount_by_partner": 100,
          "discount_product_units": 1,
          "discount_product_unit_value": 100
        }
      ]
    },
    "customer": {
      "first_name": "John",
      "last_name": "Doe",
      "phone_number": "3163535",
      "document_number": "34545678",
      "user_type": "USER_VIP"
    },
    "store": {
      "internal_id": "30000011",
      "external_id": "123445",
      "name": "Store 1"
    }
  }
]

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto en la respuesta Descripción del objeto
order_detail
array of objects
Propiedades de los detalles de la orden.
order_detail.order_id
string
Identificador de la orden.
order_detail.coooking_time
integer
Tiempo de preparación estimado para la orden.
order_detail.min_cooking_time
integer
Tiempo mínimo de preparación en minutos para esta orden.
order_detail.max_cooking_time
integer
Tiempo máximo de preparación en minutos para esta orden.
order_detail.created_at
string
Fecha en la que se creó la orden.
order_detail.delivery_method
string, enumerable
Método de entrega de la orden. Opciones disponibles: delivery,marketplace, pickup.
order_detail.payment_method
string, enumerable
Metodo de pago de la orden. Opciones disponibles: rappi_pay, cc, cash, paypal, edenred, webpay, masterpass, dc, pos_terminal, elo, sodexo, vale_r, ticket_r, alelo, visa_checkout,google_pay, apple_pay, rappicorp, PSE, PIX, unknown.
order_detail.delivery_information
object
Propiedades de la dirección de entrega.
order_detail.delivery_information.city
string
Ciudad de la dirección de entrega
order_detail.delivery_information.complete_address
string
Dirección de entrega con todos los campos
order_detail.delivery_information.street_number
string
Numero de la calle
order_detail.delivery_information.neighborhood
string
Barrio de la dirección de entrega
order_detail.delivery_information.complement
string
Información adicional de la dirección de entrega
order_detail.delivery_information.postal_code
string
Código postal establecido para la dirección
order_detail.delivery_information.street_name
string
Nombre de la calle establecido para la dirección de entrega
order_detail.billing_information
array of objects
Propiedades de facturación del pago .
order_detail.billing_information.address
string
Dirección de entrega de la orden.
order_detail.billing_information.billing_type
string
Tipo de cobro de la orden.
order_detail.billing_information.document_number
string
Número de documento del cliente.
order_detail.billing_information.document_type
string
Tipo de documento del cliente.
order_detail.billing_information.email
string
Email establecido para recibir información de facturación.
order_detail.billing_information.name
string
Nombre establecido para la facturación.
order_detail.billing_information.phone
string
Teléfono establecido para la facturación.
order_detail.totals
array of objects
Propiedades del total de la orden.
order_detail.totals.total_products
integer
Total de los productos sin descuentos.
order_detail.totals.total_discounts
integer
Total de productos sin descuento en la orden.
order_detail.totals.total_order
integer
Cantidad total que el restaurante recibe.
Cuando el metodo de entrega es marketplace este campo incluye propina y cargos de entrega.
Para otros métodos de entrega, este campo contiene solo el valor total de todos los productos.
En todos los casos, este campo incluye los descuentos asumidos por el restaurante.
order_detail.totals.total_discount_by_partner
integer
El total en divisa de los descuentos asumidos por el aliado.
order_detail.totals.total_to_pay
integer
El total que el usuario paga al repartidor en efectivo. Aplica únicamente cuando el metodo de entrega es marketplace o pickup, y el método de pago es: cash.
order_detail.totals.discount_by_support
integer
Descuento aplicado al usuario por el equipo de soporte de Rappi.
order_detail.totals.charges
array of objects
Propiedades de cargos adicionales de la orden .
order_detail.totals.charges.shipping
integer
Total de cargos de envío .
order_detail.totals.charges.service_fee
integer
Cargos del servicio de Rappi
order_detail.totals.other_totals
array of objects
Otros cargos incluidos en esta orden.
order_detail.totals.other_totals.tip
integer
Propina para el repartidor.
order_detail.totals.other_totals.total_rappi_pay
integer
Total pagado usando Rappi Pay.
order_detail.totals.othet_totals.total_rappi_credits
integer
Total pagado usando Rappi Creditos .
order_detail.items
array of objects
Propiedades de los artículos que contiene la orden.
order_detail.items.sku
string
SKU del artículo en el menú. El aliado asigna su propio SKU al artículo.
order_detail.items.id
string
Identificador del artículo en la orden.
order_detail.items.name
string
Nombre del artículo en la orden.
order_detail.items.type
string, enumerable
Tipo de artículo. Opciones disponibles:
product, o topping.
order_detail.items.comments
array
Comentarios del usuario para un artículo en la orden.
order_detail.items.price
integer
Precio unitario del artículo sin descuento.
order_detail.items.quantity
integer
Cantidad especificada del artículo en la orden.
order_detail.items.subitems
array of objects
Propiedades de los subartículos en la orden.
order_detail.items.subitems.sku
string
SKU del subartículo en el menú. El aliado asigna su propio SKU al artículo.
order_detail.items.subitems.id
string
Identificador que Rappi asigna al artículo.
order_detail.items.subitems.name
string
Nombre del subartículo en la orden.
order_detail.items.subitems.type
string, enumerable
Tipo del subartículo en la orden. Opciones disponibles: product, o topping.
order_detail.items.subitems.price
integer
Precio unitario del subartículo sin descuento
order_detail.items.subitems.quantity
integer
Cantidad especificada del subartículo en la orden.
order_detail.delivery_discount
integer
Propiedades de los descuentos en la entrega de la orden.
order_detail.delivery_discount.total_percentage_discount
integer
Porcentaje de descuento en la entrega de la orden.
order_detail.delivery_discount.total_value_discount
integer
Monto total del descuento en la entrega.
order_detail.customer
array of objects
Propiedades del usuario de Rappi que crea la orden. Solo se envían cuando el método de entrega es marketplace o si se solicita a Rappi que envíe esta información
order_detail.customer.first_name
string
Nombre del usuario de Rappi que crea la orden.
order_detail.customer.last_name
string
Apellido del usuario de Rappi que crea la orden.
order_detail.customer.phone_number
string
Número de teléfono del usuario de Rappi que crea la orden.
order_detail.customer.document_number
string
Número de documento del usuario de Rappi que crea la orden.
order_detail.customer.user_type
string
Si el usuario es VIP se envía el valor USER_VIP. Para el resto de los usuarios este campo no se envía.
order_detail.store
array of objects
Propiedades de la tienda que prepara la orden.
order_detail.store.internal_id
string
Identificador interno que Rappi asigna a la tienda.
order_detail.store.external_id
string
Identificador de la integración que Rappi asigna a la tienda.
order_detail.store.name
string
Nombre de la tienda que prepara la orden.
order_detail.discounts.value
integer
Valor del descuento reflejado en divisa.
order_detail.discounts.description
string
Mensaje descriptivo explicando el descuento.
order_detail.discounts.title
string
Nombre del descuento.
order_detail.discounts.product_id
integer
ID del producto si el descuento aplica producto.
order_detail.discounts.sku
string
SKU del producto si el descuento aplica producto.
order_detail.discounts.type
string
Indica el tipo del descuento.
order_detail.discounts.raw_value
integer
El valor del descuento, puede representar un porcentaje o un valor en divisa dependiendo del type_value.
order_detail.discounts.value_type
string, enumerable
El tipo de valor del descuento. Opciones disponibles: value, percentage.
order_detail.discounts.max_value
integer
Máximo valor en divisa a descontar.
order_detail.discounts.includes_toppings
boolean
Indica si el descuento se resta del total de producto con toppings o no.
order_detail.discounts.percentage_by_rappi
integer
El porcentaje del descuento asumido por Rappi.
order_detail.discounts.percentage_by_partners
integer
El porcentaje del descuento asumido por el aliado.
order_detail.discounts.amount_by_rappi
integer
Valor del descuento reflejado en divisa asumido por Rappi.
order_detail.discounts.amount_by_partner
integer
Valor del descuento reflejado en divisa asumido por el aliado.
order_detail.discounts.discount_product_units
integer
Cantidad de productos a las que aplicó el descuento.
order_detail.discounts.discount_product_unit_value
integer
Valor del descuento por unidad de producto.

PUT orders/{orderId}/take/{cookingTime}

Usa este endpoint para tomar una orden para que la tienda comience a pepararla.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/orders/{orderId}/take/{cookingTime}

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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/take/20

Este es un ejemplo de la llamada:

final Integer orderId = 392625;
final Integer cookingTime = 20;

URL url = new URL(
         String.format("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/%s/take/%s", orderId, cookingTime)
);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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);

System.out.println("Response Code : " + connection.getResponseCode());
var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/orders/392625/take/20',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/take/20"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/take/20"
    method := "PUT"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta

Este endpoint únicamente regresa un código de estado.

PUT orders/{orderId}/reject

Usa este endpoint para rechazar una orden.

URL del Endpoint

Utiliza esta URL para hacer llamadas con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/orders/{orderId}/reject

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

Nombre Requerido Descripción
orderId
string
required Rechaza una orden en especifico.
items_ids
array of string
optional Lista de los ids de los items con error. Aca se envia el rappi id
items_skus
array of string
optional Lista de skus de los items con error. Aca se envia el sku
cancel_type
string
enumerable
optional Enum: "ITEM_WRONG_PRICE", "ITEM_NOT_FOUND", "ITEM_OUT_OF_STOCK", "ORDER_MISSING_INFORMATION", "ORDER_MISSING_ADDRESS_INFORMATION", "ORDER_TOTAL_INCORRECT"

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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/reject

Este es un ejemplo de la llamada:

{
   "reason":"The order has invalid items"
}

Este es un ejemplo de la llamada con items con error:

 {
    "reason":"The order has invalid items",
    "cancel_type": "ITEM_NOT_FOUND",
    "items_skus": ["sku1", "sku2"]
 }
final Integer orderId = 3320025;

URL url = new URL(
         String.format("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/%s/reject", orderId)
);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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 = "{\"reason\":\"The order has invalid items\"}";

try (OutputStream os = connection.getOutputStream()) {
   byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
   os.write(input, 0, input.length);
}

System.out.println("Response Code : " + connection.getResponseCode());
var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/orders/392625/reject',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
    'maxRedirects': 20
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({"reason":"The order has invalid items"});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/reject"

payload = "{\"reason\":\"The order has invalid items\"}"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/reject"
    method := "PUT"

    payload := strings.NewReader("{\"reason\":\"The order has invalid items\"}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Attributes Requirement Description
reason
string
required Razón por la que la orden se rechazó

Ejemplo de Llamada

Este endpoint regresa solo un código de respuesta.

POST orders/{orderId}/ready-for-pickup

Usa este endpoint para notificar al usuario en la app de Rappi que su orden está lista para ser recogida.

URL del Endpoint

Usa esta URL para hacer llamadas con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/orders/{orderId}/ready-for-pickup

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:

POST https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/ready-for-pickup

Este es un ejemplo de la llamada:

final Integer orderId = 392625;

URL url = new URL(
         String.format(
               "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/%s/ready-for-pickup",
               orderId));

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");

System.out.println("Response Code : " + connection.getResponseCode());
var https = require('https');

var options = {
    'method': 'POST',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/orders/392625/ready-for-pickup',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/ready-for-pickup"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/ready-for-pickup"
    method := "POST"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta

Este endpoint regresa unicamente un código de respuesta.

GET orders/{orderId}/events

Usa este endpoint para para obtener las últimas actualizaciones de una orden.

URL del Endpoint

Utiliza esta URL para hacer llamadas con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/orders/{orderId}/events

Propiedades del Endpoint

Este recurso tiene las siguientes propiedades:

Formato de respuesta JSON
Requerimientos de autenticación Token

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/orders/392625/events

Este es un ejemplo de la llamada:

final Integer orderId = 392625;

URL url = new URL(
         String.format(
               "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/%s/events",
               orderId));

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/orders/392625/events',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/events"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/orders/392625/events"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Códigos de Respuesta

Estos son los posibles códigos de respuesta en este endpoint:

Ejemplo de Respuesta

Este es un ejemplo de la respuesta:

[
   {
      "event":"canceled_with_charge",
      "event_time":"2020-05-28T12:31:12.501Z",
      "additional_information":{

      }
   },
   {
      "event":"taken_visible_order",
      "event_time":"2020-05-28T12:30:12.501Z",
      "additional_information":{

      }
   }
]

Esta tabla describe los objetos dentro de la respuesta de ejemplo: Tiempo estimado de llegada del repartidor a la tienda

Objeto en la respuesta Descripción del objeto
event
string
Último evento de la orden.
event_time
string
Hora del evento. Formato: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'.
additional_information
array of objects
Información adicional de la orden. El formato puede variar dependiendo del evento.

Tiendas

Los recursos de Tiendas te permiten interactuar con tus tiendas.

La siguiente tabla describe los diferentes contenidos de los recursos de Tiendas:

Recurso API Descripción del Endpoint
GET stores-pa Regresa la lista de tiendas del aliado autenticado.
PUT stores-pa/{storeId}/status Actualiza una tienda a integrada o no integrada.
GET store/{storeId}/menu/current Te permite obtener el menu actual de la tienda.

GET stores-pa

Usa este endpoint para obtener las tiendas del aliado autenticado.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/stores-pa

{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/stores-pa

Este es un ejemplo de la llamada:

URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/stores-pa',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta "Success 200"

Este es un ejemplo de la respuesta "Success 200":

[
   {
      "integrationId":"111",
      "rappiId":"890982",
      "name":"Store 1"
   },
   {
      "integrationId":"222",
      "rappiId":"890983",
      "name":"Store 2"
   },
   {
      "integrationId":"333",
      "rappiId":"890983",
      "name":"Store 3"
   }
]

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
integrationId
string
Identificador de la tienda en la aplicación de Rappi
rappiId
string
Identificador que Rappi asignó al aliado
name
string
Nombre de la tienda en la aplicación de Rappi

Ejemplo de Respuesta "Invalid credentials 401"

Este es un ejemplo de la respuesta "Invalid credentials 401":

{
  "message": "Not a valid token"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
message
string
Mensaje descriptivo del error

Ejemplo de Respuesta "App Client no encontrado 404"

Este es un ejemplo de la respuesta "App Client no encontrado 404":

{
  "message": "Not found appClient of client id {clientId}"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
message
string
Mensaje descriptivo del error

PUT store-pa integrated status

Usa este endpoint para cambiar una tienda a integrada o no integrada

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/stores-pa/{storeId}/status

{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 tiene los siguientes parametros:

Parámetro Descripción
{storeId} Path Param. Store Id del lado de rappi
{integrated} Query Param. Indica si la tienda se actualiza a "integrada" (true) o "no integrada" (false)

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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa/12345/status?integrated=true

Este es un ejemplo de la llamada:

URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa/12345/status?integrated=true");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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());
var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/stores-pa/12345/status?integrated=true',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa/12345/status?integrated=true"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa/12345/status?integrated=true"
    method := "PUT"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta "Success 200"

Este es un ejemplo de la respuesta "Success 200" al pasar una tienda a integrada:

{
  "message":"The store {storeid} was changed to integrated {true} successfully."
}

Este es un ejemplo de la respuesta "Success 200" al pasar una tienda a no integrada:

{
  "message":"The store {storeid} was changed to integrated {false} successfully. Please remember to login into the partners app and set the AUTO ACCEPT config"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
message
string
Mensaje con la información del cambio realizado

Ejemplo de Respuesta "Invalid credentials 401"

Este es un ejemplo de la respuesta "Invalid credentials 401":

{
  "message": "Not a valid token"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
message
string
Mensaje descriptivo del error

Ejemplo de Respuesta "App Client no encontrado 404"

Este es un ejemplo de la respuesta "App Client no encontrado 404":

{
  "message": "Not found appClient of client id {clientId}"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
message
string
Mensaje descriptivo del error

Este es un ejemplo de la respuesta "Error al actualizar la store 400":

{
  "message": "There was an error trying to change the store {storeId} to integrated: {true|false}. Please contact support team"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
message
string
Mensaje descriptivo del error

GET store current menu

Usa este endpoint para obtener el menú actual de la tienda.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/store/{STORE_ID}/menu/current

{COUNTRY_DOMAIN}: Este es tu Dominio por País de Rappi. Mira la lista de Dominios por país.

{STORE_ID}: Este es el identificador de la tienda del lado de Rappi.

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://internal-microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/store/900111941/menu/current

Este es un ejemplo de la llamada:

URL url = new URL("http://internal-microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/store/YOU_STORE/menu/current");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/store/YOU_STORE/menu/current',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/store/YOU_STORE/menu/current"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/store/YOU_STORE/menu/current"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta "Success 200"

Este es un ejemplo de la respuesta "Success 200":

[
  {
    "storeId":"900111941",
    "products":[
      {
        "id":"2135501578",
        "name":"2 por 19,90",
        "price":52.9,
        "partnerSku":null,
        "active":null,
        "toppings":[
          {
            "id":"340825698",
            "name":"Batata Grande",
            "price":6.9,
            "partnerSku":null,
            "active":null,
            "category":{
              "id":"1247164425",
              "name":"Deseja Acompanhamento?"
            }
          },
          {
            "id":"340825699",
            "name":"Pepsi 350ml",
            "price":6.9,
            "partnerSku":null,
            "active":null,
            "category":{
              "id":"1247164426",
              "name":"Deseja Bebida?"
            }
          }
        ]
      },
      {
        "id":"2135501683",
        "name":"4 Sanduíches por R$ 29,80!",
        "price":43.6,
        "partnerSku":null,
        "active":null,
        "toppings":[
          {
            "id":"340827238",
            "name":"Rodeio",
            "price":0,
            "partnerSku":null,
            "active":null,
            "category":{
              "id":"1247164714",
              "name":"Escolha seu 1º sanduíche:"
            }
          }
        ]
      }
    ]
  }
]

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
storeId
string
Identificador de la tienda del lado de Rappi
products
array of objects
Lista de productos de la tienda
products.id
string
Identificador del producto del lado de Rappi
products.name
string
Nombre del producto
products.price
integer
Precio del producto
products.toppings
array of objects
Lista de Toppings del producto
products.toppings.id
string
Identificador del topping del lado de Rappi
products.toppings.name
string
Nombre del topping
products.toppings.price
integer
Precio del topping
products.toppings.category
objects
Categoría del topping
products.toppings.category.id
string
Identificador de la categoría del topping
products.toppings.category.name
string
Nombre de la categoría del topping

Ejemplo de Respuesta "Invalid credentials 401"

Este es un ejemplo de la respuesta "Invalid credentials 401":

{
  "message": "Not a valid token"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
message
string
Mensaje descriptivo del error

Ejemplo de Respuesta "App Client no encontrado 404"

Este es un ejemplo de la respuesta "App Client no encontrado 404":

{
  "message": "Not found appClient of client id {clientId}"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
message
string
Mensaje descriptivo del error

Ejemplo de Respuesta "La tienda no pertenece al App Client 400"

Este es un ejemplo de la respuesta "La tienda no pertenece al App Client 400":

{
 "message": "The stores {storeId} don't belong to the appClient of client id {clientId}"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto Descripción
message
string
Mensaje descriptivo del error

Disponibilidad

Los recursos de Disponibilidad te permiten interactuar con las opciones de disponibilidad de tus artículos y tiendas.

La siguiente tabla describe los diferentes contenidos de los recursos de Disponibilidad:

Recurso Descripción
PUT availability/stores/items Maneja la disponibilidad de los artículos por SKU en la app de Rappi
PUT availability/stores/items/rappi Maneja la disponibilidad de los artículos por ID en la app de Rappi
PUT availability/stores Maneja de forma asincrónica la disponibilidad de la tienda en la app de Rappi
PUT availability/stores/enable/massive Maneja de forma asincrónica la disponibilidad de la tienda en la app de Rapppi
PUT availability/stores/enable Maneja de forma sincrónica la disponibilidad de la tienda en la app de Rapppi

PUT availability/stores/items

Usa este endpoint para configurar las opciones de disponibilidad de tus artículos por SKU en tus tiendas.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores/items

{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 de la llamada 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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/items

Este es un ejemplo de la llamada:

[
   {
      "store_integration_id":"999",
      "items":{
         "turn_on":[
            "1111",
            "2222",
            "3333"
         ],
         "turn_off":[
            "5555"
         ]
      }
   }
]
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/items");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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" +
         "   {\n" +
         "      \"store_integration_id\":\"999\",\n" +
         "      \"items\":{\n" +
         "         \"turn_on\":[\n" +
         "            \"1111\",\n" +
         "            \"2222\",\n" +
         "            \"3333\"\n" +
         "         ],\n" +
         "         \"turn_off\":[\n" +
         "            \"5555\"\n" +
         "         ]\n" +
         "      }\n" +
         "   }\n" +
         "]";

try (OutputStream os = connection.getOutputStream()) {
   byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
   os.write(input, 0, input.length);
}

System.out.println("Response Code : " + connection.getResponseCode());
var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/availability/stores/items',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify(
    [
            {
                "store_integration_id":"999",
                "items": {
                    "turn_on": [
                        "1111",
                        "2222",
                        "3333"
                    ],
                    "turn_off": [
                        "5555"
                    ]
                }
            }
            ]);

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/items"

payload = "[\n" \
         "   {\n" \
         "      \"store_integration_id\":\"999\",\n" \
         "      \"items\":{\n" \
         "         \"turn_on\":[ " \
         "            \"1111\", " \
         "            \"2222\", " \
         "            \"3333\" " \
         "         ],\n" \
         "         \"turn_off\":[ " \
         "            \"5555\" " \
         "         ]\n" \
         "      }\n" \
         "   }\n" \
         "]"

headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/items"
    method := "PUT"

    payload := strings.NewReader("[\n" +
        "   {\n" +
        "      \"store_integration_id\":\"999\",\n" +
        "      \"items\":{\n" +
        "         \"turn_on\":[\n" +
        "            \"1111\",\n" +
        "            \"2222\",\n" +
        "            \"3333\"\n" +
        "         ],\n" +
        "         \"turn_off\":[\n" +
        "            \"5555\"\n" +
        "         ]\n" +
        "      }\n" +
        "   }\n" +
        "]")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerido Descripción
store_integration_id
string
required Identificador de la integración de la tienda.
items
array of objects
required Propiedades de los artículos configurados.
items.turn_on
string
optional SKU del artículo a habilitar.
items.turn_off
string
optional Sku del artículo a deshabilitar.

Ejemplo de Respuesta

Ejemplo de respuesta con mensaje de error:

[
   {
      "message":"Error updating items"
   }
]

Estos son las respuestas posibles al hacer la llamada:

PUT availability/stores/items/rappi

Usa este endpoint para configurar la disponibilidad de tus artículos por ID de Rappi en tus tiendas.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores/items/rappi

{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 de la llamada 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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/items/rappi

Este es un ejemplo de la llamada:

[
   {
      "store_integration_id":"999",
      "items":{
         "turn_on":[
            1111,
            2222,
            3333
         ],
         "turn_off":[
            5555
         ]
      }
   }
]
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/items/rappi");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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" +
         "   {\n" +
         "      \"store_integration_id\":\"999\",\n" +
         "      \"items\":{\n" +
         "         \"turn_on\":[\n" +
         "            1111,\n" +
         "            2222,\n" +
         "            3333\n" +
         "         ],\n" +
         "         \"turn_off\":[\n" +
         "            5555\n" +
         "         ]\n" +
         "      }\n" +
         "   }\n" +
         "]";

try (OutputStream os = connection.getOutputStream()) {
   byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
   os.write(input, 0, input.length);
}

System.out.println("Response Code : " + connection.getResponseCode());
var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/availability/stores/items/rappi',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify(
    [
            {
                "store_integration_id":"999",
                "items": {
                    "turn_on": [
                        1111,
                        2222,
                        3333
                    ],
                    "turn_off": [
                        5555
                    ]
                }
            }
            ]);

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/items/rappi"

payload = "[\n" \
         "   {\n" \
         "      \"store_integration_id\":\"999\",\n" \
         "      \"items\":{\n" \
         "         \"turn_on\":[ " \
         "            1111, " \
         "            2222, " \
         "            3333 " \
         "         ],\n" \
         "         \"turn_off\":[\n" \
         "            5555\n" \
         "         ]\n" \
         "      }\n" \
         "   }\n" \
         "]"

headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))

package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/items/rappi"
    method := "PUT"

    payload := strings.NewReader("[\n" +
        "   {\n" +
        "      \"store_integration_id\":\"999\",\n" +
        "      \"items\":{\n" +
        "         \"turn_on\":[\n" +
        "            1111,\n" +
        "            2222,\n" +
        "            3333\n" +
        "         ],\n" +
        "         \"turn_off\":[\n" +
        "            5555\n" +
        "         ]\n" +
        "      }\n" +
        "   }\n" +
        "]")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerido Descripción
store_integration_id
string
required Identificador de la integración de la tienda.
items
array of objects
required Propiedades de los artículos configurados.
items.turn_on
integer
optional Rappi ID del artículo a habilitar.
items.turn_off
integer
optional Rappi ID tdel artículo a deshabilitar.

Ejemplo de Respuesta

Este es un ejemplo de una respuesta con un mensaje de error:

{
  "message": "Error message"
}

Estas son las posibles respuestas de la llamada:

PUT availability/stores/enable/massive

Usa este endpoint para configurar la disponibilidad de tus artículos por ID de Rappi en tus tiendas.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores

{COUNTRY_DOMAIN}: Este es tu Dominio por País de Rappi. See the list of Country Domains.

Propiedades del Endpoint

Este recurso tiene las siguientes propiedades:

Formato de respuesta JSON
Requerimientos del body de la llamada 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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/enable/massive

Este es un ejemplo de la llamada:

{
    "stores": [
            {
               "store_id": "12312",
               "is_enabled": true 
            },
             {
               "store_id": "12312",
               "is_enabled": false 
            }
        ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/enable/massive");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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"
                     + "    \"stores\": [\n"
                     + "        {\n"
                     + "            \"store_id\": \"12312\",\n"
                     + "            \"is_enabled\": true\n"
                     + "        },\n"
                     + "        {\n"
                     + "            \"store_id\": \"12312\",\n"
                     + "            \"is_enabled\": false\n"
                     + "        }\n"
                     + "    ]\n"
                     + "}";

try (OutputStream os = connection.getOutputStream()) {
   byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
   os.write(input, 0, input.length);
}

System.out.println("Response Code : " + connection.getResponseCode());

var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/availability/stores//enable/massive',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({"stores": [
                              {
                                  "store_id": "12312",
                                  "is_enabled": true
                              },
                              {
                                  "store_id": "12312",
                                  "is_enabled": false
                              }]});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/enable/massive"

payload = = "{\n"
      + "    \"stores\": [\n"
      + "        {\n"
      + "            \"store_id\": \"12312\",\n"
      + "            \"is_enabled\": true\n"
      + "        },\n"
      + "        {\n"
      + "            \"store_id\": \"12312\",\n"
      + "            \"is_enabled\": false\n"
      + "        }\n"
      + "    ]\n"
      + "}"

headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/enable/massive"
    method := "PUT"

    payload := strings.NewReader("{\n"
                           + "    \"stores\": [\n"
                           + "        {\n"
                           + "            \"store_id\": \"12312\",\n"
                           + "            \"is_enabled\": true\n"
                           + "        },\n"
                           + "        {\n"
                           + "            \"store_id\": \"12312\",\n"
                           + "            \"is_enabled\": false\n"
                           + "        }\n"
                           + "    ]\n"
                           + "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerido Descripción
stores
array of objects
required Lista de tiendas
stores.store_id
string
required id de la tienda (del lado de rappi) que será actualizada
stores.is_enabled
boolean
required true para prenderla, de lo contrario false

Ejemplo de Respuesta

Este es un ejemplo de una respuesta con un mensaje de error:

{
   "message":"Error message"
}

Estas son las posibles respuestas de la llamada:

PUT availability/stores

Usa este endpoint para configurar la disponibilidad de tus tiendas.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores

{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 de la llamada 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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores

Este es un ejemplo de la llamada:

{
   "turn_on":[
      "2222"
   ],
   "turn_off":[
      "333",
      "444"
   ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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" +
         "   \"turn_on\":[\n" +
         "      \"2222\"\n" +
         "   ],\n" +
         "   \"turn_off\":[\n" +
         "      \"333\",\n" +
         "      \"444\"\n" +
         "   ]\n" +
         "}";

try (OutputStream os = connection.getOutputStream()) {
   byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
   os.write(input, 0, input.length);
}

System.out.println("Response Code : " + connection.getResponseCode());

var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/availability/stores/items',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "turn_on":[
        "2222"
    ],
    "turn_off":[
        "333",
        "444"
    ]
});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores"

payload = "{\n" \
         "   \"turn_on\":[\n" \
         "      \"2222\"\n" \
         "   ],\n" \
         "   \"turn_off\":[\n" \
         "      \"333\",\n" \
         "      \"444\"\n" \
         "   ]\n" \
         "}"

headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores"
    method := "PUT"

    payload := strings.NewReader("{\n" +
        "   \"turn_on\":[\n" +
        "      \"2222\"\n" +
        "   ],\n" +
        "   \"turn_off\":[\n" +
        "      \"333\",\n" +
        "      \"444\"\n" +
        "   ]\n" +
        "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerido Descripción
turn_on
integer
optional Lista de IDs de las tiendas a habilitar.
turn_off
integer
optional Lista de IDs de las tiendas a deshabilitar.

Ejemplo de Respuesta

Este es un ejemplo de una respuesta con un mensaje de error:

{
   "message":"Error message"
}

Estas son las posibles respuestas de la llamada:

PUT availability/stores/enable

Usa este endpoint para configurar la disponibilidad de tus tiendas de forma sincrónica

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/availability/stores/enable

{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 de la llamada JSON
Requerimientos de autenticación Token

Parametros

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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/enable

Este es un ejemplo de la llamada:

{
    "stores": [
        {
            "store_id": "12312",
            "is_enabled": true
        },
        {
            "store_id": "12312",
            "is_enabled": false
        }
    ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/enable");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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"
                     + "    \"stores\": [\n"
                     + "        {\n"
                     + "            \"store_id\": \"12312\",\n"
                     + "            \"is_enabled\": true\n"
                     + "        },\n"
                     + "        {\n"
                     + "            \"store_id\": \"12312\",\n"
                     + "            \"is_enabled\": false\n"
                     + "        }\n"
                     + "    ]\n"
                     + "}";

try (OutputStream os = connection.getOutputStream()) {
   byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
   os.write(input, 0, input.length);
}

System.out.println("Response Code : " + connection.getResponseCode());

var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/availability/stores/enable',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({"stores": [
                              {
                                  "store_id": "12312",
                                  "is_enabled": true
                              },
                              {
                                  "store_id": "12312",
                                  "is_enabled": false
                              }]});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/enable"

payload = = "{\n"
      + "    \"stores\": [\n"
      + "        {\n"
      + "            \"store_id\": \"12312\",\n"
      + "            \"is_enabled\": true\n"
      + "        },\n"
      + "        {\n"
      + "            \"store_id\": \"12312\",\n"
      + "            \"is_enabled\": false\n"
      + "        }\n"
      + "    ]\n"
      + "}"

headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/availability/stores/enable"
    method := "PUT"

    payload := strings.NewReader("{\n"
                           + "    \"stores\": [\n"
                           + "        {\n"
                           + "            \"store_id\": \"12312\",\n"
                           + "            \"is_enabled\": true\n"
                           + "        },\n"
                           + "        {\n"
                           + "            \"store_id\": \"12312\",\n"
                           + "            \"is_enabled\": false\n"
                           + "        }\n"
                           + "    ]\n"
                           + "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Attributes Requirement Description
stores
array of objects
required List of store's data
stores.store_id
string
required id of the store that will change the status
stores.is_enabled
boolean
required true to turn on the store, otherwise false

Sample Response

Este es un ejemplo de la respuesta exitosa:

{
    "results":[
        {
            "store_id": 90774,
            "is_enabled": true,
            "operation_result": true,
            "operation_result_type": "SUCCESS",
            "operation_result_message": "success",
            "suspended_reason": null,
            "suspended_at": null,
            "suspended_time": 0
        },
        {
            "store_id": 90775,
            "is_enabled": false,
            "operation_result": false,
            "operation_result_type": "SUSPENDED",
            "operation_result_message": "suspended",
            "suspended_reason": "suspended due to cancelled orders",
            "suspended_at": "2022-04-11T20:23:00.00Z",
            "suspended_time": 60
        }
    ]
}

Este es un ejemplo de la respuesta con algún error:

{
  "message": "It has been sent more than 300 stores and cannot be processed, please use the asynchronous service"
}

Esta tabla describe los atributos que el JSON de la respuesta contiene

Response Object Object Description
results
array of objects
Lista de resultados
results.store_id
int
Id de la tienda.
results.is_enabled
boolean
Estado actual de la tienda
results.operation_result
boolean
true si el resultado de la operación fue exitoso, de lo contrario false.
results.operation_result_type
string
Valores posibles: SUCCESS, SUSPENDED, FORBIDDEN, STORE_NOT_PUBLISHED, STORE_ALREADY_IN_STATUS, ERROR_EXTERNAL_SERVICE
results.operation_result_message
string
Descripción del result type
results.suspended_reason
string
Si la tienda fue suspendida, el motivo va a estar acá
results.suspended_at
date
Fecha desde la cual la tienda fue suspendida
results.suspended_time
int
Tiempo en minutos que indica por cuanto tiempo la tienda fue suspendida

Significado de los diferentes valores del campo operation_result_type

Webhooks

Usa estos recursos para controlar los Webhooks configurados en tus tiendas.

La siguiente tabla describe los diferentes contenidos de los recursos de Webhooks:

Recurso Descripción del Endpoint
GET webhook/{event} Regresa los Webhooks configurados de todas las tiendas del cliente autenticado
PUT webhook/{event}/add-stores Agrega tiendas al evento del webhook especificado
PUT webhook/{event}/change-url Cambia la url para una lista de tiendas
POST webhook Crea un nuevo Webhook para una lista de tiendas del cliente autenticado
DELETE webhook/{event}/remove-stores Elimina stores del webhook especificado
PUT webhook/{event}/reset-secret Reinicia el secret y genera uno nuevo al cliente autenticado
PUT webhook/{event}/change-status Habilita o deshabilita Webhooks para una lista de tiendas

GET webhook

Usa este endpoint para obtener los Webhooks configurados para tus tiendas.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/webhook/{EVENT}

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/webhook

Este es un ejemplo de la llamada:

URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/webhook',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Propiedades del Endpoint

Este recurso tiene las siguientes propiedades:

Formato de respuesta JSON
Requerimientos de autenticación Token

Parámetros

Parámetro Requerimiento Descripción
EVENT
string
opcional Regresa únicamente el detalle del evento especificado

Códigos de Respuesta

Estos son los posibles códigos de respuesta en este endpoint:

Ejemplo de Respuesta

Este es un ejemplo de la respuesta:

[
    {
        "event": "event_1",
        "stores": [
            {
                "store_id": "1000",
                "url": "http://testUrl/one",
                "state": "ENABLE"
            },
            {
                "store_id": "10001",
                "url": "http://testUrl/one",
                "state": "ENABLE"
            }
        ]
    },
    {
        "event": "event_2",
        "stores": [
            {
                "store_id": "1000",
                "url": "http://testUrl/one",
                "state": "ENABLE"
            }
        ]
    }
]

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto en la respuesta Descripción del objeto
event
string
Nombre del evento que dispara el webhook.
stores
string
Lista de las tiendas donde se dispara el evento.
store_id
string
Id de la tienda que dispara el evento
url
string
URL a la que se comunica el webhook.
state
string
Estado del webhook. Opciones disponibles: ENABLE o DISABLE

PUT webhook - Agregar Stores

Usa este endpoint para agregar tiendas a un webhook configurado por el cliente autenticado.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/webhook/{EVENT}/add-stores

Propiedades del Endpoint

Este recurso tiene las siguientes propiedades:

Formato de respuesta JSON
Requerimientos del body de la llamada JSON
Requerimientos de autenticación Token

Parámetros

Parámetro Requerimiento Descripción
event
string
requerido El nombre del evento del webhook a actualizar

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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/add-stores

Este es un ejemplo de la llamada:

[
    {
       "url":"http://testDomain/webhook/data",
       "stores":[
          "1000",
          "1001"
       ]
    }
]
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/add-stores");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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" +
         "   \"url\":\"http://testDomain/webhook/data\",\n" +
         "   \"stores\":[\n" +
         "      \"1000\",\n" +
         "      \"1001\"\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());

var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/add-stores',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify([{
    "url":"http://testDomain/webhook/data",
    "stores":[
        "1000",
        "1001"
    ]
}]);

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/add-stores"

payload = "[{\n" \
            "   \"url\":\"http://testDomain/webhook/data\",\n" \
            "   \"stores\":[\n" \
            "      \"1000\",\n" \
            "      \"1001\"\n" \
            "   ]\n" \
            "}]"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/add-stores"
    method := "PUT"

    payload := strings.NewReader("[{\n" +
        "   \"url\":\"http://testDomain/webhook/data\",\n" +
        "   \"stores\":[\n" +
        "      \"1000\",\n" +
        "      \"1001\"\n" +
        "   ]\n" +
        "}]")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerimiento Descripción
url
string
opcional URL a la que se comunica el webhook.
stores
array of strings
opcional Lista de las tiendas donde se dispara el evento.

Respuesta de ejemplo

Este es un ejemplo de la respuesta:

{
   "event":"NEW_ORDER",
   "stores":[{
      "store_id":  "1000",
      "url":"http://testDomain/webhook/data",
      "state": "ENABLE"
  }]
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto en la respuesta Descripción del objeto
event
string
Nombre del evento que dispara el webhook.
stores
string
Lista de las tiendas donde se dispara el evento.
store_id
string
Id de la tienda que dispara el evento
url
string
URL a la que se comunica el webhook.
state
string
Estado del webhook. Opciones disponibles: ENABLE o DISABLE

PUT webhook - Cambiar Url

Usa este endpoint para agregar tiendas a un webhook configurado por el cliente autenticado.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/webhook/{event}/change-url

Propiedades del Endpoint

Este recurso tiene las siguientes propiedades:

Formato de respuesta JSON
Requerimientos del body de la llamada JSON
Requerimientos de autenticación Token

Parámetros

Parámetro Requerimiento Descripción
event
string
requerido El nombre del evento del webhook a actualizar

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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-url

Este es un ejemplo de la llamada:

{
  "url":"http://testDomain/webhook/data",
  "stores":[
    "1000",
    "1001"
  ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-url");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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" +
         "   \"url\":\"http://testDomain/webhook/data\",\n" +
         "   \"stores\":[\n" +
         "      \"1000\",\n" +
         "      \"1001\"\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());

var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-url',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "url":"http://testDomain/webhook/data",
    "stores":[
        "1000",
        "1001"
    ]
});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-url"

payload = "{\n" \
            "   \"url\":\"http://testDomain/webhook/data\",\n" \
            "   \"stores\":[\n" \
            "      \"1000\",\n" \
            "      \"1001\"\n" \
            "   ]\n" \
            "}"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-url"
    method := "PUT"

    payload := strings.NewReader("{\n" +
        "   \"url\":\"http://testDomain/webhook/data\",\n" +
        "   \"stores\":[\n" +
        "      \"1000\",\n" +
        "      \"1001\"\n" +
        "   ]\n" +
        "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerimiento Descripción
url
string
requerido URL a la que se comunica el webhook.
stores
array of strings
requerido Lista de las tiendas donde se dispara el evento.

Respuesta de ejemplo

Este es un ejemplo de la respuesta:

{
   "event":"NEW_ORDER",
   "stores":[{
      "store_id":  "1000",
      "url":"http://testDomain/webhook/data",
      "state": "ENABLE"
  }]
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto en la respuesta Descripción del objeto
event
string
Nombre del evento que dispara el webhook.
stores
array of Stores
Lista de las tiendas donde se dispara el evento.
store_id
string
Id de la tienda que dispara el evento
url
string
URL a la que se comunica el webhook.
state
string
Estado del webhook. Opciones disponibles: ENABLE o DISABLE

POST webhook

Usa este endpoint para crear un webhook para tus tiendas.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

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

{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 de la llamada 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/webhook

Este es un ejemplo de la llamada:

{
    "event": "test_event",
    "data": [
        {
            "url": "http://testDomain/webhook/data",
            "stores": [
                "1000",
                "1001"
            ]
        }
    ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook");

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" +
            "   \"event\":\"test_event\",\n" +
            "   \"data\": [ {" +
            "      \"url\":\"http://testDomain/webhook/data\",\n" +
            "      \"stores\":[\n" +
            "          \"1000\",\n" +
            "          \"1001\"\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());

var https = require('https');

var options = {
    'method': 'POST',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/webhook',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "event":"test_event",
    "data": [ {
        "url":"http://testDomain/webhook/data",
        "stores":[
            "1000",
            "1001"
            ]
        }
    ]
});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook"

payload = "{\n" +
          "   \"event\":\"test_event\",\n" +
          "   \"data\": [ {" +
          "      \"url\":\"http://testDomain/webhook/data\",\n" +
          "      \"stores\":[\n" +
          "          \"1000\",\n" +
          "          \"1001\"\n" +
          "      ]\n" +
          "    } ]" +
          "}"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook"
    method := "POST"

    payload := strings.NewReader("{\n" +
               "   \"event\":\"test_event\",\n" +
               "   \"data\": [ {" +
               "      \"url\":\"http://testDomain/webhook/data\",\n" +
               "      \"stores\":[\n" +
               "          \"1000\",\n" +
               "          \"1001\"\n" +
               "      ]\n" +
               "    } ]" +
               "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributo Requerimiento Descripción
event
string
requerido Nombre del evento que dispara el webhook.
data
array of Object
requerido Contiene los atributos del webhook a configurar
url
string
requerido URL a la que se comunica el webhook.
stores
array of strings
opcional Lista de las tiendas donde se dispara el evento. Si no envías este atributo, se aplica a todas las tiendas el cliente autenticado.

Ejemplo de Respuesta

Este es un ejemplo de la respuesta:

{
   "event":"test_1",
   "stores":[ {
      "url":"https://localhost:8080/test",
      "store_id": "1000",
      "state": "ENABLE"
    },
    {
      "url":"https://localhost:8080/test",
      "store_id": "1001",
      "state": "ENABLE"
    } 
   ],
   "secret":"TEST_SECRET"
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto en la respuesta Descripción del objeto
event
string
Nombre del evento que dispara el webhook.
stores
array of strings
Lista de las tiendas donde se dispara el evento.
url
string
URL a la que se comunica el webhook.
store_id
string
Id de la tienda que dispara el evento
state
string
Estado del webhook. Opciones disponibles: ENABLE o DISABLE
secret
string
Secret Key para crear la firma de seguridad de cada evento webhook.

DELETE webhook

Usa este endpoint para eliminar tiendas de un webhook.

URL del Endpoint

Usa esta URL para hacer llamadas con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/webhook/{EVENT}/remove-stores

Propiedades del Endpoint

Este recurso tiene las siguientes propiedades:

Formato de respuesta JSON
Requerimientos del body de la llamada JSON
Requerimientos de autenticación Token

Parámetros

Parámetro Requerimiento Descripción
event
string
requerido El nombre del evento del webhook a actualizar

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:

DELETE https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/remove-stores

Este es un ejemplo de la llamada:

{
   "stores":[
      "1000"
   ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/remove-stores");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("DELETE");
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" +
         "   \"stores\":[\n" +
         "      \"1000\"\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());
var https = require('https');

var options = {
    'method': 'DELETE',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/remove-stores',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "stores":[
        "1000"
    ]
});

req.setHeader('Content-Length', postData.length);

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/remove-stores"

payload = "{\n" \
         "   \"stores\":[\n" \
         "      \"1000\"\n" \
         "   ]\n" \
         "}"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/remove-stores"
    method := "DELETE"

    payload := strings.NewReader("{\n" +
        "   \"stores\":[\n" +
        "      \"1000\"\n" +
        "   ]\n" +
        "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerimiento Descripción
stores
array of strings
opcional Lista de las tiendas donde se eliminará el webhook

Ejemplo de Respuesta

Este es un ejemplo de la respuesta:

{
   "stores":[
      "1000"
   ],
   "message":"Store settings removed successfully."
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto en la respuesta Descripción del objeto
stores
array of strings
Lista de las tiendas donde se dispara el evento.
message
string
Mensaje del resultado de la llamada.

PUT webhook reset secret

Usa este endpoint para reiniciar el secret y crear uno nuevo para 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/webhook/{EVENT}/reset-secret

Propiedades del Endpoint

Este recurso tiene las siguientes propiedades:

Formato de respuesta JSON
Requerimientos del body de la llamada JSON
Requerimientos de autenticación Token

Parámetros

Parámetro Requerimiento Descripción
event
string
requerido El nombre del evento del webhook a actualizar

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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/reset-secret

Este es un ejemplo de la llamada:

URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/reset-secret");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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);

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());
var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/reset-secret',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/reset-secret"

headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "strings"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/reset-secret"
    method := "PUT"

    client := &http.Client{
    }
    req, err := http.NewRequest(method, url)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta

Este es un ejemplo de la respuesta:

{
  "event": "NEW_ORDER",
   "stores":[ {
        "store_id": "1000",
        "url": "http://localhost",
        "state": "ENABLE"
    }

   ],
   "secret":"NEW_SECRET"
}

Esta tabla describe los objectos dentro de la respuesta de ejemplo:

Objeto en la respuesta Descripción del objeto
event
string
Nombre del evento que dispara el webhook.
stores
array of strings
Lista de las tiendas donde se dispara el evento.
store_id
string
Id de la tienda
url
string
URL a la que se comunica el webhook.
state
string
Estado del webhook. Opciones disponibles: ENABLE o DISABLE
secret
string
Secret Key para crear la firma de seguridad de cada evento webhook.

PUT webhook change status

Usa este endpoint para cambiar la disponibilidad de un webhook existente.

URL del Endpoint

Utiliza esta URL para hacer una llamada con este endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/webhook/{EVENT}/change-status

Propiedades del Endpoint

Este recurso tiene las siguientes propiedades:

Formato de respuesta JSON
Requerimientos del body de la llamada 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:

PUT https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-status

Este es un ejemplo de la llamada:

{
  "stores": {
    "enable": [
      "1001"
    ],
    "disable": [
          "1000"
    ]
  }
}
URL url = new URL("https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-status");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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 = "{\"stores\": {\"enable\": [\"1001\"],\"disable\": [\"1000\" ] } }";

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());
var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-status',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    }
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "stores":{
         "enable": [
             "1001"
         ],
         "disable": [
             "1000"
         ]
    }
});

req.setHeader('Content-Length', postData.length);

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-status"

payload = "{\"stores\": {\"enable\": [\"1001\"],\"disable\": [\"1000\" ] } }"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/v2/restaurants-integrations-public-api/webhook/NEW_ORDER/change-status"
    method := "PUT"

    payload := strings.NewReader("{\"stores\": {\"enable\": [\"1001\"],\"disable\": [\"1000\" ] } }")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Esta tabla describe los atributos que el JSON de tu llamada requiere:

Atributos Requerimiento Descripción
stores
Object
requerido Objeto que contiene las listas de tiendas a habilitar o deshabilitar
enable
array of strings
opcional Lista de tiendas a habilitar
disable
array of strings
opcional Lista de tiendas a deshabilitar

Ejemplo de Respuesta

Este es un ejemplo de la respuesta:

{
   "event":"NEW_ORDER",
    "stores":[ {
          "store_id": "1001",
          "url": "http://localhost",
          "state": "ENABLE"
      },
      {
          "store_id": "1000",
          "url": "http://localhost",
          "state": "ENABLE"
      }
    ]
}

Esta tabla describe los objetos dentro de la respuesta de ejemplo:

Objeto en la respuesta Descripción del objeto
event
string
Nombre del evento que dispara el webhook.
stores
array of Stores
Lista de las tiendas donde se dispara el evento.
store_id
string
Id de la tienda que dispara el webhook
url
string
URL a la que se comunica el webhook.
state
string
Nueva disponibilidad definida en la llamada.

Utils API v1.2.0

La version v1.2.0 de Utils API incluye todos los recursos, puntos finales y métodos que ayudan a administrar el funcionamiento de su restaurante.

Las siguientes tablas contienen todos los recursos disponibles para usar con Utils API:

Recurso API Horarios de Corredor Descripción del Endpoint
GET corridor/store/{storeId} Retorna la lista de los corredores de la tienda
GET corridor/schedule/{corridorId}/store/{storeId} Retorna los horarios del corredor configurado en la tienda
POST corridor/schedule/{corridorId}/store/{storeId} Crea los horarios del corredor en la tienda
PUT corridor/schedule/{corridorId}/store/{storeId} Actualiza los horarios del corredor en la tienda
DELETE corridor/schedule/{corridorId}/store/{storeId}/{corridorProductScheduleId} Elimina los horarios del corredor en la tienda
Recurso API Horarios de Corredor por Integración Descripción del Endpoint
GET corridor/integration/{integrationId} Retorna de los corredores de la tienda
GET corridor/schedule/{corridorId}/integration/{integrationId} Retorna los horarios del corredor configurado en la tienda
POST corridor/schedule/{corridorId}/integration/{integrationId} Crea los horarios del corredor en la tienda
PUT corridor/schedule/{corridorId}/integration/{integrationId} Actualiza los horarios del corredor en la tienda
DELETE corridor/schedule/{corridorId}/integration/{integrationId}/{corridorProductScheduleId} Elimina los horarios del corredor en la tienda
Recurso API Horarios de los productos Descripción del Endpoint
GET product/corridor/{corridorId}/store/{storeId} Retorna la lista de producto por corredor y por tienda
GET product/schedule/{productId}/corridor/{corridorId}/store/{storeId} Retorna los horarios del producto configurado en la tienda
POST product/schedule/{productId}/corridor/{corridorId}/store/{storeId} Crea los horarios del producto asociados al corredor y la tienda
PUT product/schedule/{productId}/corridor/{corridorId}/store/{storeId} Actualiza los horarios del producto asociados al corredor y la tienda
DELETE product/schedule/{productId}/corridor/{corridorId}/store/{storeId}/{corridorProductScheduleId} Elimina los horarios del producto asociados al corredor y la tienda
Recurso API Horarios de los productos por SKU Descripción del Endpoint
GET sku/corridor/{corridorId}/integration/{integrationId} Retorna la lista de producto por corredor y por tienda
GET sku/schedule/{sku}/corridor/{corridorId}/integration/{integrationId} Retorna los horarios del producto configurado en la tienda
POST sku/schedule/{sku}/corridor/{corridorId}/integration/{integrationId} Crea los horarios del producto asociados al corredor y la tienda
PUT sku/schedule/{sku}/corridor/{corridorId}/integration/{integrationId} Actualiza los horarios del producto asociados al corredor y la tienda
DELETE sku/schedule/{sku}/corridor/{corridorId}/integration/{integrationId}/{corridorProductScheduleId} Elimina los horarios del producto asociados al corredor y la tienda
Recurso API Horarios de las tiendas Descripción del Endpoint
GET store/schedule/{storeId} Retorna todo el horario regular de la tienda
GET store/schedule/{storeId}/holiday Retorna todo el horario de dias festivos
GET store/schedule/{storeId}/special Retorna todo el horario de dias especiales de la tienda
POST store/schedule/{storeId} Crea una franja horaria en un día de horario regular de la tienda
POST store/schedule/{storeId}/holiday/{holidayDayId} Crea una franja horaria en un día feriado
POST store/schedule/{storeId}/special Crea un día especial de la tienda
POST store/schedule/{storeId}/special/{specialDayId} Crea una franja horaria en un día especial de la tienda
PUT store/schedule/{storeId}/{storeScheduleId} Actualiza una franja horaria
DELETE store/schedule/{storeId}/{storeScheduleId} Elimina una franja horaria
DELETE store/schedule/{storeId}/special/{specialDayId} Elimina un dia especial

Utils Getting Started

Antes de comenzar a utilizar la API de utils deben autenticarse como un aliado en Rappi. Pueden referirse en el siguiente link para mas información Getting Started

Una vez obtenidas las credenciales pueden crear el token de acceso en POST token.

Una vez generado el token de acceso, ya podemos comenzar a utilizar la API de Utils.

Utils Horarios de Corredores Por Tienda

Utilice Utils para configurar los horarios de sus tiendas.

La siguiente tabla muestra el contenido de los horarios de los corredores:

Recurso Descripción
GET corridor/store/{storeId} Retorna la lista de los corredores de la tienda
GET corridor/schedule/{corridorId}/store/{storeId} Retorna los horarios del corredor configurado en la tienda
POST corridor/schedule/{corridorId}/store/{storeId} Crea los horarios del corredor en la tienda
PUT corridor/schedule/{corridorId}/store/{storeId} Actualiza los horarios del corredor en la tienda

GET corridor/store/{storeId}

Use este endpoint para obtener la lista de los corredores de su tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}/api/rest-ops-utils/corridor/store/{storeId}

Ejemplo del Request

GET https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/store/999

Este es un request de ejemplo:

URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/store/999");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/store/999',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/store/999"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/store/999"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Authentication requirements Token

Parámetros

Este recurso no utiliza parámetros.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo de la Respuesta

[
    {
        "id": 123,
        "name": "Bebidas Calientes",
        "description": "Corredor Bebidas Calientes",
        "storeId": 999
    },
    {
        "id": 321,
        "name": "Bebidas Frias",
        "description": "Corredor Bebidas Frias",
        "storeId": 999
    }
]

La tabla detalla los campos que puede devolver la respuesta:

Campos de Respuesta Descripción
id
integer
Id del corredor.
name
string
Nombre del corredor.
description
string
Descripción del corredor .
storeId
integer
Id de la tienda que contiene el corredor.

GET corridor/schedule/{corridorId}/store/{storeId}

Utilice este endpoint para obtener los horarios del corredor de su tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}/api/rest-ops-utils/corridor/schedule/{corridorId}/store/{storeId}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Authentication requirements Token

Parámetros

Este recurso no utiliza parámetros.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

GET https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/store/999

Ejemplo completo del request:

URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/store/999");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/schedule/321/store/999',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/store/999"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/store/999"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta

{
    "corridor_id": 321,
    "store_id": 999,
    "schedule_details": [
        {
            "id": 1,
            "days": "mon,tue,wed,thu,fri,sat,sun,hol",
            "starts_time": "08:00:00",
            "ends_time": "20:00:00"
        }
    ]
}

Esta tabla detalla los campos que contienen la respuesta:

Campos de Respuesta Descripción
corridor_id
integer
Id del corredor.
store_id
integer
Id de la tienda en Rappi.
schedule_details
array of objects
Lista de horarios del corredor.
schedule_details.id
integer
Id del horario del corredor
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss

POST corridor/schedule/{corridorId}/store/{storeId}

Utilice este endpoint para crear los horarios del corredor de su tienda.

Endpoint URL

https://{COUNTRY_DOMAIN}/api/rest-ops-utils/corridor/schedule/{corridorId}/store/{storeId}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Request body requirements JSON
Authentication requirements Token

Parámetros

This endpoint does not permit additional parameters.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

Ejemplo de cómo enviar el request a la API:

POST https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999

Ejemplo del request:

{
  "schedule_details": [
    {
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "08:00:00",
        "ends_time": "20:00:00"
    },
    {
        "days": "hol",
        "starts_time": "13:00:00",
        "ends_time": "22:00:00"
    }
  ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999");

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" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"08:00:00\",\n" +
        "        \"ends_time\": \"20:00:00\"\n" +
        "    },\n" +
        "    {\n" +
        "        \"days\": \"hol\",\n" +
        "        \"starts_time\": \"13:00:00\",\n" +
        "        \"ends_time\": \"22:00:00\"\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());

var https = require('https');

var options = {
    'method': 'POST',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/schedule/123/store/999',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "schedule_details": [
    {
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "08:00:00",
        "ends_time": "20:00:00"
    },
    {
        "days": "hol",
        "starts_time": "13:00:00",
        "ends_time": "22:00:00"
    }
]});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999"

payload = "{\n" +
            "  \"schedule_details\": [\n" +
            "    {\n" +
            "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
            "        \"starts_time\": \"08:00:00\",\n" +
            "        \"ends_time\": \"20:00:00\"\n" +
            "    },\n" +
            "    {\n" +
            "        \"days\": \"hol\",\n" +
            "        \"starts_time\": \"13:00:00\",\n" +
            "        \"ends_time\": \"22:00:00\"\n" +
            "    }\n" +
            "  ]\n" +
            "}"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999"
    method := "POST"

    payload := strings.NewReader(""{\n" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"08:00:00\",\n" +
        "        \"ends_time\": \"20:00:00\"\n" +
        "    },\n" +
        "    {\n" +
        "        \"days\": \"hol\",\n" +
        "        \"starts_time\": \"13:00:00\",\n" +
        "        \"ends_time\": \"22:00:00\"\n" +
        "    }\n" +
        "  ]\n" +
        "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

La siguiente tabla describe cuales son los campos requeridos del request:

Atributos Requerido Description
schedule_details
array of objects
required Lista de horarios del corredor.
schedule_details.days
string
requered Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
requered Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
requered Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss

Ejemplo de Respuesta

{
    "corridor_id": 123,
    "store_id": 999,
    "schedule_details": [
        {
            "id": 2,
            "days": "mon,tue,wed,thu,fri,sat,sun",
            "starts_time": "08:00:00",
            "ends_time": "20:00:00"
        },
        {
            "id": 3,
            "days": "hol",
            "starts_time": "13:00:00",
            "ends_time": "22:00:00"
        }
    ]
}

La siguiente tabla detalla los campos que contiene la respuesta:

Campos de Respuesta Descripción
corridor_id
integer
Id del corredor.
store_id
integer
Id de la tienda.
schedule_details
array of objects
Lista de horarios del corredor.
schedule_details.id
integer
Id del horario de un corredor.
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss

PUT corridor/schedule/{corridorId}/store/{storeId}

Utilice este endpoint para actualizar los horarios del corredor de su tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}api/rest-ops-utils/corridor/schedule/{corridorId}/store/{storeId}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Request body requirements JSON
Authentication requirements Token

Parámetros

Este recurso no utiliza parámetros.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

PUT https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999

Ejemplo del request:

{
  "schedule_details": [
    {
        "id": 2,
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "10:00:00",
        "ends_time": "16:00:00"
    }
  ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"id\": 2,\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"10:00:00\",\n" +
        "        \"ends_time\": \"16:00:00\"\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());

var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/schedule/123/store/999',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "schedule_details": [
    {
        "id": 2,
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "10:00:00",
        "ends_time": "16:00:00"
    }
]});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999"

payload = "{\n" +
            "  \"schedule_details\": [\n" +
            "    {\n" +
            "        \"id\": 2,\n" +
            "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
            "        \"starts_time\": \"10:00:00\",\n" +
            "        \"ends_time\": \"16:00:00\"\n" +
            "    }\n" +
            "  ]\n" +
            "}"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999"
    method := "PUT"

    payload := strings.NewReader(""{\n" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"id\": 2,\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"10:00:00\",\n" +
        "        \"ends_time\": \"16:00:00\"\n" +
        "    }\n" +
        "  ]\n" +
        "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

La siguiente tabla detalla los atributos requeridos para el Request:

Atributos Requerido Descripción
schedule_details
array of objects
required Lista de horarios del corredor.
schedule_details.id
integer
required Id del horario del corredor.
schedule_details.days
string
requered Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
requered Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
requered Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss

Ejemplo de la Respuesta

{
    "corridor_id": 123,
    "store_id": 999,
    "schedule_details": [
        {
            "id": 2,
            "days": "mon,tue,wed,thu,fri,sat,sun",
            "starts_time": "10:00:00",
            "ends_time": "16:00:00"
        }
    ]
}

La siguiente tabla detalla los campos que contiene la respuesta:

Campos de la Respuesta Descripción
corridor_id
integer
Id del corredor.
store_id
integer
Id de la tienda en Rappi.
schedule_details
array of objects
Lista de horarios del corredor.
schedule_details.id
integer
Id del horario del corredor.
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss

DELETE corridor/schedule/{corridorId}/store/{storeId}/{corridorProductScheduleId}

Utilice este endpoint para actualizar los horarios del corredor de su tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}api/rest-ops-utils/corridor/schedule/{corridorId}/store/{storeId}/{corridorProductScheduleId}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Authentication requirements Token

Parámetros

Este recurso no utiliza parámetros.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

PUT https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999/2541

URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999/2541");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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);


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());

var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/schedule/123/store/999/2541',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999/2541"

headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/store/999/2541"
    method := "PUT"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de la Respuesta

{
    "corridor_id": 123,
    "store_id": 999,
    "schedule_details": [
        {
            "id": 2,
            "days": "mon,tue,wed,thu,fri,sat,sun",
            "starts_time": "10:00:00",
            "ends_time": "16:00:00"
        }
    ]
}

La siguiente tabla detalla los campos que contiene la respuesta:

Campos de la Respuesta Descripción
corridor_id
integer
Id del corredor.
store_id
integer
Id de la tienda en Rappi.
schedule_details
array of objects
Lista de horarios del corredor que siguen disponibles.
schedule_details.id
integer
Id del horario del corredor.
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss

Utils Horarios de Corredores por Integración Id

Utilice Utils para configurar los horarios de sus tiendas.

La siguiente tabla muestra el contenido de los horarios de los corredores:

Recurso Descripción
GET corridor/integration/{integrationId} Retorna la lista de los corredores de la tienda
GET corridor/schedule/{corridorId}/integration/{integrationId} Retorna los horarios del corredor configurado en la tienda
POST corridor/schedule/{corridorId}/integration/{integrationId} Crea los horarios del corredor en la tienda
PUT corridor/schedule/{corridorId}/integration/{integrationId} Actualiza los horarios del corredor en la tienda

GET corridor/integration/{integrationId}

Use este endpoint para obtener la lista de los corredores de su tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}/api/rest-ops-utils/corridor/integration/{integrationId}

Ejemplo del Request

GET https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/integration/888

Este es un request de ejemplo:

URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/integration/888");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/integration/888',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/integration/888"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/integration/888"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Authentication requirements Token

Parámetros

Este recurso no utiliza parámetros.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo de la Respuesta

[
    {
        "id": 123,
        "name": "Bebidas Calientes",
        "description": "Corredor Bebidas Calientes",
        "integrationId": "888"
    },
    {
        "id": 321,
        "name": "Bebidas Frias",
        "description": "Corredor Bebidas Frias",
        "integrationId": "888"
    }
]

La tabla detalla los campos que puede devolver la respuesta:

Campos de Respuesta Descripción
id
integer
Id del corredor.
name
string
Nombre del corredor.
description
string
Descripción del corredor .
integrationId
string
Id de la tienda que contiene el corredor.

GET corridor/schedule/{corridorId}/integration/{integrationId}

Utilice este endpoint para obtener los horarios del corredor de su tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}/api/rest-ops-utils/corridor/schedule/{corridorId}/integration/{integrationId}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Authentication requirements Token

Parámetros

Este recurso no utiliza parámetros.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

GET https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/integration/888

Ejemplo completo del request:

URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/integration/888");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/schedule/321/integration/888',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/integration/888"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/integration/888"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta

{
    "corridor_id": 321,
    "integration_id": "888",
    "schedule_details": [
        {
            "id": 1,
            "days": "mon,tue,wed,thu,fri,sat,sun,hol",
            "starts_time": "08:00:00",
            "ends_time": "20:00:00"
        }
    ]
}

Esta tabla detalla los campos que contienen la respuesta:

Campos de Respuesta Descripción
corridor_id
integer
Id del corredor.
integration_id
string
Id de la tienda del aliado
schedule_details
array of objects
Lista de horarios del corredor.
schedule_details.id
integer
Id del horario del corredor
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 houras HH:mm:ss

POST corridor/schedule/{corridorId}/integration/{integrationId}

Utilice este endpoint para crear los horarios del corredor de su tienda.

Endpoint URL

https://{COUNTRY_DOMAIN}/api/rest-ops-utils/corridor/schedule/{corridorId}/integration/{integrationId}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Request body requirements JSON
Authentication requirements Token

Parámetros

This endpoint does not permit additional parameters.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

Ejemplo de cómo enviar el request a la API:

POST https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/integration/888

Ejemplo del request:

{
  "schedule_details": [
    {
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "08:00:00",
        "ends_time": "20:00:00"
    },
    {
        "days": "hol",
        "starts_time": "13:00:00",
        "ends_time": "22:00:00"
    }
  ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/integration/888");

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" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"08:00:00\",\n" +
        "        \"ends_time\": \"20:00:00\"\n" +
        "    },\n" +
        "    {\n" +
        "        \"days\": \"hol\",\n" +
        "        \"starts_time\": \"13:00:00\",\n" +
        "        \"ends_time\": \"22:00:00\"\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());

var https = require('https');

var options = {
    'method': 'POST',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/schedule/123/integration/888',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "schedule_details": [
    {
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "08:00:00",
        "ends_time": "20:00:00"
    },
    {
        "days": "hol",
        "starts_time": "13:00:00",
        "ends_time": "22:00:00"
    }
]});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/integration/888"

payload = "{\n" +
            "  \"schedule_details\": [\n" +
            "    {\n" +
            "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
            "        \"starts_time\": \"08:00:00\",\n" +
            "        \"ends_time\": \"20:00:00\"\n" +
            "    },\n" +
            "    {\n" +
            "        \"days\": \"hol\",\n" +
            "        \"starts_time\": \"13:00:00\",\n" +
            "        \"ends_time\": \"22:00:00\"\n" +
            "    }\n" +
            "  ]\n" +
            "}"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/integration/888"
    method := "POST"

    payload := strings.NewReader(""{\n" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"08:00:00\",\n" +
        "        \"ends_time\": \"20:00:00\"\n" +
        "    },\n" +
        "    {\n" +
        "        \"days\": \"hol\",\n" +
        "        \"starts_time\": \"13:00:00\",\n" +
        "        \"ends_time\": \"22:00:00\"\n" +
        "    }\n" +
        "  ]\n" +
        "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

La siguiente tabla describe cuales son los campos requeridos del request:

Atributos Requerido Description
schedule_details
array of objects
required Lista de horarios del corredor.
schedule_details.days
string
requered Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
requered Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
requered Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 houras HH:mm:ss

Ejemplo de Respuesta

{
    "corridor_id": 123,
    "integration_id": "888",
    "schedule_details": [
        {
            "id": 2,
            "days": "mon,tue,wed,thu,fri,sat,sun",
            "starts_time": "08:00:00",
            "ends_time": "20:00:00"
        },
        {
            "id": 3,
            "days": "hol",
            "starts_time": "13:00:00",
            "ends_time": "22:00:00"
        }
    ]
}

La siguiente tabla detalla los campos que contiene la respuesta:

Campos de Respuesta Descripción
corridor_id
integer
Id del corredor.
integration_id
integer
Id de la tienda del aliado.
schedule_details
array of objects
Lista de horarios del corredor.
schedule_details.id
integer
Id del horario de un corredor.
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 houras HH:mm:ss

PUT corridor/schedule/{corridorId}/integration/{integrationId}

Utilice este endpoint para actualizar los horarios del corredor de su tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}api/rest-ops-utils/corridor/schedule/{corridorId}/integration/{integrationId}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Request body requirements JSON
Authentication requirements Token

Parámetros

Este recurso no utiliza parámetros.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

PUT https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/integration/888

Ejemplo del request:

{
  "schedule_details": [
    {
        "id": 2,
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "10:00:00",
        "ends_time": "16:00:00"
    }
  ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/integration/888");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"id\": 2,\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"10:00:00\",\n" +
        "        \"ends_time\": \"16:00:00\"\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());

var https = require('https');

var options = {
    'method': 'PUT',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/schedule/123/integration/888',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "schedule_details": [
    {
        "id": 2,
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "10:00:00",
        "ends_time": "16:00:00"
    }
]});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/integration/888"

payload = "{\n" +
            "  \"schedule_details\": [\n" +
            "    {\n" +
            "        \"id\": 2,\n" +
            "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
            "        \"starts_time\": \"10:00:00\",\n" +
            "        \"ends_time\": \"16:00:00\"\n" +
            "    }\n" +
            "  ]\n" +
            "}"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/123/integration/888"
    method := "PUT"

    payload := strings.NewReader(""{\n" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"id\": 2,\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"10:00:00\",\n" +
        "        \"ends_time\": \"16:00:00\"\n" +
        "    }\n" +
        "  ]\n" +
        "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

La siguiente tabla detalla los atributos requeridos para el Request:

Atributos Requerido Descripción
schedule_details
array of objects
required Lista de horarios del corredor.
schedule_details.id
integer
required Id del horario del corredor.
schedule_details.days
string
requered Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
requered Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
requered Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 houras HH:mm:ss

Ejemplo de la Respuesta

{
    "corridor_id": 123,
    "integration_id": "888",
    "schedule_details": [
        {
            "id": 2,
            "days": "mon,tue,wed,thu,fri,sat,sun",
            "starts_time": "10:00:00",
            "ends_time": "16:00:00"
        }
    ]
}

La siguiente tabla detalla los campos que contiene la respuesta:

Campos de la Respuesta Descripción
corridor_id
integer
Id del corredor.
integration_id
integer
Id de la tienda del aliado.
schedule_details
array of objects
Lista de horarios del corredor.
schedule_details.id
integer
Id del horario del corredor.
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 houras HH:mm:ss

DELETE corridor/schedule/{corridorId}/integration/{integrationId}/{corridorProductScheduleId}

Utilice este endpoint para eliminar los horarios del corredor de su tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}/api/rest-ops-utils/corridor/schedule/{corridorId}/integration/{integrationId}/{corridorProductScheduleId}

Propiedades del Endpoint

Este recurso utiliza las siguientes propiedades:

Response formats JSON
Authentication requirements Token

Parámetros

Este recurso no utiliza parámetros.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

DELETE https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/integration/888/254

Ejemplo completo del request:

URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/integration/888/254");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("DELETE");
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());
var https = require('https');

var options = {
    'method': 'DELETE',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/schedule/321/integration/888/254',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/integration/888/254"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/corridor/schedule/321/integration/888/254"
    method := "DELETE"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de Respuesta

{
    "corridor_id": 321,
    "integration_id": "888",
    "schedule_details": [
        {
            "id": 1,
            "days": "mon,tue,wed,thu,fri,sat,sun,hol",
            "starts_time": "08:00:00",
            "ends_time": "20:00:00"
        }
    ]
}

Esta tabla detalla los campos que contienen la respuesta:

Campos de Respuesta Descripción
corridor_id
integer
Id del corredor.
integration_id
string
Id de la tienda del aliado
schedule_details
array of objects
Lista de horarios del corredor que siguen disponibles.
schedule_details.id
integer
Id del horario del corredor
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 houras HH:mm:ss

Utils Horarios de los Productos por Product Id

Utilice Utils para configurar los horarios de sus tiendas.

La siguiente tabla muestra el contenido de los horarios de los productos en el corredor:

Recurso Descripción
GET product/corridor/{corridorId}/store/{storeId} Retorna la lista de los productos del corredor y tienda
GET product/schedule/{productId}/corridor/{corridorId}/store/{storeId} Retorna los horarios de un producto configurados por corredor y tienda
POST product/schedule/{productId}/corridor/{corridorId}/store/{storeId} Crea los horarios de un producto por corredor y tienda
PUT product/schedule/{productId}/corridor/{corridorId}/store/{storeId} Actualiza los horarios de un producto por corredor y tienda

GET product/corridor/{corridorId}/store/{storeId}

Use este endpoint para obtener la lista de los productos configurados por corredores y tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}/api/rest-ops-utils/product/corridor/{corridorId}/store/{storeId}

Ejemplo del Request

Ejemplo de cómo llamar a la API usando este Endpoint:

GET https://microservices.dev.rappi.com/api/rest-ops-utils/product/corridor/123/store/999

Ejemplo del Request:

URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/product/corridor/123/store/999");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/corridor/store/999',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/product/corridor/123/store/999"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/product/corridor/123/store/999"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Propiedades del Endpoint

Las propiedades del Endpoint son las siguientes:

Response formats JSON
Authentication requirements Token

Parámetros

Este endpoint no permite parámetros adicionales.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo de la Respuesta

Ejemplo de la respuesta:

[
    {
        "product_id": 789,
        "name": "Americano Caliente 16 oz",
        "description": "16 oz. Espresso con agua caliente.",
        "corridor_id": 123,
        "store_id": 999
    },
    {
        "product_id": 987,
        "name": "Americano Caliente 20 oz",
        "description": "20 oz. Espresso con agua caliente.",
        "corridor_id": 123,
        "store_id": 999
    }
]

La tabla detalla los campos que puede devolver la respuesta:

Campos de Respuesta Descripción
product_id
integer
Identificador del producto.
name
string
Nombre del producto.
description
string
Descripción del producto.
corridor_id
integer
Identificador del corredor.
store_id
integer
Identificador de la tienda en Rappi.

GET product/schedule/{productId}/corridor/{corridorId}/store/{storeId}

Use este endpoint para obtener los horarios del producto configurado por corredores y tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}/api/rest-ops-utils/product/schedule/{productId}/corridor/{corridorId}/store/{storeId}

Propiedades del Endpoint

Las propiedades del Endpoint son las siguientes:

Response formats JSON
Authentication requirements Token

Parámetros

Este endpoint no permite parámetros adicionales.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

Ejemplo de cómo llamar a la API usando este Endpoint:

GET https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/{productId}/corridor/{corridorId}/store/{storeId}

Ejemplo del Request:

URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/789/corridor/123/store/999");

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());
var https = require('https');

var options = {
    'method': 'GET',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/product/schedule/789/corridor/123/store/999',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/789/corridor/123/store/999"

payload = {}
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/789/corridor/123/store/999"
    method := "GET"

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

Ejemplo de la Respuesta

Ejemplo de la respuesta:

{
    "product_id": 789,
    "corridor_id": 123,
    "store_id": 999,
    "schedule_details": [
        {
            "id": 4,
            "days": "mon,tue,wed,thu,fri,sat,sun,hol",
            "starts_time": "08:00:00",
            "ends_time": "23:00:00"
        }
    ]
}

La tabla detalla los campos que puede devolver la respuesta:

Campos de Respuesta Descripción
product_id
integer
Identificador del producto en Rappi.
corridor_id
integer
Identificador del corredor en Rappi.
store_id
integer
Identificador de la tienda en Rappi.
schedule_details
array of objects
Lista del horarios que el producto está disponible.
schedule_details.id
integer
Identificador del horario del producto.
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss

POST product/schedule/{productId}/corridor/{corridorId}/store/{storeId}

Use este endpoint para crear los horarios del producto configurados por corredores y tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}api/rest-ops-utils/product/schedule/{productId}/corridor/{corridorId}/store/{storeId}

Propiedades del Endpoint

Las propiedades del Endpoint son las siguientes:

Response formats JSON
Request body requirements JSON
Authentication requirements Token

Parámetros

Este endpoint no permite parámetros adicionales.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

Ejemplo de cómo llamar a la API usando este Endpoint:

POST https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/789/corridor/123/store/999

Ejemplo del Request:

{
  "schedule_details": [
    {
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "08:00:00",
        "ends_time": "20:00:00"
    },
    {
        "days": "hol",
        "starts_time": "13:00:00",
        "ends_time": "22:00:00"
    }
  ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/789/corridor/123/store/999");

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" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"08:00:00\",\n" +
        "        \"ends_time\": \"20:00:00\"\n" +
        "    },\n" +
        "    {\n" +
        "        \"days\": \"hol\",\n" +
        "        \"starts_time\": \"13:00:00\",\n" +
        "        \"ends_time\": \"22:00:00\"\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());

var https = require('https');

var options = {
    'method': 'POST',
    'hostname': 'microservices.dev.rappi.com',
    'path': '/api/rest-ops-utils/product/schedule/789/corridor/123/store/999',
    'headers': {
        'Content-Type': 'application/json',
        'x-authorization': 'bearer YOUR_TOKEN'
    },
};

var req = https.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

var postData = JSON.stringify({
    "schedule_details": [
    {
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "08:00:00",
        "ends_time": "20:00:00"
    },
    {
        "days": "hol",
        "starts_time": "13:00:00",
        "ends_time": "22:00:00"
    }
]});

req.write(postData);

req.end();
import requests

url = "https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/789/corridor/123/store/999"

payload = "{\n" +
            "  \"schedule_details\": [\n" +
            "    {\n" +
            "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
            "        \"starts_time\": \"08:00:00\",\n" +
            "        \"ends_time\": \"20:00:00\"\n" +
            "    },\n" +
            "    {\n" +
            "        \"days\": \"hol\",\n" +
            "        \"starts_time\": \"13:00:00\",\n" +
            "        \"ends_time\": \"22:00:00\"\n" +
            "    }\n" +
            "  ]\n" +
            "}"
headers = {
   'Content-Type': 'application/json',
   'x-authorization': 'bearer YOUR_TOKEN'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/789/corridor/123/store/999"
    method := "POST"

    payload := strings.NewReader(""{\n" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"days\": \"mon,tue,wed,thu,fri,sat,sun\",\n" +
        "        \"starts_time\": \"08:00:00\",\n" +
        "        \"ends_time\": \"20:00:00\"\n" +
        "    },\n" +
        "    {\n" +
        "        \"days\": \"hol\",\n" +
        "        \"starts_time\": \"13:00:00\",\n" +
        "        \"ends_time\": \"22:00:00\"\n" +
        "    }\n" +
        "  ]\n" +
        "}")

    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-authorization", "bearer YOUR_TOKEN")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}

La siguiente tabla detalla los atributos requeridos para el Request:

Atributos Requerido Descripción
schedule_details
array of objects
required Lista de horarios del corredor.
schedule_details.days
string
requered Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
requered Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
requered Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss

Ejemplo de la Respuesta

Ejemplo de la respuesta:

{
    "product_id": 789,
    "corridor_id": 123,
    "store_id": 999,
    "schedule_details": [
        {
            "id": 5,
            "days": "mon,tue,wed,thu,fri,sat,sun",
            "starts_time": "08:00:00",
            "ends_time": "20:00:00"
        },
        {
            "id": 6,
            "days": "hol",
            "starts_time": "13:00:00",
            "ends_time": "22:00:00"
        }
    ]
}

La siguiente tabla detalla los campos que contiene la respuesta:

Campos de la Respuesta Descripción
product_id
integer
Id del producto en Rappi.
corridor_id
integer
Id del corredor en Rappi.
store_id
integer
Id de la tienda en Rappi.
schedule_details
array of objects
Lista de horarios del corredor.
schedule_details.id
integer
Id del horario del corredor.
schedule_details.days
string
Días del horario. Días de la semana: "mon,tue,wed,thu,fri,sat,sun", Vacaciones: "hol".
schedule_details.starts_time
string
Tiempo desde que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss
schedule_details.ends_time
string
Tiempo hasta que el corredor va a estar disponible para el usuario. Formato en 24 horas HH:mm:ss

PUT product/schedule/{productId}/corridor/{corridorId}/store/{storeId}

Use este endpoint para actualizar los horarios del producto configurados por corredores y tienda.

Endpoint URL

Utilice esta URL para llamar al endpoint:

https://{COUNTRY_DOMAIN}api/rest-ops-utils/product/schedule/{productId}/corridor/{corridorId}/store/{storeId}

Propiedades del Endpoint

Las propiedades del Endpoint son las siguientes:

Response formats JSON
Request body requirements JSON
Authentication requirements Token

Parámetros

Este endpoint no permite parámetros adicionales.

Status Codes

Hay diversas respuestas para este endpoint:

Ejemplo del Request

Ejemplo de cómo llamar a la API usando este Endpoint:

PUT https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/789/corridor/123/store/999

Ejemplo del Request:

{
  "schedule_details": [
    {
        "id": 5,
        "days": "mon,tue,wed,thu,fri,sat,sun",
        "starts_time": "10:00:00",
        "ends_time": "16:00:00"
    }
  ]
}
URL url = new URL("https://microservices.dev.rappi.com/api/rest-ops-utils/product/schedule/789/corridor/123/store/999");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
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" +
        "  \"schedule_details\": [\n" +
        "    {\n" +
        "        \"id\": 5,\n" +