Rest API - Menu
The Menus resource allows you to interact with a restaurant's menus and products.
The resource allows unified management of all components of a store’s menu—menus, categories, and items—using the store identifier (storeId). This structure simplifies integration by centralizing information and operations related to the full menu within a single resource.
The store’s catalog is composed of two item types: ITEM
, representing individual products or modifiers, and MODIFIER_GROUP
, which represents groups of modifiers. Categories can only contain items of type ITEM
, and item relationships are limited to combinations between different types, such as ITEM
→ MODIFIER_GROUP
and MODIFIER_GROUP
→ ITEM
.
The following table describes the different contents of the Menu resource:
Resource | Description |
---|---|
GET /v1/stores/{storeId}/store-menu | Retrieves the complete store menu, including items, categories, and menu types, by store ID. |
POST /v1/stores/{storeId}/store-menu | Uploads the complete store menu to an S3 bucket. |
GET /v1/stores/{storeId}/menu | Retrieves the menus of a store by Store ID. |
POST /v1/stores/{storeId}/menu | Create or Update the menus by store ID. |
DELETE /v1/stores/{storeId}/menu | Delete the specified menus by store ID. |
GET /v1/stores/{storeId}/menu/{menuId} | Retrieves the specified menu with all relations of information by store ID. |
GET /v1/stores/{storeId}/categories | Retrieves the categories of a store by Store ID. |
POST /v1/stores/{storeId}/categories | Create or Update the categories by store ID. |
DELETE /v1/stores/{storeId}/categories | Delete the specified categories by store ID. |
GET /v1/stores/{storeId}/categories/{categoryId} | Retrieves the specified category with all relations of information by store ID. |
GET /v1/stores/{storeId}/items | Retrieves the items of a store by Store ID. |
POST /v1/stores/{storeId}/items | Create or Update the items by store ID. |
DELETE /v1/stores/{storeId}/items | Delete the specified items by store ID. |
GET /v1/stores/{storeId}/items/{itemId} | Retrieves the specified item with all relations of information by store ID. |
GET Store Menu By Store ID
Use this endpoint to retrieve the store menu (the complete menus with items, categories, and menu types) by storeId.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/store-menu
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Path Parameter
Parameter | Type | Required | Description |
---|---|---|---|
storeId | uint64 | Yes | The unique identifier of the store whose menu is being requested. |
This parameter is used to specify which store's menu should be retrieved. The storeId should be a valid integer representing a store registered in the system.
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/restaurants/menu/v1/stores/{storeId}/store-menu
This is an example of the request:
String storeId = "232"; String urlString = "https://api.dev.rappi.com/restaurants/menu/v1/stores/"+storeId+"/store-menu"; URL url = new URL(urlString); 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": 232, "menus": [ { "id": 9, "storeId": 232, "super_store_id": 232, "menu_type": "DEFAULT", "categories": [ { "id": 1, "sku": "abc", "index": 8, "is_category_active": true, "storeId": 232 } ] } ], "categories": [ { "id": 1, "sku": "abc", "storeId": 232, "title": "Mccafé", "last_updated": "2025-03-14T14:24:11.345803Z", "items": [ { "id": 933, "sku": "def", "index": 1, "menuId": 9, "menu_type": "DEFAULT", "storeId": 232 } ], "menus": [ { "id": 9, "index": 8, "is_category_active": true, "menu_type": "DEFAULT", "storeId": 232 } ], "schedules": [] } ], "items": [ { "id": 933, "sku": "def", "storeId": 232, "last_updated": "2025-03-14T14:23:58.338248Z", "item_type": "ITEM", "title_info": { "title": "Cappuccino Regular + Croissant Con Lomito Y Queso", "overrides": [] }, "description_info": { "description": "Promo \"cappuccino regular + croissant con lomito y queso\"", "overrides": [] }, "images_info": { "images": [ { "id": 279, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com" } ], "overrides": [] }, "items_info": { "items": [ { "id": 11, "sku": "gfd", "index": 1 }, { "id": 12, "sku": "kjh", "index": 2 }, { "id": 94, "sku": "pol", "index": 3 }, { "id": 72, "sku": "rew", "index": 4 } ], "overrides": [] }, "price_info": { "price": 199, "overrides": [] }, "quantity_info": { "min_permitted": null, "max_permitted": null, "modifiers_type": null, "overrides": [] }, "suspension_info": { "suspend_until": null, "suspend_reason": null, "overrides": [], "is_available": true }, "schedules_info": { "schedules": [], "overrides": [] } }, { "id": 11, "sku": "gfd", "storeId": 232, "last_updated": "2025-03-14T14:23:58.979715Z", "item_type": "MODIFIER_GROUP", "title_info": { "title": "Extra grand croissant relleno de lomito y queso", "overrides": [] }, "description_info": { "description": "Extra grand croissant relleno de lomito y queso", "overrides": [] }, "images_info": { "images": [], "overrides": [] }, "items_info": { "items": [], "overrides": [] }, "price_info": { "price": 0, "overrides": [] }, "quantity_info": { "min_permitted": 0, "max_permitted": 2, "modifiers_type": "inclusive", "overrides": [] }, "suspension_info": { "suspend_until": null, "suspend_reason": null, "overrides": [], "is_available": true }, "schedules_info": { "schedules": [], "overrides": [] } }, { "id": 12, "sku": "kjh", "storeId": 232, "last_updated": "2025-03-14T14:23:58.85638Z", "item_type": "MODIFIER_GROUP", "title_info": { "title": "Extra cappuccino regular", "overrides": [] }, "description_info": { "description": "Extra cappuccino regular", "overrides": [] }, "images_info": { "images": [], "overrides": [] }, "items_info": { "items": [], "overrides": [] }, "price_info": { "price": 0, "overrides": [] }, "quantity_info": { "min_permitted": 0, "max_permitted": 8, "modifiers_type": "inclusive", "overrides": [] }, "suspension_info": { "suspend_until": null, "suspend_reason": null, "overrides": [], "is_available": true }, "schedules_info": { "schedules": [], "overrides": [] } }, { "id": 94, "sku": "pol", "storeId": 232, "last_updated": "2025-03-14T14:23:58.829912Z", "item_type": "MODIFIER_GROUP", "title_info": { "title": "Personalizar grand croissant relleno de lomito y queso", "overrides": [] }, "description_info": { "description": "Personalizar grand croissant relleno de lomito y queso", "overrides": [] }, "images_info": { "images": [], "overrides": [] }, "items_info": { "items": [], "overrides": [] }, "price_info": { "price": 0, "overrides": [] }, "quantity_info": { "min_permitted": 0, "max_permitted": 1, "modifiers_type": "exclusive", "overrides": [] }, "suspension_info": { "suspend_until": null, "suspend_reason": null, "overrides": [], "is_available": true }, "schedules_info": { "schedules": [], "overrides": [] } }, { "id": 72, "sku": "rew", "storeId": 232, "last_updated": "2025-03-14T14:23:58.342775Z", "item_type": "MODIFIER_GROUP", "title_info": { "title": "Personalizar cappuccino regular", "overrides": [] }, "description_info": { "description": "Personalizar cappuccino regular", "overrides": [] }, "images_info": { "images": [], "overrides": [] }, "items_info": { "items": [], "overrides": [] }, "price_info": { "price": 0, "overrides": [] }, "quantity_info": { "min_permitted": 0, "max_permitted": 2, "modifiers_type": "inclusive", "overrides": [] }, "suspension_info": { "suspend_until": null, "suspend_reason": null, "overrides": [], "is_available": true }, "schedules_info": { "schedules": [], "overrides": [] } } ] }
This table describes the objects contained in the response example:
Object | Description |
---|---|
storeId uint64 | Identifier of the store in the Rappi application |
menus []Menu | List of menus available in the store. Each menu contains categories. |
menus[].id uint64 | Unique identifier of the menu. |
menus[].storeId uint64 | Store ID associated with the menu. |
menus[].super_store_id uint64 | Super store ID linked to the menu. |
menus[].menu_type string | Type of menu (e.g., "DEFAULT"). |
menus[].categories []Category | Categories contained within the menu. |
categories []Category | List of categories available in the store. |
categories[].id uint64 | Unique identifier of the category. |
categories[].sku string | Stock keeping unit of the category. |
categories[].storeId uint64 | Store ID associated with the category. |
categories[].title string | Name of the category. |
categories[].last_updated string (ISO 8601) | Timestamp of last update for the category. |
categories[].items []Item | List of items within the category. |
categories[].menus []Menu | List of menus associated with the category. |
items []Item | List of items available in the store. |
items[].id uint64 | Unique identifier of the item. |
items[].sku string | Stock keeping unit of the item. |
items[].storeId uint64 | Store ID associated with the item. |
items[].last_updated string (ISO 8601) | Timestamp of last update for the item. |
items[].item_type string | Type of item (e.g., "ITEM", "MODIFIER_GROUP"). |
items[].title_info.title string | Name/title of the item. |
items[].description_info.description string | Description of the item. |
items[].images_info.images []Image | List of images associated with the item. |
items[].price_info.price float | Price of the item. |
items[].quantity_info.min_permitted int | Minimum quantity allowed for purchase. |
items[].quantity_info.max_permitted int | Maximum quantity allowed for purchase. |
items[].quantity_info.modifiers_type string | Type of modifiers allowed (e.g., "inclusive", "exclusive"). |
items[].suspension_info.is_available bool | Indicates if the item is available. |
POST Upload Store Menu
Use this endpoint to upload the complete store menu, including items, categories, and menu types to an s3 Bucket and process it to save or update the menu
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/store-menu
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | uint64 | Yes | The unique identifier of the store whose menu is being requested. |
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:
POST https://api.dev.rappi.com/restaurants/menu/v1/stores/232/store-menu
This is an example of the request:
String urlString = "https://api.dev.rappi.com/restaurants/menu/v1/stores/232/store-menu"; String jsonInputString = "{ \"storeId\": 232, \"menus\": [{ \"id\": 62, \"storeId\": 232, \"super_store_id\": 232, \"menu_type\": \"DEFAULT\", \"categories\": [] }], \"categories\": [], \"items\": [] }"; URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("x-authorization", "Bearer YOUR_TOKEN"); connection.setDoOutput(true); try (OutputStream os = connection.getOutputStream()) { byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8); os.write(input, 0, input.length); } int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode);
GET Menus By Store ID
Use this endpoint to retrieve the menus of a store by Store ID.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/menu
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
This parameter is used to specify which store's menu should be retrieved. The storeId should be a valid integer representing a store registered in the system.
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/restaurants/menu/v1/stores/{storeId}/menu
This is an example of the request:
String storeId = "232"; String urlString = "https://api.dev.rappi.com/restaurants/menu/v1/stores/" + storeId + "/menu"; URL url = new URL(urlString); 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"); connection.setRequestProperty("x-authorization", "Bearer YOUR_TOKEN"); int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode); 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()); }
Sample Response "Success 200"
This is an example of the response "Success 200":
[ { "id": 9, "storeId": 232, "super_store_id": 232, "menu_type": "DEFAULT", "categories": [ { "id": 625, "sku": "abc", "index": 0, "is_category_active": true }, { "id": 637, "sku": "def", "index": 0, "is_category_active": true } ] } ]
POST Upsert Menu By Store ID
Use this endpoint to create or update the store´s menu.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/menu
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
Important Notes
Request Fields Description
Field | Type | Description |
---|---|---|
id | int | Unique identifier of the store's menu. |
menu_type | string | Type of menu (e.g., "DEFAULT"), indicating the menu classification. |
categories | array | List of categories included in the store's menu. |
categories[].id | int | Unique identifier of the category. |
categories[].sku | string | Stock Keeping Unit (SKU) associated with the category. |
categories[].index | int | Position of the category within the menu. |
categories[].is_category_active | boolean | Indicates whether the category is active (true ) or inactive (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:
POST https://api.dev.rappi.com/restaurants/menu/v1/stores/232/menu
This is an example of the request:
import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); String json = "[{\"id\": 9, \"menu_type\": \"DEFAULT\", \"categories\": [{\"id\": 6, \"sku\": \"abc\", \"index\": 0, \"is_category_active\": false }]}]"; RequestBody body = RequestBody.create(json, MediaType.get("application/json")); Request request = new Request.Builder() .url("https://api.dev.rappi.com/restaurants/menu/v1/stores/232/menu") .addHeader("Content-Type", "application/json") .addHeader("x-authorization", "Bearer YOUR_TOKEN") .addHeader"x-authorization", "Bearer YOUR_TOKEN") .post(body) .build(); try (Response response = client.newCall(request).execute()) { System.out.println(response.body().string()); } } }
Sample Response 'Success 200'
This is an example of the response "Success 200":
{ "message": "Your request has been accepted." }
DELETE Menu By Store ID
Use this endpoint allows the deletion of a specific list of menus from a store.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/menu
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
Status Codes
These are the possible status codes of the response for this endpoint:
Sample Request
The request must be sent in JSON format with an array of menu IDs to be deleted. This is an example of an API request using this endpoint:
DELETE https://api.dev.rappi.com/restaurants/menu/v1/stores/232/menu
This is an example of the request:
import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); String json = "[1,2]"; RequestBody body = RequestBody.create(json, MediaType.get("application/json")); Request request = new Request.Builder() .url("https://api.dev.rappi.com/restaurants/menu/v1/stores/232/menu") .delete(body) .addHeader("Content-Type", "application/json") .addHeader("x-authorization", "Bearer YOUR_TOKEN") .addHeader("x-authorization", "Bearer YOUR_TOKEN") .build(); try (Response response = client.newCall(request).execute()) { System.out.println(response.body().string()); } } }
Sample Response 'Success 200'
This is an example of the response "Success 200":
{ "message": "Your request has been accepted." }
GET Menu By Store ID
Use this endpoint to retrieve the details of a specific menu from a store.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/menu/{menuId}
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Path Parameter
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
menuId | int | Yes | The unique identifier of the menu that is requested. |
This parameter is used to specify which store's menu should be retrieved. The storeId should be a valid integer representing a store registered in the system.
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/restaurants/menu/v1/stores/{storeId}/menu/{menuId}
This is an example of the request:
String storeId = "232"; String menuId = "9"; String urlString = "https://api.dev.rappi.com/restaurants/menu/v1/stores/" + storeId + "/menu/" + menuId; URL url = new URL(urlString); 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"); connection.setRequestProperty("x-authorization", "Bearer YOUR_TOKEN"); int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode); 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()); }
Sample Response "Success 200"
This is an example of the response "Success 200":
{ "id": 9, "storeId": 232, "super_store_id": 232, "menu_type": "DEFAULT", "categories": [ { "id": 6, "sku": "abc", "index": 0, "is_category_active": true } ] }
This table describes the objects contained in the response example:
Campo | Tipo | Descripción |
---|---|---|
id | int | Unique identifier of the store's menu |
menu_type | string | Type of menu (e.g., "DEFAULT"), indicating the menu classification |
storeId | int | Unique identifier of the store within the Rappi application |
super_store_id | int | Unique identifier of the super store within the Rappi application |
categories | array | List of categories included in the store's menu |
categories[].id | int | nique identifier of the category |
categories[].sku | string | Stock Keeping Unit (SKU) associated with the category" |
categories[].index | int | Position of the category within the menu |
categories[].is_category_active | boolean | Indicates whether the category is active (true) or inactive (false) |
GET Categories By Store ID
This endpoint retrieves the list of categories available in a specific store.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/categories
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
This parameter is used to specify which store's menu should be retrieved. The storeId should be a valid integer representing a store registered in the system.
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/restaurants/menu/v1/stores/{storeId}/categories
This is an example of the request:
String storeId = "232"; String urlString = "hhttps://api.dev.rappi.com/restaurants/menu/v1/stores/" + storeId + "/categories"; URL url = new URL(urlString); 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"); int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode); 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()); }
Sample Response "Success 200"
This is an example of the response "Success 200":
[ { "id": 9, "sku": "abc", "storeId": 232, "title": "Bebidas", "last_updated": "2025-02-19T17:19:50.78726Z", "items": [], "menus": [], "schedules": [ { "days_of_week": "fri", "time_periods": [ { "start_time": "12:00", "end_time": "10:00" } ] } ] } ]
POST Upsert Categories By Store ID
This endpoint allows creating or updating categories in a specific store.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/categories
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
Important Notes
Request Fields Description
Field | Type | Required | Description |
---|---|---|---|
id | int | Yes | Identifier of the category in the store's menu. |
sku | string | No | Stock Keeping Unit (SKU) identifier of the category. |
storeId | int | Yes | Identifier of the store in the Rappi application. |
title | string | Yes | Name or title of the category. |
items | array | No | List of items within this category |
items[].id | int | Yes | ID of the item in the category |
items[].sku | string | No | SKU of the item in the category |
items[].index | int | Yes | Position of the item in the category |
items[].menu_type | string | Yes | Type of menu the item belongs to |
menus | array | No | List of associated menus |
menus[].id | int | Yes | ID of the menu |
menus[].menu_type | string | Yes | Type of menu (e.g. "DEFAULT") |
menus[].index | int | Yes | Position of the menu |
menus[].is_category_active | boolean | Yes | Indicates if the category is active in this menu |
schedules | array | No | List of schedules that define category availability |
schedules[].days_of_week | string | Yes | Days of the week when the schedule is active (e.g. "fri" ) |
schedules[].time_periods | array | Yes | List of time periods within the schedule |
schedules[].time_periods[].start_time | string | Yes | Start time of the schedule in HH:MM format |
schedules[].time_periods[].end_time | string | Yes | End time of the schedule in HH:MM format |
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:
POST https://api.dev.rappi.com/restaurants/menu/v1/stores/232/categories
This is an example of the request:
import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); String json = "[{\"id\": 9, \"sku\": \"abc\", \"storeId\": 232, \"title\": \"Bebidas22\", \"last_updated\": \"2025-02-19T17:19:50.78726Z\", \"items\": [], \"menus\": [], \"schedules\": [{\"id\": 182, \"days_of_week\": \"fri\", \"time_periods\": [{\"id\": 378, \"start_time\": \"12:00\", \"end_time\": \"10:00\"}]}]}]"; RequestBody body = RequestBody.create(json, MediaType.get("application/json")); Request request = new Request.Builder() .url("https://api.dev.rappi.com/restaurants/menu/v1/stores/232/categories") .addHeader("Content-Type", "application/json") .addHeader("x-authorization", "Bearer YOUR_TOKEN") .post(body) .build(); try (Response response = client.newCall(request).execute()) { System.out.println(response.body().string()); } } }
Sample Response 'Success 200'
This is an example of the response "Success 200":
{ "message": "Your request has been accepted." }
DELETE Categories By Store ID
Use this endpoint allows you to delete multiple categories from a store by providing their IDs.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/categories
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
Status Codes
These are the possible status codes of the response for this endpoint:
Sample Request
The request must be sent in JSON format with an array of Categories IDs to be deleted. This is an example of an API request using this endpoint:
DELETE https://api.dev.rappi.com/restaurants/menu/v1/stores/232/categories
This is an example of the request:
import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); String json = "{\"ids\": [1, 2, 22]}"; RequestBody body = RequestBody.create(json, MediaType.get("application/json")); Request request = new Request.Builder() .url("https://api.dev.rappi.com/restaurants/menu/v1/stores/232/categories") .delete(body) .addHeader("Content-Type", "application/json") .addHeader("x-authorization", "Bearer YOUR_TOKEN") .build(); try (Response response = client.newCall(request).execute()) { System.out.println(response.body().string()); } } }
GET Category By Store ID
Use this endpoint to retrieve the details of a specific category from a store.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/categories/{categoryId}
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
categoryId | int | Yes | The unique identifier of the category that is requested. |
This parameter is used to specify which store's menu should be retrieved. The storeId should be a valid integer representing a store registered in the system.
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/restaurants/menu/v1/stores/{storeId}/categories/{categoryId}
This is an example of the request:
String storeId = "232"; String categoryId = "10" String urlString = "https://api.dev.rappi.com/restaurants/menu/v1/stores/" + storeId + "/categories/" + categoryId}; URL url = new URL(urlString); 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"); int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode); 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()); }
Sample Response "Success 200"
This is an example of the response "Success 200":
{ "id": 1, "sku": "abc", "storeId": 232, "title": "Platos Fuertes", "last_updated": "2025-01-10T15:40:31.464312Z", "items": [], "menus": [], "schedules": [ { "days_of_week": "mon,tue,wed,thu,fri,sat,sun,hol", "time_periods": [ { "start_time": "18:08", "end_time": "22:39" } ] } ] }
This table describes the objects contained in the response example:
Object | Type | Description |
---|---|---|
id | int | Unique identifier of the category |
sku | string | SKU (Stock Keeping Unit) of the category |
storeId | int | Identifier of the store in the Rappi application |
title | string | Name of the category |
last_updated | string | Timestamp of the last update (ISO 8601 format) |
items | array | List of items under this category (currently empty in the response) |
menus | array | List of menus associated with this category (currently empty in response) |
schedules | array | List of schedules when this category is available |
schedules[].days_of_week | string | Days of the week when the schedule is active (e.g., mon,tue,wed, etc.) |
schedules[].time_periods | array | List of time periods defining category availability |
schedules[].time_periods[].start_time | string | Start time of the time period (HH:mm format) |
schedules[].time_periods[].end_time | string | End time of the time period (HH:mm format) |
GET Items By Store ID
This endpoint retrieves the list of items available in a specific store.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/items
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameter
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
This parameter is used to specify which store's menu should be retrieved. The storeId should be a valid integer representing a store registered in the system.
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/restaurants/menu/v1/stores/{storeId}/items
This is an example of the request:
String storeId = "232"; String urlString = "https://api.dev.rappi.com/restaurants/menu/v1/stores/" + storeId + "/items"; URL url = new URL(urlString); 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"); int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode); 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()); }
Sample Response "Success 200"
This is an example of the response "Success 200":
[ { "id": 100, "sku": "pastel_de_fresa", "storeId": 232, "last_updated": "2025-03-27T22:01:41.647471Z", "item_type": "ITEM", "title_info": { "title": "Pastel de fresa", "overrides": [ { "override_id": 641, "override_sku": "", "override_type": "STORE", "title": "Pastel de fresa deluxe" }, { "override_id": 714, "override_sku": "1248187953", "override_type": "ITEM", "title": "Acompañamiento: Pastel de fresa" } ] }, "description_info": { "description": "Delicioso pastel de fresa", "overrides": [ { "override_id": 641, "override_type": "STORE", "description": "Delicioso pastel de fresa deluxe", "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "description": "Delicioso acompañamiento: Pastel de fresa", "override_sku": "1248187953" } ] }, "images_info": { "images": [ { "id": 34, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com" } ], "overrides": [ { "override_id": 641, "override_type": "STORE", "images": [ { "id": 43, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com" } ], "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "images": [ { "id": 43544, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com" } ], "override_sku": "1248187953" } ] }, "items_info": { "items": [ { "id": 11743, "sku": "1248187964", "index": 1 } ], "overrides": [ { "override_id": 714, "override_type": "ITEM", "items": [ { "id": 11720, "sku": "1248187730", "index": 1 } ], "override_sku": "1248187953" }, { "override_id": 641, "override_type": "STORE", "items": [ { "id": 11716, "sku": "1248187776", "index": 1 } ], "override_sku": "" } ] }, "price_info": { "price": 179, "overrides": [ { "override_id": 641, "override_type": "STORE", "price": 200, "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "price": 0, "override_sku": "1248187953" } ] }, "quantity_info": { "min_permitted": 0, "max_permitted": 5, "modifiers_type": null, "overrides": [ { "override_id": 641, "override_type": "STORE", "min_permitted": 0, "max_permitted": 2, "modifiers_type": null, "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "min_permitted": 0, "max_permitted": 1, "modifiers_type": null, "override_sku": "1248187953" } ] }, "suspension_info": { "suspend_until": null, "suspend_reason": null, "overrides": [ { "override_id": 641, "override_type": "STORE", "suspend_until": "2025-03-30T00:00:00Z", "suspend_reason": "Is stocked out", "created_at": "2025-03-27T22:01:41.647376Z", "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "suspend_until": "2025-03-30T00:00:00Z", "suspend_reason": "Is stocked out", "created_at": "2025-03-27T22:01:41.647376Z", "override_sku": "1248187953" } ], "is_available": true }, "schedules_info": { "schedules": [ { "days_of_week": "mon,tue,wed,thu,fri", "time_periods": [ { "start_time": "16:00", "end_time": "22:00" } ] } ], "overrides": [ { "id": 26, "override_id": 641, "override_sku": "", "override_type": "STORE", "schedules": [ { "days_of_week": "mon,tue,wed,thu,fri", "time_periods": [ { "start_time": "16:00", "end_time": "23:00" } ] } ] }, { "id": 27, "override_id": 714, "override_sku": "1248187953", "override_type": "ITEM", "schedules": [ { "days_of_week": "mon,tue,wed,thu,fri", "time_periods": [ { "start_time": "16:00", "end_time": "20:00" } ] } ] } ] } }, { "id": 11, "sku": "1abc", "storeId": 232, "last_updated": "2024-12-18T14:58:24.552489Z", "item_type": "MODIFIER_GROUP", "title_info": { "title": "Eleccion cubiertos", "overrides": [] }, "description_info": { "description": "Eleccion cubiertos", "overrides": [] }, "images_info": { "images": [], "overrides": [] }, "items_info": { "items": [], "overrides": [] }, "price_info": { "price": 0, "overrides": [] }, "quantity_info": { "min_permitted": 0, "max_permitted": 1, "modifiers_type": "exclusive", "overrides": [] }, "suspension_info": { "suspend_until": null, "suspend_reason": null, "overrides": [], "is_available": true }, "schedules_info": { "schedules": [], "overrides": [] } } ]
POST Upsert Items By Store ID
This endpoint allows creating or updating items in a specific store.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/items
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
Important Notes
Request Fields Description
Field | Type | Description |
---|---|---|
id | int | Identifier of the item. |
sku | string | Stock Keeping Unit (SKU) identifier of the item. It's required unless the ID is sent. |
storeId | int | Identifier of the store in the application. |
last_updated | string | Timestamp of the last update in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ). |
item_type | string | Type of the item (ITEM or MODIFIER_GROUP ). |
title_info.title | string | Title of the item. |
title_info.overrides | array | List of title overrides for specific conditions. |
title_info.overrides[].override_id | int | Identifier of the title override. |
title_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
title_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
title_info.overrides[].title | string | Override title. |
description_info.description | string | Description of the item. |
description_info.overrides | array | List of description overrides for specific conditions. |
description_info.overrides[].override_id | int | Identifier of the description override. |
description_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
description_info.overrides[].description | string | Override description. |
description_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
images_info.images | array | List of images associated with the item. |
images_info.images[].id | int | Identifier of the image. |
images_info.images[].path | string | The path where the image is in the CDN |
images_info.images[].index | int | The position where that image should be positioned. |
images_info.images[].host | string | The image CDN host |
images_info.overrides | array | List of image overrides for specific conditions. |
images_info.overrides[].override_id | int | Identifier of the image override. |
images_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
images_info.overrides[].images | array | List of overridden images. |
images_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
items_info.items | array | List of related items. |
items_info.items[].id | int | Identifier of the related item. |
items_info.items[].sku | string | SKU of the related item. It’s required unless the ID is sent. |
items_info.items[].index | int | Order index of the related item. |
items_info.overrides | array | List of item overrides for specific conditions. |
items_info.overrides[].override_id | int | Identifier of the item override. |
items_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
items_info.overrides[].items | array | List of overridden items. |
items_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
price_info.price | float | Price of the item. |
price_info.overrides | array | List of price overrides for specific conditions. |
price_info.overrides[].override_id | int | Identifier of the price override. |
price_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
price_info.overrides[].price | float | The price that should be applied when the override complies. |
price_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
quantity_info.min_permitted | int | The minimum amount of items permitted of this item when the item is ITEM type. And the minimum amount of items inside permitted when the item is MODIFIER_GROUP type. This field is required when the item is MODIFIER_GROUP. |
quantity_info.max_permitted | int | The maximum amount of items permitted of this item when the item is ITEM type. And the maximum amount of items inside permitted when the item is MODIFIER_GROUP type. This field is required when the item is MODIFIER_GROUP. |
quantity_info.modifiers_type | string | Type of modifier (nullable). |
quantity_info.overrides | array | List of quantity overrides for specific conditions. |
quantity_info.overrides[].override_id | int | Identifier of the quantity override. |
quantity_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
quantity_info.overrides[].min_permitted | int | The minimum amount of items permitted of this item when the item is ITEM type. And the minimum amount of items inside permitted when the item is MODIFIER_GROUP type. This field is required when the item is MODIFIER_GROUP. |
quantity_info.overrides[].max_permitted | int | The maximum amount of items permitted of this item when the item is ITEM type. And the maximum amount of items inside permitted when the item is MODIFIER_GROUP type. This field is required when the item is MODIFIER_GROUP. |
quantity_info.overrides[].modifiers_type | string | Overridden type of modifier (nullable). |
quantity_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
suspension_info.suspend_until | string | Date when the item is supposed to turn on. If null then is suspended permanently. |
suspension_info.suspend_reason | string | Reason why the item is suspended. |
suspension_info.is_available | bool | Availability status of the item. |
suspension_info.overrides | array | List of suspension overrides for specific conditions. |
schedules_info.schedules | array | List of schedules defining availability. |
schedules_info.schedules[].days_of_week | string | Days of the week when the schedule is active. |
schedules_info.schedules[].time_periods | array | Time periods within the schedule. |
schedules_info.schedules[].time_periods[].start_time | string | Start time in HH:MM format. |
schedules_info.schedules[].time_periods[].end_time | string | End time in HH:MM format. |
schedules_info.overrides | array | List of schedule overrides for specific conditions. |
schedules_info.overrides[].override_id | int | Identifier of the schedules override. |
schedules_info.overrides[].override_type | string | Type of override (STORE CATEGORY or ITEM ). |
schedules_info.overrides[].schedules | array | List of overridden schedules. |
schedules_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
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:
POST https://api.dev.rappi.com/restaurants/menu/v1/stores/232/items
This is an example of the request:
import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); String json = """ { "id": 100, "sku": "pastel_de_fresa", "storeId": 232, "item_type": "ITEM", "title_info": { "title": "Pastel de fresa", "overrides": [ {"override_id": 641, "override_sku": "", "override_type": "STORE", "title": "Pastel de fresa deluxe"}, {"override_id": 714, "override_sku": "1248187953", "override_type": "ITEM", "title": "Acompañamiento: Pastel de fresa"} ] }, "description_info": { "description": "Delicioso pastel de fresa", "overrides": [ {"override_id": 641, "override_type": "STORE", "description": "Delicioso pastel de fresa deluxe", "override_sku": ""}, {"override_id": 714, "override_type": "ITEM", "description": "Delicioso acompañamiento: Pastel de fresa", "override_sku": "1248187953"} ] }, "images_info": { "images": [ {"id": 34, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com"} ], "overrides": [ {"override_id": 641, "override_type": "STORE", "images": [{"id": 43, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com"}], "override_sku": ""}, {"override_id": 714, "override_type": "ITEM", "images": [{"id": 43544, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com"}], "override_sku": "1248187953"} ] }, "items_info": { "items": [{"id": 11743, "sku": "1248187964", "index": 1}], "overrides": [ {"override_id": 714, "override_type": "ITEM", "items": [{"id": 11720, "sku": "1248187730", "index": 1}], "override_sku": "1248187953"}, {"override_id": 641, "override_type": "STORE", "items": [{"id": 11716, "sku": "1248187776", "index": 1}], "override_sku": ""} ] }, "price_info": { "price": 179, "overrides": [ {"override_id": 641, "override_type": "STORE", "price": 200, "override_sku": ""}, {"override_id": 714, "override_type": "ITEM", "price": 0, "override_sku": "1248187953"} ] }, "quantity_info": { "min_permitted": 0, "max_permitted": 5, "overrides": [ {"override_id": 641, "override_type": "STORE", "min_permitted": 0, "max_permitted": 2, "override_sku": ""}, {"override_id": 714, "override_type": "ITEM", "min_permitted": 0, "max_permitted": 1, "override_sku": "1248187953"} ] }, "suspension_info": { "suspend_until": null, "suspend_reason": null, "overrides": [ {"override_id": 641, "override_type": "STORE", "suspend_until": "2025-03-30T00:00:00Z", "suspend_reason": "Is stocked out", "created_at": "2025-03-27T22:01:41.647376Z", "override_sku": ""}, {"override_id": 714, "override_type": "ITEM", "suspend_until": "2025-03-30T00:00:00Z", "suspend_reason": "Is stocked out", "created_at": "2025-03-27T22:01:41.647376Z", "override_sku": "1248187953"} ] }, "schedules_info": { "schedules": [ {"days_of_week": "mon,tue,wed,thu,fri", "time_periods": [{"start_time": "16:00", "end_time": "22:00"}]} ], "overrides": [ {"id": 26, "override_id": 641, "override_sku": "", "override_type": "STORE", "schedules": [{"days_of_week": "mon,tue,wed,thu,fri", "time_periods": [{"start_time": "16:00", "end_time": "23:00"}]}]}, {"id": 27, "override_id": 714, "override_sku": "1248187953", "override_type": "ITEM", "schedules": [{"days_of_week": "mon,tue,wed,thu,fri", "time_periods": [{"start_time": "16:00", "end_time": "20:00"}]}]} ] } } """; RequestBody body = RequestBody.create(json, MediaType.get("application/json")); Request request = new Request.Builder() .url("https://api.dev.rappi.com/restaurants/menu/v1/stores/232/items") .addHeader("Content-Type", "application/json") .addHeader("x-authorization", "Bearer YOUR_TOKEN") .post(body) .build(); try (Response response = client.newCall(request).execute()) { System.out.println(response.body().string()); } } }
Sample Response 'Success 200'
This is an example of the response "Success 200":
{ "message": "Your request has been accepted." }
DELETE Items By Store ID
Use this endpoint allows you to delete multiple items from a store by providing their IDs.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/items
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Parameters
This endpoint has the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
Status Codes
These are the possible status codes of the response for this endpoint:
Sample Request
The request must be sent in JSON format with an array of items IDs to be deleted. This is an example of an API request using this endpoint:
DELETE https://api.dev.rappi.com/restaurants/menu/v1/stores/232/items
This is an example of the request:
import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); String json = "[1,2]"; RequestBody body = RequestBody.create(json, MediaType.get("application/json")); Request request = new Request.Builder() .url("https://api.dev.rappi.com/restaurants/menu/v1/stores/232/items") .delete(body) .addHeader("Content-Type", "application/json") .addHeader("x-authorization", "Bearer YOUR_TOKEN") .build(); try (Response response = client.newCall(request).execute()) { System.out.println(response.body().string()); } } }
GET Item By Store ID
Use this endpoint to retrieve the details of a specific item from a store.
Endpoint URL
Use this URL to make a request with this endpoint:
https://{NEW_DOMAIN}/restaurants/menu/v1/stores/{storeId}/items/{itemId}
{NEW_DOMAIN}
: This is your Rappi Country Domain. See the list of Country Domains.
Endpoint Properties
This resource has the following properties:
Response formats | JSON |
Authentication requirements | Token |
Path Parameter
Parameter | Type | Required | Description |
---|---|---|---|
storeId | int | Yes | The unique identifier of the store whose menu is being requested. |
itemId | int | Yes | The unique identifier of the item that is requested. |
This parameter is used to specify which store's menu should be retrieved. The storeId should be a valid integer representing a store registered in the system.
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/restaurants/menu/v1/stores/{storeId}/items/{itemId}
This is an example of the request:
String storeId = "232"; String ItemId = "10" String urlString = "https://api.dev.rappi.com/restaurants/menu/v1/stores/" + storeId + "/items/" + ItemId}; URL url = new URL(urlString); 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"); int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode); 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()); }
Sample Response "Success 200"
This is an example of the response "Success 200":
{ "id": 100, "sku": "pastel_de_fresa", "storeId": 232, "last_updated": "2025-03-27T22:01:41.647471Z", "item_type": "ITEM", "title_info": { "title": "Pastel de fresa", "overrides": [ { "override_id": 641, "override_sku": "", "override_type": "STORE", "title": "Pastel de fresa deluxe" }, { "override_id": 714, "override_sku": "1248187953", "override_type": "ITEM", "title": "Acompañamiento: Pastel de fresa" } ] }, "description_info": { "description": "Delicioso pastel de fresa", "overrides": [ { "override_id": 641, "override_type": "STORE", "description": "Delicioso pastel de fresa deluxe", "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "description": "Delicioso acompañamiento: Pastel de fresa", "override_sku": "1248187953" } ] }, "images_info": { "images": [ { "id": 34, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com" } ], "overrides": [ { "override_id": 641, "override_type": "STORE", "images": [ { "id": 43, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com" } ], "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "images": [ { "id": 43544, "path": "my/path/to/my/image.jpg", "index": 1, "host": "https://my.cdn.com" } ], "override_sku": "1248187953" } ] }, "items_info": { "items": [ { "id": 11743, "sku": "1248187964", "index": 1 } ], "overrides": [ { "override_id": 714, "override_type": "ITEM", "items": [ { "id": 11720, "sku": "1248187730", "index": 1 } ], "override_sku": "1248187953" }, { "override_id": 641, "override_type": "STORE", "items": [ { "id": 11716, "sku": "1248187776", "index": 1 } ], "override_sku": "" } ] }, "price_info": { "price": 179, "overrides": [ { "override_id": 641, "override_type": "STORE", "price": 200, "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "price": 0, "override_sku": "1248187953" } ] }, "quantity_info": { "min_permitted": 0, "max_permitted": 5, "modifiers_type": null, "overrides": [ { "override_id": 641, "override_type": "STORE", "min_permitted": 0, "max_permitted": 2, "modifiers_type": null, "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "min_permitted": 0, "max_permitted": 1, "modifiers_type": null, "override_sku": "1248187953" } ] }, "suspension_info": { "suspend_until": null, "suspend_reason": null, "overrides": [ { "override_id": 641, "override_type": "STORE", "suspend_until": "2025-03-30T00:00:00Z", "suspend_reason": "Is stocked out", "created_at": "2025-03-27T22:01:41.647376Z", "override_sku": "" }, { "override_id": 714, "override_type": "ITEM", "suspend_until": "2025-03-30T00:00:00Z", "suspend_reason": "Is stocked out", "created_at": "2025-03-27T22:01:41.647376Z", "override_sku": "1248187953" } ], "is_available": true }, "schedules_info": { "schedules": [ { "days_of_week": "mon,tue,wed,thu,fri", "time_periods": [ { "start_time": "16:00", "end_time": "22:00" } ] } ], "overrides": [ { "id": 26, "override_id": 641, "override_sku": "", "override_type": "STORE", "schedules": [ { "days_of_week": "mon,tue,wed,thu,fri", "time_periods": [ { "start_time": "16:00", "end_time": "23:00" } ] } ] }, { "id": 27, "override_id": 714, "override_sku": "1248187953", "override_type": "ITEM", "schedules": [ { "days_of_week": "mon,tue,wed,thu,fri", "time_periods": [ { "start_time": "16:00", "end_time": "20:00" } ] } ] } ] } }
Response Fields Description
This table describes the objects contained in the response example:
Field | Type | Description |
---|---|---|
id | int | Identifier of the item. |
sku | string | Stock Keeping Unit (SKU) identifier of the item. It’s required unless the ID is sent. |
storeId | int | Identifier of the store in the application. |
last_updated | string | Timestamp of the last update in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ). |
item_type | string | Type of the item (ITEM or MODIFIER_GROUP ). |
title_info.title | string | Title of the item. |
title_info.overrides | array | List of title overrides for specific conditions. |
title_info.overrides[].override_id | int | Identifier of the title override. |
title_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
title_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
title_info.overrides[].title | string | Override title. |
description_info.description | string | Description of the item. |
description_info.overrides | array | List of description overrides for specific conditions. |
description_info.overrides[].override_id | int | Identifier of the description override. |
description_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
description_info.overrides[].description | string | Override description. |
description_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
images_info.images | array | List of images associated with the item. |
images_info.images[].id | int | Identifier of the image. |
images_info.images[].path | string | The path where the image is in the CDN |
images_info.images[].index | int | The position where that image should be positioned. |
images_info.images[].host | string | The image CDN host |
images_info.overrides | array | List of image overrides for specific conditions. |
images_info.overrides[].override_id | int | Identifier of the image override. |
images_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
images_info.overrides[].images | array | List of overridden images. |
images_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
items_info.items | array | List of related items. |
items_info.items[].id | int | Identifier of the related item. |
items_info.items[].sku | string | SKU of the related item. It’s required unless the ID is sent. |
items_info.items[].index | int | Order index of the related item. |
items_info.overrides | array | List of item overrides for specific conditions. |
items_info.overrides[].override_id | int | Identifier of the item override. |
items_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
items_info.overrides[].items | array | List of overridden items. |
items_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
price_info.price | float | Price of the item. |
price_info.overrides | array | List of price overrides for specific conditions. |
price_info.overrides[].override_id | int | Identifier of the price override. |
price_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
price_info.overrides[].price | float | The price that should be applied when the override complies. |
price_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
quantity_info.min_permitted | int | The minimum amount of items permitted of this item when the item is ITEM type. And the minimum amount of items inside permitted when the item is MODIFIER_GROUP type. This field is required when the item is MODIFIER_GROUP. |
quantity_info.max_permitted | int | The maximum amount of items permitted of this item when the item is ITEM type. And the maximum amount of items inside permitted when the item is MODIFIER_GROUP type. This field is required when the item is MODIFIER_GROUP. |
quantity_info.modifiers_type | string | Type of modifier (nullable). |
quantity_info.overrides | array | List of quantity overrides for specific conditions. |
quantity_info.overrides[].override_id | int | Identifier of the quantity override. |
quantity_info.overrides[].override_type | string | Type of override (STORE or ITEM ). |
quantity_info.overrides[].min_permitted | int | The minimum amount of items permitted of this item when the item is ITEM type. And the minimum amount of items inside permitted when the item is MODIFIER_GROUP type. This field is required when the item is MODIFIER_GROUP. |
quantity_info.overrides[].max_permitted | int | The maximum amount of items permitted of this item when the item is ITEM type. And the maximum amount of items inside permitted when the item is MODIFIER_GROUP type. This field is required when the item is MODIFIER_GROUP. |
quantity_info.overrides[].modifiers_type | string | Overridden type of modifier (nullable). |
quantity_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |
suspension_info.suspend_until | string | Date when the item is supposed to turn on. If null then is suspended permanently. |
suspension_info.suspend_reason | string | Reason why the item is suspended. |
suspension_info.is_available | bool | Availability status of the item. |
suspension_info.overrides | array | List of suspension overrides for specific conditions. |
schedules_info.schedules | array | List of schedules defining availability. |
schedules_info.schedules[].days_of_week | string | Days of the week when the schedule is active. |
schedules_info.schedules[].time_periods | array | Time periods within the schedule. |
schedules_info.schedules[].time_periods[].start_time | string | Start time in HH:MM format. |
schedules_info.schedules[].time_periods[].end_time | string | End time in HH:MM format. |
schedules_info.overrides | array | List of schedule overrides for specific conditions. |
schedules_info.overrides[].override_id | int | Identifier of the schedules override. |
schedules_info.overrides[].override_type | string | Type of override (STORE CATEGORY or ITEM ). |
schedules_info.overrides[].schedules | array | List of overridden schedules. |
schedules_info.overrides[].override_sku | string | The SKU of the override entity, it’s required unless the override_id is sent. |