Categories

The Category Resource enables interaction with the categories in the store´s menus.

The following table outlines the available Category resources:

Categories ResourceEndpoint description
GET v1/stores/{store_id}/categoriesRetrieves the categories of a store by Store ID.
POST v1/stores/{store_id}/categoriesCreate or Update the categories by store ID.
DELETE v1/stores/{store_id}/categoriesDelete the specified categories by store ID.
GET v1/stores/{store_id}/categories/{category_id}Retrieves the specified category with all relations of information by store ID.

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/{store_id}/categories

{NEW_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:

ParameterTypeRequiredDescription
store_idintYesThe unique identifier of the store whose menu is being requested.

This parameter is used to specify which store's menu should be retrieved. The store_id 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/{store_id}/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", "store_id": 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/{store_id}/categories

{NEW_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:

ParameterTypeRequiredDescription
store_idintYesThe unique identifier of the store whose menu is being requested.

Important Notes

Request Fields Description

FieldTypeRequiredDescription
idintYesIdentifier of the category in the store's menu.
skustringNoStock Keeping Unit (SKU) identifier of the category.
store_idintYesIdentifier of the store in the Rappi application.
titlestringYesName or title of the category.
itemsarrayNoList of items within this category
items[].idintYesID of the item in the category
items[].skustringNoSKU of the item in the category
items[].indexintYesPosition of the item in the category
items[].menu_typestringYesType of menu the item belongs to
menusarrayNoList of associated menus
menus[].idintYesID of the menu
menus[].menu_typestringYesType of menu (e.g. "DEFAULT")
menus[].indexintYesPosition of the menu
menus[].is_category_activebooleanYesIndicates if the category is active in this menu
schedulesarrayNoList of schedules that define category availability
schedules[].days_of_weekstringYesDays of the week when the schedule is active (e.g. "fri")
schedules[].time_periodsarrayYesList of time periods within the schedule
schedules[].time_periods[].start_timestringYesStart time of the schedule in HH:MM format
schedules[].time_periods[].end_timestringYesEnd 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\", \"store_id\": 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/{store_id}/categories

{NEW_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:

ParameterTypeRequiredDescription
store_idintYesThe 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/{store_id}/categories/{category_id}

{NEW_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

ParameterTypeRequiredDescription
store_idintYesThe unique identifier of the store whose menu is being requested.
category_idintYesThe unique identifier of the category that is requested.

This parameter is used to specify which store's menu should be retrieved. The store_id 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/{store_id}/categories/{category_id}

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", "store_id": 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:

ObjectTypeDescription
idintUnique identifier of the category
skustringSKU (Stock Keeping Unit) of the category
store_idintIdentifier of the store in the Rappi application
titlestringName of the category
last_updatedstringTimestamp of the last update (ISO 8601 format)
itemsarrayList of items under this category (currently empty in the response)
menusarrayList of menus associated with this category (currently empty in response)
schedulesarrayList of schedules when this category is available
schedules[].days_of_weekstringDays of the week when the schedule is active (e.g., mon,tue,wed, etc.)
schedules[].time_periodsarrayList of time periods defining category availability
schedules[].time_periods[].start_timestringStart time of the time period (HH:mm format)
schedules[].time_periods[].end_timestringEnd time of the time period (HH:mm format)