Stores

The Stores resource enables you to interact with your stores.

The following table describes the different contents of the Stores resource:

API ResourceEndpoint description
GET stores-paReturns the list of stores for the authenticated client
PUT stores-pa/{storeId}/statusUpdate a store to integrated or not integrated
GET stores-pa/{storeId}/check-in-code/Returns the check-in code of a store belonging to an authenticated client.
GET /stores/integration-statusCheck which stores are integrated and which are not (Self-Onboarding)
POST /stores/provisioningProvision stores for an integration in batch (Self-Onboarding)
POST /stores/deprovisioningDeprovision stores from an integration in batch (Self-Onboarding)

GET stores-pa

Use this endpoint to retrieve the stores of an authenticating ally.

Endpoint URL

Use this URL to make a request with this endpoint:

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

{COUNTRY_DOMAIN}: This is your Rappi Country Domain. See the list of Country Domains.

Endpoint Properties

This resource has the following properties:

Response formatsJSON
Authentication requirementsToken

Parameters

This endpoint does not permit additional parameters.

Status Codes

These are the possible status codes of the response for this endpoint:

Sample Request

This is an example of an API request using this endpoint:

GET https://api.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa

This is an example of the request:

URL url = new URL("https://api.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa"); 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());



Sample Response "Success 200"

This is an example of the response "Success 200":

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

This table describes the objects contained in the response example:

ObjectDescription
integrationId
string
Identifier of the store in the Rappi application
rappiId
string
Identifier that Rappi granted the ally
name
string
Name of the store in the Rappi application

Sample Response "Invalid credentials 401"

This is an example of the response "Invalid credentials 401":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

Sample Response "App Client no encontrado 404"

This is an example of the response "App Client no encontrado 404":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

PUT store-pa integrated status

Use this endpoint to change a store to integrated or to not integrated

Endpoint URL

Use this URL to make a request with this endpoint:

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

{COUNTRY_DOMAIN}: This is your Rappi Country Domain. See the list of Country Domains.

Endpoint Properties

This resource has the following properties:

Response formatsJSON
Authentication requirementsToken

Parameters

This endpoint has the following parameters:

ParameterDescription
{storeId}Path Param. Store Id from rappi
{integrated}Query Param. To indicate whether the store is changed to "integrated" (true) o "not integrated" (false)

Status Codes

These are the possible status codes of the response for this endpoint:

Sample Request

This is an example of an API request using this endpoint:

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

This is an example of the request:

URL url = new URL("https://api.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());



Sample Response "Success 200"

This is an example of the response "Success 200" when updating a store to "integrated"

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

This is an example of the response "Success 200" when updating a store to "not integrated"

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

This table describes the objects contained in the response example:

ObjetoDescripción
message
string
Mensaje con la información del cambio realizado

Sample Response "Invalid credentials 401"

This is an example of the response "Invalid credentials 401":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

Sample Response "App Client no encontrado 404"

This is an example of the response "App Client no encontrado 404":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

Sample Response "Error while updating the store 400"

This is an example of the response "Error while updating the store 400":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

GET store current menu

Use this endpoint to retrieve the menu from the stores.

Endpoint URL

Use this URL to make a request with this endpoint:

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

{COUNTRY_DOMAIN}: This is your Rappi Country Domain. See the list of Country Domains.

{STORE_ID}: This is the store id from Rappi.

Endpoint Properties

This resource has the following properties:

Response formatsJSON
Authentication requirementsToken

Parameters

This endpoint does not permit additional parameters.

Status Codes

These are the possible status codes of the response for this endpoint:

Sample Request

This is an example of an API request using this endpoint:

GET https://internal-api.dev.rappi.com/api/v2/restaurants-integrations-public-api/store/900111941/menu/current

This is an example of the request:

URL url = new URL("https://internal-api.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());



Sample Response "Success 200"

This is an example of the response "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:" } } ] } ] } ]

This table describes the objects contained in the response example:

ObjectDescription
storeId
string
Rappi Id from the Store
products
array of objects
List of products
products.id
string
Rappi Id from toppings
products.name
string
Product name
products.price
integer
Product price
products.toppings
array of objects
List of toppings
products.toppings.id
string
Rappi Id from the topping
products.toppings.name
string
Topping name
products.toppings.price
integer
Topping price
products.toppings.category
objects
Topping category
products.toppings.category.id
string
Rappi Id from Topping Category
products.toppings.category.name
string
Topping Category name

Sample Response "Invalid credentials 401"

This is sample response "Invalid credentials 401":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

Sample Response "App Client not found 404"

This is sample response "App Client no encontrado 404":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

Sample Response "Store not found in App Client 400"

This is sample response "Store not found in App Client 400":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

GET stores-pa check in code

Use this endpoint to get the authenticated partner's store check-in code.

Endpoint URL

Use this URL to make a request with this endpoint:

https://{COUNTRY_DOMAIN}/api/v2/restaurants-integrations-public-api/stores-pa/{storeId}/check-in-code

{COUNTRY_DOMAIN}: This is your Rappi Country Domain. See the list of Country Domains.

