
API Documentation
Change Logs
12-09-2025
- Updated “riderDetails” object in Rider Status API
05-09-2025
- Fixed “items” field name in Order Relay Sample Request Body
31-07-2025
- Changed riderData to riderDetails in Rider Status Update API
24-07-2025
- Changed taxes to taxIds in item bill component
- Added gstType and timings in item component
01-07-2025
- Updated ENUMs for rider status and order status API
Introduction
The Nutana API is organised around REST framework. A REST API (also known as RESTful API) is an application programming interface (API or web API) that conforms to the constraints of REST architectural style and allows for interaction with RESTful web services.
Endpoints
Menu Management
Menu Integration
API to push the menu to Nutana systems
Request URL
POST/api/v1/menu
Request Headers
| Header | Description |
|---|---|
| key | Auth Key |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
restaurant | Restaurant Object | Information about the restaurant, such as id, opening timings. | Yes |
categories | Category Object | A collection of menu categories, each containing detailed information about menu items and subcategories | Yes |
timings | Timing Object | List of timings applicable at either category, restaurant | |
orderBillComponents | Order Bill Components | Contains a list of charge ids applicable on order. Taxes won't be applied directly on the order | |
addOnGroups | Add On Group Object | A list of add-on groups, each containing options like extra toppings or sides that customers can select when customising menu items. | |
variantGroups | Variant Group Object | A list of variant groups, each representing a set of customisable options (e.g., sizes or flavours) for menu items. | Yes |
variants | Variant Object | A detailed list of individual variants associated with menu items. | Yes |
billComponents | Bill Components Object | Contains a list of charges and taxes | Yes |
callbackUrl | string | Each Menu Sync request includes a callbackUrl in the payload, along with a unique request_id that identifies the queued menu processing task. Once Nutana completes the asynchronous processing of the menu request, a callback is triggered to the provided callbackUrl. This callback notifies the requester of the completion status and any relevant results associated with the original request_id. Example: https://<external-host>/callback/<req_id> Data sent: Callback URL Request body | Yes |
Restaurant Object
| Parameter | Type | Description | Required |
id | string | id of the restaurant | Yes |
minPrepTime | int | minimum prep time of the restaurant | No |
timings | string | id of the timing | No |
Category Object
| Parameter | Type | Description | Required |
id | string | A unique identifier for the category. | Yes |
name | string | The name of the Category. Ex: “South Indian Meals”, “Beverages” or “Soups” | Yes |
description | string | A brief description of the Category. For example, "A selection of cold and hot drinks, including coffee and tea.” | |
imageUrl | string | The URL of an image representing the category. | No |
sortOrder | integer | The order in which categories appear. | Yes |
items | array[Item] | A list of menu items under the category. For example, the "Beverages" category could include items like "Latte" or "Iced Tea." | Yes if there are no subcategories No if there are subcategories NOTE: Items and subcategories should not coexit under a same category |
subcategories | array[Category] | A list of subcategories, such as “Hot Beverages” and “Cold Beverages” under the “Beverages” category. | Yes if there are no items No if there are items NOTE: Items and subcategories should not coexit under a same category |
timings | string | Category availability timing id. | No NOTE: If left blank, it is assumed to be enabled all day/week |
Item Object
| Parameter | Type | Description | Required |
id | string | A unique identifier for the menu item. | Yes |
name | string | The name of the menu item, like “Margherita Pizza” | Yes |
description | string | A detailed description of the item, such as "Classic pizza topped with fresh mozzarella, tomatoes, and basil.” | |
imageUrl | string | A link to an image of the item. | Yes |
price | float | The base price of the item, such as 200.50 rupees for a Margherita Pizza. | Yes |
markupPrice | float | An optional higher price to strike off | No |
inStock | boolean | Indicates whether the item is available. For example, true means it’s in stock. | Yes |
recommended | boolean | Shows whether the item is recommended. For instance, true for the restaurant's signature dish. | No |
isFavorite | boolean | Indicates whether the item is marked as a favourite by customers. For example, true for a popular burger. | No |
foodType | string | Specifies the food type ENUM: "veg","non veg","egg”, “vegan” | Yes |
tags | array[string] | Keywords associated with the item, like "Spicy," "Gluten-Free," | |
variantGroupIds | array[string] | Ids that link the item to variant groups. For example, a pizza linked to a "Size" group with variants like Small or Large. | |
addOnGroupIds | array[string] | Ids that link the item to add-on groups, such as "Extra Cheese" or "Dips.” | |
nutritionalInfo | Nutritional Info Object | Detailed nutrition details. For example, a sandwich may contain 300 calories, 10g of protein, and 5g of fat. | |
billComponents | Item Bill Components Object | Item-specific billing components, such as an additional "Packing Charge" and taxes | Yes |
fulfillmentModes | array[string] | Indicates supported modes, ENUM: "delivery” | Yes |
sortOrder | integer | Determines the display order. For example, 1 means it’s shown at the top of the category. | Yes |
categoryId | string | ID of the Parent subcategory. | Yes |
subcategoryId | string | ID of the Parent subcategory. | |
ignoreOn | object | Specifies what to ignore for a food item while billing. (For example, ignore tax) | |
gstType | string | Specifies whether the item is applicable for "goods" tax type (Restaurant Liable) or "services" tax type (Nutana Liable). | |
timings | string | Item Availability timing id. | No NOTE: If left blank, it is assumed to be enabled all day/week |
Variant Group Object
| Parameter | Type | Description | Required |
id | string | A unique identifier for the variant group. | Yes |
name | string | The name of the variant group, such as "Size" or "Crust Type.” | Yes |
variantIds | array[string] | Ids that link the group to specific variants. For example, a "Size" group may have IDs referencing "Small," "Medium," and "Large" variants. | Yes |
sortOrder | integer | Determines the display order. For example, 1 means the variant group appears at the top of the item's customisation options. | Yes |
Variant Object
| Parameter | Type | Description | Required |
id | string | A unique identifier for the variant. | Yes |
name | string | The name of the variant, such as "Large," "Thin Crust," or "Extra Spicy.” | Yes |
price | float | The price of the variant. For instance, 550.25 rupees for a large pizza. | Yes |
markupPrice | float | An optional higher price for premium variants. For example, 600.99 rupees for a large pizza with extra cheese. | No |
inStock | boolean | Indicates whether the variant is available. For example, true for in-stock items and false for out-of-stock options. | Yes |
foodType | string | Specifies the food type ENUM: "veg","non veg","egg”, “vegan” | Yes |
addOnGroupIds | array[string] | Links the variant to specific add-on groups. For example, a "Dips" group for pizza variants. | No |
nutritionalInfo | Nutritional Info Object | Nutritional details for the variant. For example, a large pizza variant might have 400 calories, 15g of protein, and 10g of fat. | No |
fulfillmentModes | array[string] | Indicates the delivery or pickup options for the variant. ENUM: delivery | Yes |
variantGroupIds | array[string] | Links the variant to its parent group. For example, the "Large" variant is part of the "Size" group. | Yes |
billComponents | Item Bill Components Object | Billing components for the variant, such as packing charges | No |
sortOrder | integer | Determines the display order. | Yes |
Add On Group Object
| Parameter | Type | Description | Required |
id | string | A unique identifier for the add-on group. | Yes |
name | string | The name of the add-on group, such as "Dips," "Extra Toppings," or "Drinks.” | Yes |
minimumNeeded | integer | The minimum number of selections required. For example, a "Toppings" group might require at least 1 selection. | Yes |
maximumAllowed | integer | The maximum number of selections allowed. For instance, the "Dips" group might allow up to 3 selections. | Yes |
addOns | Add On Object | A list of available add-ons. For example, a "Toppings" group might include "Mushrooms," "Olives," and "Jalapeños.” | Yes |
sortOrder | integer | Determines the display order. | Yes |
Add On Object
| Parameter | Type | Description | Required |
id | string | A unique identifier for the add-on. | Yes |
name | string | The name of the add-on, such as "Extra Cheese," "BBQ Sauce," or "Garlic Bread.” | Yes |
price | float | The price of the add-on. For example, 20 rupees for "Extra Cheese.” | Yes |
inStock | boolean | Indicates whether the add-on is available. For instance, true means it’s in stock. | Yes |
foodType | string | Specifies the type of food, such as "Veg," "Non-Veg," or "Egg." For example, a bacon add-on would be marked as "Non-Veg.” | Yes |
nutritionalInfo | Nutritional Info Object | Detailed nutritional information. For example, "Extra Cheese" might have 100 calories and 8g of fat. | |
fulfillmentModes | array[string] | Indicates how the add-on can be ordered. For example, a beverage add-on might be limited to "Dine-In" and "Pickup.” | Yes |
sortOrder | integer | Determines the display order. For instance, 1 means the add-on appears at the top of the options list. | Yes |
imageUrl | string | image url |
Item Bill Components Object
| Parameter | Type | Description | Required |
charges | array[string] | List of charge identifiers applicable to the item | Yes |
taxIds | array[string] | A list of taxes identifiers | Yes |
Nutritional Info Object
| Parameter | Type | Description | Required |
carbohydrate | object | The carbohydrate content in the food. For example, 30g of carbohydrates in a serving of pasta. | No |
fiber | object | The dietary fiber content. For instance, 5g of fiber in a salad bowl. | No |
protein | object | The protein content in the food item. For example, 20g of protein in a chicken breast. | No |
calorie | object | The total caloric value. For instance, 400 kcal for a slice of pizza. | No |
sodium | object | The sodium content. For example, 200mg in a bowl of soup. | No |
cholesterol | object | The cholesterol content. For example, 50mg in a cheese sandwich. | No |
foodAmount | object | Amount of food. Merchant needs to provide these information in g, kg, ml or l. | No |
minerals | object | Information about mineral content, like 50mg of calcium or 20mg of iron. | No |
totalSugar | object | The total sugar content, such as 10g in a cookie. | No |
addedSugar | object | The additional sugar added during preparation. For instance, 5g in a soft drink. | No |
totalFat | object | The total fat content, such as 15g in a burger. | No |
saturatedFat | object | The saturated fat content. For instance, 5g in a buttery croissant. | No |
transFat | object | The trans fat content. For example, 1g in deep-fried snacks. | No |
vitamins | object | Information about vitamins, like Vitamin C (20mg) or Vitamin D (5mg). | No |
servingInfo | string | Additional serving information, such as "1 cup" or "2 pieces.” | No |
additiveMap | object | Details about additives, such as “Contains artificial sweeteners”. | No |
allergens | object | Information about allergens. For example, "Contains peanuts.” | No |
additionalInfo | object | Any other relevant nutritional details, like "Gluten-free" or "Low sodium.” | No |
salt | object | The salt content in the item. For instance, 1.5g of salt in chips. | No |
Nutritional Value Object
| Parameter | Type | Description | Required |
value | float | The numerical value of the nutrient. For instance, 200 for calories. | No |
unit | string | The unit of measurement, such as g (grams), mg (milligrams), or kcal (kilocalories). | No |
name | string | The name of the nutrient, such as "Protein" or "Vitamin A.” | No |
Bill Components Object
| Parameter | Type | Description | Required |
charges | array[Charge] | A list of additional charges, such as "Packaging Fee (35 rupees)" | Yes |
taxes | array[Tax] | A list of taxes | Yes |
Order Bill Components Object
| Parameter | Type | Description | Required |
charges | array[string] | list of charge identifier | Yes |
Charge Object
| Parameter | Type | Description | Required |
id | string | A unique identifier for the charge. | Yes |
name | string | The name of the charge, such as "Delivery Fee" or "Convenience Charge.” | Yes |
description | string | Additional details about the charge. | |
value | float | The value of the charge. | Yes |
type | string | The type of charge, such as "Fixed" (e.g., 20 rupees per order) or "Percentage" (e.g., 5% of the order total). ENUM: “FIXED”, “PERCENTAGE” | |
fulfillmentModes | array[string] | Specifies where the charge applies. ENUM: Delivery | Yes |
taxes | array[string] | Links the charge to applicable tax IDs. For example, a "Service Charge" might have "TAX002" applied. | Yes |
Tax Object
| Parameter | Type | Description | Required |
id | string | A unique identifier for the tax. | Yes |
name | string | The name of the tax, such as "CGST" or "SGST.” | |
description | string | Additional details about the tax. For example, "Applies to all food items.” | Yes |
value | float | The tax rate. For instance, 2.5% for CGST. | Yes |
fulfillmentModes | array[string] | Specifies where the tax is applicable. For example, a "Luxury Tax" might only apply to "Dine-In" orders. | Yes |
Timing Object
| Parameter | Type | Description | Required |
id | string | A unique identifier for the timing. | Yes |
days | Day Object | A list of day-wise availability. For example, the restaurant might offer "Breakfast: Mon-Fri" and "Dinner: Sat-Sun.” | Yes |
Day Object
| Parameter | Type | Description | Required |
day | string | The day of the week. For instance, "Monday", "Tuesday", etc. | Yes |
slots | Slot Object | A list of time slots for the day. For example, breakfast on Monday might have a time slot of "08:00 - 11:00” | Yes |
Slot Object
| Parameter | Type | Description | Required |
startTime | string | The starting time for the slot in HH:MM format. For example, "09:00" for breakfast service. NOTE: use 24hr formate | Yes |
endTime | string | The ending time for the slot in HH:MM format. For example, "11:30" when breakfast ends. NOTE: use 24hr formate | Yes |
Allergen Info Object
| Parameter | Type | Description | Required |
allergen | string | The name of the allergen. For example, "Peanuts", "Gluten", or "Dairy.” | |
allergenDesc | string | A detailed description of the allergen. For instance, "Contains peanuts as an ingredient in the sauce.” |
Additional Info Object
| Parameter | Type | Description | Required |
info | string | Any additional information about the food item. For example, "This dish is part of the Keto diet.” | |
remark | string | Remarks or warnings about the food item. For instance, "Spicy level: High." or "Not suitable for children under 3 years.” |
Ignore On Object
| Parameter | Type | Description | Required |
tax | bool | True/False, to determine whether to consider tax on the food item for billing. For instance, if true, no tax will be added for the item. | No |
discounts | bool | Specifies whether the item is excluded from discounts. For example, if true, a premium dish marked as "Chef’s Special" will not receive any discounts even during promotions. | No |
Callback URL Request body
| Parameter | Type | Description | Required |
requestId | string | Request ID of the queued menu processing | Yes |
success | bool | status of the request | Yes |
errorMsgs | array[string] | Generic error message | No |
data | array[Error] | List of resources which failed with type of error, ref_id of catalogue entity and reason | No |
Error
| Parameter | Type | Description | Required |
resourceId | string | Id of resource failed | Yes |
type | string | Resource Type Allowed Value: category subcategory item variantGroup addonGroup variant addon tax charge | Yes |
reason | string | The reason why it failed | Yes |
Sample Callback Request Body
In case of successful processing
{
"requestId": "c746a5cbeae74287b5b959b68a5f4d5d",
"success": true
}
In case of failure
{
"requestId": "c746a5cbeae74287b5b959b68a5f4d5d",
"success": false,
"data": [
{
"type": "item",
"resourceId": "7011688",
"reason": "item price cannot be negative"
},
{
"type": "tax",
"resourceId": "12764",
"reason": "tax value cannot be negative"
}
]
}
Sample Request Body
{
"restaurant": {
"id": "53349"
},
"categories": [
{
"id": "139714",
"name": "Best in Pizza",
"description": "Best in Pizza",
"imageUrl": "http://image.jpg",
"sortOrder": 7,
"items": [],
"subcategories": [
{
"id": "139716",
"name": "New Pizza",
"description": "New Pizzas everyday",
"imageUrl": "http://image.jpg",
"sortOrder": 1,
"items": [
{
"id": "701172",
"name": "Paneer Pizza",
"description": "spicy panner pizza",
"imageUrl": "http://img.jpg",
"price": 139,
"markupPrice": 199.9,
"inStock": true,
"recommended": false,
"foodType": "non veg",
"tags": [
"spicy"
],
"variantGroupIds": [
"440072"
],
"addonGroupIds": [
"440084"
],
"nutritionalInfo": {
"carbohydrate": {
"unit": "mg/g",
"value": 1.1
},
"fiber": {
"unit": "mg",
"value": 60.0
},
"fat": {
"unit": "mg",
"value": 30.0
},
"protein": {
"unit": "mg",
"value": 10.0
},
"calorie": {
"unit": "kcal",
"value": 1.1
}
},
"billComponents": {
"charges": [
"7795"
],
"taxIds": [
"12761",
"12762",
"12814",
"12815"
]
},
"fulfillmentModes": [
"delivery"
],
"sortOrder": 5,
"categoryId": "139714",
"subcategoryId": "139716",
"ignoreOn": {
"tax": false
}
}
]
}
],
"timings": "58681"
},
{
"id": "134715",
"name": "All New",
"imageUrl": "http://image.jpg",
"sortOrder": 1,
"items": [
{
"id": "7021727",
"name": "Chicke tikka",
"description": "Delicious chicken tikka",
"imageUrl": "http://image.jpg",
"price": 139,
"inStock": true,
"recommended": false,
"foodType": "non veg",
"tags": [
"info-services"
],
"variantGroupIds": [],
"addonGroupIds": [],
"nutritionalInfo": {},
"billComponents": {
"charges": [
"7795"
],
"taxIds": [
"12761",
"12762",
"12814",
"12815"
]
},
"fulfillmentModes": [
"delivery"
],
"sortOrder": 35,
"categoryId": "134715",
"subcategoryId": "132716"
}
]
}
],
"timings": [
{
"id": "58681",
"days": [
{
"day": "Monday",
"slots": [
{
"startTime": "06:00",
"endTime": "11:00"
}
]
},
{
"day": "Tuesday",
"slots": [
{
"startTime": "06:00",
"endTime": "11:00"
}
]
},
{
"day": "Wednesday",
"slots": [
{
"startTime": "06:00",
"endTime": "11:00"
}
]
},
{
"day": "Thursday",
"slots": [
{
"startTime": "06:00",
"endTime": "11:00"
}
]
},
{
"day": "Friday",
"slots": [
{
"startTime": "06:00",
"endTime": "11:00"
}
]
},
{
"day": "Saturday",
"slots": [
{
"startTime": "06:00",
"endTime": "11:00"
}
]
},
{
"day": "Sunday",
"slots": [
{
"startTime": "06:00",
"endTime": "11:00"
}
]
}
]
},
{
"id": "58719",
"days": [
{
"day": "Wednesday",
"slots": [
{
"startTime": "11:30",
"endTime": "16:00"
}
]
}
]
}
],
"orderBillComponents": {
"charges": [
{
"id": "7796",
"name": "Order level Charge",
"description": "",
"value": 30,
"type": "FIXED",
"taxes": [
"12763"
]
}
]
},
"addonGroups": [
{
"id": "440084",
"name": "Amazing Desserts",
"minimumNeeded": 0,
"maximumAllowed": 10,
"sortOrder": 3,
"addOns": [
{
"id": "1595275",
"name": "Chocolate",
"price": 139,
"inStock": true,
"foodType": "veg",
"sortOrder": 1,
"imageUrl": "http://image.jpg"
},
{
"id": "1295275",
"name": "Chicken Sausage",
"price": 39,
"inStock": true,
"foodType": "non Veg",
"nutritionalInfo": {},
"sortOrder": 2,
"imageUrl": "http://image.jpg"
}
]
},
{
"id": "450102",
"name": "Toppings",
"minimumNeeded": 0,
"maximumAllowed": 1,
"sortOrder": 1,
"addOns": [
{
"id": "1535340",
"name": "Chicken ",
"price": 0,
"inStock": true,
"foodType": "veg",
"sortOrder": 146,
"imageUrl": ""
}
]
},
{
"id": "460102",
"name": "Choose One Cheese Burst Flavor (r)",
"minimumNeeded": 0,
"maximumAllowed": 1,
"sortOrder": 1,
"addOns": [
{
"id": "1565340",
"name": "Cheesy Cheese Burst",
"price": 0,
"inStock": true,
"foodType": "veg",
"sortOrder": 246,
"imageUrl": ""
}
]
}
],
"variantGroups": [
{
"id": "440072",
"name": "Base",
"variantIds": [
"1595518",
"1695518"
],
"sortOrder": 1
},
{
"id": "470072",
"name": "Size",
"variantIds": [
"1395518",
"1495518"
],
"sortOrder": 0
},
{
"id": "570072",
"name": "Size",
"variantIds": [
"2495518"
],
"sortOrder": 0
}
],
"variants": [
{
"id": "1595518",
"name": "crust",
"price": 429,
"inStock": true,
"foodType": "veg",
"variantGroupIds": [
"470072"
],
"addonGroupIds": [],
"billComponents": {
"charges": ["779123"]
},
"sortOrder": 0
},
{
"id": "1395518",
"name": "Regular",
"price": 429,
"inStock": true,
"foodType": "veg",
"addonGroupIds": [
"460102"
],
"sortOrder": 0
},
{
"id": "1495518",
"name": "Large",
"price": 529,
"inStock": true,
"foodType": "veg",
"sortOrder": 1,
"addonGroupIds": [
"450102"
]
},
{
"id": "1695518",
"name": "pan",
"price": 129,
"inStock": true,
"foodType": "veg",
"nutritionalInfo": {},
"variantGroupIds": [
"570072"
],
"sortOrder": 1,
"addonGroupIds": null
},
{
"id": "2495518",
"name": "Large",
"price": 729,
"inStock": true,
"foodType": "veg",
"addonGroupIds": null,
"sortOrder": 0
}
],
"billComponents": {
"charges": [
{
"id": "7795",
"name": "Packing Charge",
"description": "",
"value": 20,
"type": "FIXED",
"fulfillmentModes": [
"delivery"
],
"taxes": [
"12764"
]
},
{
"id": "7796",
"name": "Handling Charge",
"description": "",
"value": 30,
"type": "FIXED",
"fulfillmentModes": null,
"taxes": [
"12763"
]
}
],
"taxes": [
{
"id": "12761",
"name": "CGST",
"description": "",
"value": 2.5,
"fulfillmentModes": null
},
{
"id": "12762",
"name": "SGST",
"description": "",
"value": 2.5,
"fulfillmentModes": null
},
{
"id": "12763",
"name": "Delivery Charge Tax",
"description": "",
"value": 18,
"fulfillmentModes": null
},
{
"id": "12764",
"name": "Packing Charge",
"description": "",
"value": 5,
"fulfillmentModes": null
},
{
"id": "12814",
"name": "SGST",
"description": "",
"value": 2.5,
"fulfillmentModes": null
},
{
"id": "12815",
"name": "CGST",
"description": "",
"value": 2.5,
"fulfillmentModes": null
}
]
},
"callbackUrl": "https://host.com/request-id"
}
Sample Response Body
200
{
"message": "Menu published successfully",
}
400
{
"message": "error message",
"code" : "400"
}
Inventory Update
API to update the inventory details in Nutana Systems.
This endpoint can be used to update the inventory for items and options in the menu.
Request URL
POST/api/v1/inventory
Request Headers
| Header | Description |
|---|---|
| Authorization | Basic Auth |
Request Body
| Parameter | Type | Description | Required |
restId | string | The unique identifier for the restaurant. | Yes |
addOns | array[string] | List of add-on identifiers whose stock status needs to be updated. | Yes |
inStock | boolean | Indicates the availability status. Example: true means available, false means out of stock. Applies to all specified items, variants, and add-ons. | Yes |
items | array[string] | List of menu item identifiers whose stock status is changing. | Yes |
variants | array[string] | List of variant identifiers whose stock status needs an update. | Yes |
nextAvailableAt | integer | A timestamp for when the out-of-stock food items will be restocked. |
Sample Request Body
{
"restId": "53349",
"addOns": [
"1595275"
],
"inStock": false,
"items": [
"701172"
],
"variants": [
"1595518"
],
"nextAvailableAt": 1717209600
}
Sample Response Body
200
{
"message": "Item Inventory updated successfully"
}
400
{
"error": "error message"
}
Order Management
Order Relay
API to relay the information of a new order placed by the end user on Nutana System to POS provider.
Request URL
POST/api/v1/order/
Request Headers
| Header | Description |
|---|---|
| key | <Key> |
Request Body
| Parameter | Type | Description | Required |
orderInfo | Order Info Object | The orderInfo object holds the key details about the order itself, such as the order ID, restaurant ID, order type (e.g., delivery, takeaway), and charges like subtotal, taxes, and total. It also includes information like payment mode, preparation time, and delivery mode. | Yes |
payment | Payment Object | The payment object outlines the payment details for the order, including the method of payment (e.g., cash, card, UPI), the payment status (e.g., paid, unpaid), and amounts (paid, balance). | Yes |
customer | Customer Object | The customer object contains personal details about the customer placing the order, such as their first name and last name. This helps identify the customer. | Yes |
items | Item Object | The item object provides detailed information about the individual menu items in the order, including the item ID, name, quantity, price, and associated charges or instructions. | Yes |
Order Info Object
| Parameter | Type | Description | Required |
orderId | string | The unique identifier for the order. | Yes |
restId | string | The unique identifier for the restaurant. | Yes |
instruction | string | Special instructions provided by the customer. For example, "Please make it extra spicy". | No |
status | string | The current status of the order. ENUM: “placed” | Yes |
subTotal | float | The subtotal amount of the order. This is the total price of the items excluding taxes and charges | Yes |
totalPackingCharge | float | Total charge for packing collected | |
totalTaxes | float | The total tax amount | Yes |
createdAt | int | The Unix timestamp when the order was placed. | Yes |
total | float | The total amount after adding taxes and charges. total = subtotal + charges + taxes | Yes |
deliveryMode | string | The mode of delivery. Possible values: ENUM: “self_delivery”, “delivery” |
Payment Object
| Parameter | Type | Description | Required |
mode | string | The mode of payment used. For example, "online". | Yes |
status | string | The current payment status. Possible values: "paid" | Yes |
amountPaid | float | The amount paid by the customer. For example, 500.00 rupees. | Yes |
Customer Object
| Parameter | Type | Description | Required |
firstName | string | The customer's first name. For example, "John". | Yes |
lastName | string | The customer's last name. For example, "Doe". | Yes |
Item Object
| Parameter | Type | Description | Required |
itemId | string | The unique identifier for the item. | Yes |
name | string | The name of the item. For example, "Chicken Biryani". | Yes |
quantity | integer | The quantity of the item. For example, 2. | Yes |
unitPrice | float | The price per unit of the item. For example, 250.00 rupees. | Yes |
taxes | array[Taxes Object] | The tax details for the item. | Yes |
charges | array[Charges Object] | Additional charges applicable for the item. | Yes |
instruction | string | Special instructions for the item. For example, “Extra Spicy”. | No |
variants | array[Variants Object] | The variant details for the item (e.g., size or type). | Optional Condition |
addOns | array[Add On Object] | Add Ons that can be associated with the food item. | Optional Condition |
Variants Object
| Parameter | Type | Description | Required |
id | string | The unique identifier for the variant. | Yes |
name | string | The name of the variant. For example, "Large". | |
unitPrice | float | The price of the variant. For example, 100.00 rupees. | Yes |
variants | array[Variants Object] | List of Nested variant details. | Optional Condition |
addOns | array[Add On Object] | List of Additional Add Ons associated with the variant. | Optional Condition |
Add On Object
| Parameter | Type | Description | Required |
id | string | The unique identifier for the add-on. | Yes |
name | string | The name of the add-on. For example, "Extra Cheese". | Yes |
unitPrice | float | The price of the add-on. For example, 50.00 rupees. | Yes |
Taxes Object
| Parameter | Type | Description | Required |
title | string | The name of the tax. For example, "SGST". | Yes |
value | float | The tax amount. For example, 25.00 rupees. | Yes |
percentage | float | The tax percentage. For example, 2.50. | Yes |
liabilityOn | string | restaurant or aggregator | Yes |
Charges Object
| Parameter | Type | Description | Required |
title | string | The name of the charge. For example, "Delivery Charge". | Yes |
value | float | The amount of the charge. For example, 30.00 rupees. | Yes |
liability_on | string | restaurant or aggregator | Yes |
Sample Request Body
{
"orderInfo": {
"orderId": "ORD123456",
"restId": "REST1001",
"instruction": "Make it spicy",
"status": "placed",
"subTotal": 500.0,
"totalPackingCharge": 20.0,
"totalTaxes": 45.0,
"createdAt": 1717046400,
"total": 565.0,
"deliveryMode": "delivery"
},
"payment": {
"mode": "online",
"status": "paid",
"amountPaid": 565.0
},
"customer": {
"firstName": "John",
"lastName": "Doe"
},
"items": [
{
"itemId": "ITEM001",
"name": "Chicken Biryani",
"quantity": 2,
"unitPrice": 250.0,
"instruction": "Extra Spicy",
"taxes": [
{
"title": "SGST",
"value": 12.5,
"percentage": 2.5,
"liability_on": "restaurant"
},
{
"title": "CGST",
"value": 12.5,
"percentage": 2.5,
"liability_on": "restaurant"
}
],
"charges": [
{
"title": "Packing Charge",
"value": 10.0,
"liability_on": "restaurant"
}
],
"variants": [
{
"id": "VAR001",
"name": "Family Pack",
"unitPrice": 100.0,
"variants": [],
"addOns": [
{
"id": "ADDON001",
"name": "Extra Raita",
"unitPrice": 20.0
}
]
}
],
"addOns": [
{
"id": "ADDON002",
"name": "Extra Salad",
"unitPrice": 15.0
}
]
}
]
}
Sample Response Body
200
{
"message": "Order Details successfully communicated."
}
400
{
"error": "error message"
}
Order Status Exchange
API to exchange the order status between the Nutana system and downstream system. Both system will expose status APIs to exchange status of the order
Request URL
POST/api/v1/order-status
Request Headers
| Header | Description |
|---|---|
| key | <Key> |
Request Body
| Parameter | Type | Description | Required |
orderId | string | Nutana orderId | Yes |
restId | string | resturant id | |
status | string | Contains the new status of the order. Allowed values: RESTAURANT_ACCEPTED, RESTAURANT_CANCELLED, CUSTOMER_CANCELLED, FOOD_READY | Yes |
reason | string | A custom message explaining why the order was canceled | No |
Sample Request Body
{
"orderId": "b7hi36eg",
"restId": "10454115",
"status": "cancelled",
"reason": "item_out_of_stock"
}
Sample Response Body
200
{
"message": "Order Status exchanged successfully"
}
400
{
"message": "error message"
}
Rider Management
Rider Status Update
API for updating the order delivery status from Nutana Systems.
Request URL
POST/<upstream-host>/api/v1/rider-status
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
orderId | string | Unique identifier for the order for which the rider status is being updated. | Yes |
status | string | The current status of the rider for the respective order. Allowed values: RIDER_ASSIGNED, RIDER_AT_STORE, OUT_FOR_DELIVERY, REACHED_DROP_LOCATION, DELIVERED. | Yes |
riderDetails | Rider Details Object | An array containing rider information. Each object includes the rider's name and phone number. | Yes |
Rider Details Object
| Parameter | Type | Description | Required |
name | string | The name of the assigned rider. For example, "Ram" is the name of the delivery executive handling the order. | Yes |
phone | string | The phone number of the rider. For example, "98******10" refers to the contact number of the assigned delivery executive. | Yes |
Sample Request Body
{
"orderId": "10454115",
"status": "OUT-FOR-DELIVERY",
"riderDetails": {
"name": "Ram",
"phone": "9******210"
}
}
Sample Response Body
200
{
"message": "Delivery Status updated successfully."
}
400
{
"error": "error message"
}
Store Management
Store Status
API to enable/disable a store on Nutana Systems.
Request URL
POST/api/v1/store-status
Request Headers
| Header | Description |
|---|---|
| key | <Key> |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
restId | string | Unique identifier of the restaurant for which status needs to be updated. | Yes |
orderingEnabled | boolean | This indicates the current status of the Restaurant (whether it is accepting new orders or not). For example, true indicates that Restaurant is open for new orders. | Yes |
nextAvailableAt | int | Unix timestamp (in seconds) | No |
reason | string | reason for store closure | No |
Sample Request Body
{
"restId": "b7hi36eg",
"orderingEnabled": true
}
Sample Response Body
200
{
"message": "Restaurant status successfully updated."
}
400
{
"error": "error message"
}