{STORE_ID}: This is the store id from Rappi.

Endpoint Properties

This resource has the following properties:

Response formatsJSON
Authentication requirementsToken

Parameters

This endpoint has the following parameter:

ParameterDescription
{storeId}Path Param. Store Id from rappi

Status Codes

These are the possible status codes of the response for this endpoint:

Sample Request

This is an example of an API request using this endpoint:

GET https://api.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa/900105433/check-in-code

This is an example of the request:

URL url = new URL("https://api.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores-pa/900105433/check-in-code"); 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());



Sample Response "Success 200"

This is an example of the response "Success 200":

{ "store_id": 900105433, "code": "8733", "expired_at": "2023-01-25 16:26:35", "created_at": "2023-01-23 13:51:06", "updated_at": "2023-01-24 16:26:35" }

This table describes the objects contained in the response example:

ObjectDescription
store_id
int
Store Id in the Rappi App
code
string
Store check-in code assigned by Rappi
expired_at
string
Expiration date of the check-in code assigned to the store
created_at
string
Creation date of the check-in code assigned for the store
updated_at
string
Update date of the check-in code assigned to the store

Sample Response "The store does not belong to the App Client 400"

This is an example of the response "The store does not belong to the App Client 400":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

Sample Response "Invalid credentials 401"

This is an example of the response "Invalid credentials 401":

{ "message": "Access is denied" }

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

Sample Response "App Client not found 404"

This is an example of the response "App Client not found 404":

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

This table describes the objects contained in the response example:

ObjectDescription
message
string
Descriptive error message

GET integration-status

Use this endpoint to check which stores are already integrated and which are not. Store IDs are fetched automatically from the merchant's JWT email — no request body is needed.

Endpoint URL

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

{COUNTRY_DOMAIN}: This is your Rappi Country Domain. See the list of Country Domains.

Endpoint Properties

Response formatsJSON
Authentication requirementsBearer integrator JWT (Authorization) + Bearer merchant JWT (Authorization-Partners)

Parameters

HeaderRequirementDescription
AuthorizationrequiredBearer <integrator JWT> — M2M token issued by Auth0
Authorization-PartnersrequiredBearer <merchant JWT> — OAuth2 token issued by Auth0; email extracted internally to identify merchant's stores

Status Codes

Sample Request

GET https://api.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores/integration-status

Sample Response "Success 200"

This is an example of the response "Success 200":

{ "stores": [ { "storeId": "1", "name": "Your Brand Main", "brand": "YourBrand", "integrated": true, "integrationId": "your-integration-id", "children": [ { "storeId": "3", "name": "Child Store 3", "brand": "YourBrand", "integrated": true, "integrationId": "your-integration-id" }, { "storeId": "4", "name": "Child Store 4", "brand": "YourBrand", "integrated": false } ] }, { "storeId": "2", "name": "Your Brand Secondary", "brand": "YourBrand", "integrated": true, "integrationId": "your-integration-id", "children": [] }, { "storeId": "10", "name": "Sertester1", "brand": "YourBrand", "integrated": false, "children": [ { "storeId": "20", "name": "Sertester1 Child 1", "brand": "YourBrand", "integrated": false }, { "storeId": "21", "name": "Sertester1 Child 2", "brand": "YourBrand", "integrated": false } ] }, { "storeId": "11", "name": "FIFOUno", "brand": "YourBrand", "integrated": false, "children": [] } ] }

This table describes the objects contained in the response example:

ObjectDescription
stores
array of objects
All parent stores belonging to the merchant (both integrated and not integrated). Child stores appear nested inside children, not at the top level.
stores[].storeId
string
Rappi store ID
stores[].name
string
Store display name
stores[].brand
string
Brand name resolved from Portal Partners
stores[].integrated
boolean
true if the store is currently integrated; false otherwise
stores[].integrationId
string
Integration identifier the store is provisioned under. Only present when integrated is true.
stores[].children
array of objects
Child stores belonging to this parent. Always present (empty array if none).
stores[].children[].storeId
string
Child store Rappi ID
stores[].children[].name
string
Child store display name
stores[].children[].brand
string
Brand name of the child store
stores[].children[].integrated
boolean
true if the child is currently integrated; false otherwise
stores[].children[].integrationId
string
Integration identifier. Only present when integrated is true.

Sample Response "Unauthorized 401"

This is an example of the response "Unauthorized 401":

{ "message": "Not a valid token" }
ObjectDescription
message
string
Descriptive error message

POST provisioning

Use this endpoint to provision stores for a POS integration in batch. This operation is asynchronous — the API returns 202 Accepted immediately. The result is delivered via the STORE_PROVISIONING_STATUS webhook.

Endpoint URL

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

{COUNTRY_DOMAIN}: This is your Rappi Country Domain. See the list of Country Domains.

Endpoint Properties

Response formatsJSON
Authentication requirementsBearer integrator JWT (Authorization) + Bearer merchant JWT (Authorization-Partners)

Parameters

HeaderRequirementDescription
AuthorizationrequiredBearer <integrator JWT> — M2M token issued by Auth0
Authorization-PartnersrequiredBearer <merchant JWT> — OAuth2 token issued by Auth0

Request Body

AttributeRequirementDescription
stores
array of objects
requiredList of stores to provision. Maximum 20 per request.
stores[].storeId
string
requiredRappi store ID to provision
stores[].name
string
requiredStore display name. Used to identify the store in the integration.
stores[].integrationId
string
requiredIntegration identifier to associate the store with (e.g. your-integration-id)
stores[].storeIntegrationId
string
optionalStore identifier in the POS system (StoreID at POS). Used to correlate the Rappi store with the corresponding store in the integrator's system. If not provided, the Rappi storeId is used.

Status Codes

Sample Request

POST https://api.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores/provisioning

This is an example of the request:

{ "stores": [ { "storeId": "10", "name": "My Store", "integrationId": "your-integration-id" }, { "storeId": "11", "name": "My Other Store", "integrationId": "your-integration-id" } ] }

Sample Response "Accepted 202"

This is an example of the response "Accepted 202":

{ "batchId": "550e8400-e29b-41d4-a716-446655440000", "accepted": [ { "storeId": "10", "integrationId": "your-integration-id" } ], "rejected": [ { "storeId": "11", "reason": "not_owned" } ], "autoProvisioned": [ { "storeId": "100", "integrationId": "your-integration-id", "reason": "parent_auto_provisioned" } ] }
ObjectDescription
batchId
string
Unique identifier for the batch operation. Referenced in the STORE_PROVISIONING_STATUS webhook.
accepted
array of objects
Stores explicitly accepted for provisioning
accepted[].storeId
string
Rappi store ID
accepted[].integrationId
string
Integration identifier
rejected
array of objects
Stores rejected and not provisioned
rejected[].storeId
string
Rappi store ID
rejected[].reason
string
Reason for rejection: not_owned, invalid_integration_id, missing_name
autoProvisioned
array of objects
Parent stores that were automatically provisioned because a requested child store required it. Always present (empty array if none).
autoProvisioned[].storeId
string
Rappi store ID of the auto-provisioned parent
autoProvisioned[].integrationId
string
Integration identifier
autoProvisioned[].reason
string
Always parent_auto_provisioned

Sample Response "Unauthorized 401"

This is an example of the response "Unauthorized 401":

{ "message": "Not a valid token" }
ObjectDescription
message
string
Descriptive error message

POST deprovisioning

Use this endpoint to deprovision stores from a POS integration in batch. This operation is asynchronous — the API returns 202 Accepted immediately. The result is delivered via the STORE_PROVISIONING_STATUS webhook with operation: DEPROVISION and status: INACTIVE per store.

Endpoint URL

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

{COUNTRY_DOMAIN}: This is your Rappi Country Domain. See the list of Country Domains.

Endpoint Properties

Response formatsJSON
Authentication requirementsBearer integrator JWT (Authorization) + Bearer merchant JWT (Authorization-Partners)

Parameters

HeaderRequirementDescription
AuthorizationrequiredBearer <integrator JWT> — M2M token issued by Auth0
Authorization-PartnersrequiredBearer <merchant JWT> — OAuth2 token issued by Auth0

Request Body

AttributeRequirementDescription
stores
array of objects
requiredList of stores to deprovision. Maximum 20 per request.
stores[].storeId
string
requiredRappi store ID to deprovision
stores[].integrationId
string
requiredIntegration identifier to dissociate the store from (e.g. your-integration-id)

Status Codes

Sample Request

POST https://api.dev.rappi.com/api/v2/restaurants-integrations-public-api/stores/deprovisioning

This is an example of the request:

{ "stores": [ { "storeId": "10", "integrationId": "your-integration-id" } ] }

Sample Response "Accepted 202"

This is an example of the response "Accepted 202":

{ "batchId": "550e8400-e29b-41d4-a716-446655440000", "accepted": [ { "storeId": "10", "integrationId": "your-integration-id" } ], "rejected": [ { "storeId": "5", "reason": "has_integrated_children", "integratedChildren": ["50", "51"] } ], "autoProvisioned": [] }
ObjectDescription
batchId
string
Unique identifier for the batch operation. Referenced in the STORE_PROVISIONING_STATUS webhook.
accepted
array of objects
Stores accepted for deprovisioning
accepted[].storeId
string
Rappi store ID
accepted[].integrationId
string
Integration identifier
rejected
array of objects
Stores rejected and not deprovisioned
rejected[].storeId
string
Rappi store ID
rejected[].reason
string
Reason for rejection: not_owned, not_integrated, has_integrated_children
rejected[].integratedChildren
array of strings
Present only when reason is has_integrated_children. Lists the child store IDs that must be deprovisioned first.
autoProvisioned
array of objects
Always empty for deprovisioning

Sample Response "Unauthorized 401"

This is an example of the response "Unauthorized 401":

{ "message": "Not a valid token" }
ObjectDescription
message
string
Descriptive error message