Orders
The Orders API allows you to retrieve and manage order information.
Base URL
https://public-api.onetablet.co/api/v1
Authentication
All requests require an API key passed in the x-api-key header. See the Authentication guide for details.
Get Orders List
Retrieve a list of orders with filtering and pagination support.
GET /orders
Query Parameters
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
page | number | No | Page number (starting from 1) | 1 |
limit | number | No | Number of orders per page (1-100) | 50 |
createdAtStartDate | string | No | Start date for order creation (ISO 8601) | - |
createdAtEndDate | string | No | End date for order creation (ISO 8601) | - |
locationCode | string | No | Location code for filtering | - |
statuses | array | No | Order statuses for filtering. Allowed: new, future, rejected, cancelled, ready, finished | - |
Response Type
type OrdersListResponse = {
items: Array<Order>;
pagination: {
page: number;
limit: number;
total: number;
totalPages: number;
};
};
See Order Schema for the complete data structure.
Example Request
curl -X GET "https://public-api.onetablet.co/api/v1/orders?page=1&limit=10&statuses=new&statuses=ready" \
-H "x-api-key: your-api-key"
Example Response
Example response:
{
"items": [
{
"id": "3475e4e5-ff33-4acd-bdc6-2937670d10f8",
"status": "ready",
"deliveryStatus": "EN_ROUTE_TO_CUSTOMER",
"createdAt": "2022-06-13T16:20:46.100Z",
"updatedAt": "2022-06-13T16:25:00.000Z",
"store": {
"id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"externalId": "gh-les1-tributo",
"location": "Tributo LES",
"brand": "Tributo",
"platform": "grubhub"
},
"details": {
"externalId": "tE3_Qes0Eeyf_V8y5nw54Q",
"externalReadableOrderNum": "56141916-4846305",
"placedAt": "2022-06-13T16:20:46.062Z",
"estimatedPickupAt": "2022-06-13T17:01:00.000Z",
"isPickup": false,
"consumer": {
"id": null,
"name": "Jacob Yee",
"email": "",
"phone": "9548958785"
},
"consumers": [],
"isGroupOrder": false,
"note": "Include napkins and utensils",
"deliveryNote": "Will need to come to the lobby to collect from person Company Name: DailyPay",
"isMerchantDelivery": false,
"deliveryAddress": {
"googlePlaceId": "ChIJVTPokywQkFQRmtVEaUZlJRA",
"lat": 40.7034,
"lng": -74.0098,
"label": "55 Water St, New York, NY 10041",
"raw": "{\"address_line1\":\"55 Water St\",\"city\":\"New York\"}"
},
"total": 2197,
"subtotal": 1975,
"tax": 122,
"tip": 100,
"deliveryFee": 0,
"utensils": true,
"promotions": [
{
"name": "Free delivery",
"discountValue": 349
}
],
"items": [
{
"id": "e1809cd4-7948-4a16-861c-501e094ef02b",
"sku": "SKU-TACO-001",
"name": "Salt & Pepper Shrimp Taco",
"quantity": 1,
"price": {
"base": 1375,
"menu": 1375,
"unit": 1375,
"total": 1375
},
"modifiers": [
{
"id": "66561a41-5f7c-47fc-b44c-31ada1453276",
"sku": "SKU-PROTEIN-BEEF",
"name": "Beef",
"quantity": 1,
"price": {
"base": 0,
"menu": 0,
"unit": 0,
"total": 0
},
"modifierGroup": {
"id": "grp-protein",
"name": "Protein Choice"
}
},
{
"id": "3f20c307-e97e-4111-a476-53039f64a083",
"name": "Salsa Verde",
"quantity": 1,
"price": {
"base": 0,
"menu": 0,
"unit": 0,
"total": 0
}
},
{
"id": "opt-combo-001",
"name": "Combo Extras",
"quantity": 1,
"price": {
"base": 200,
"menu": 200,
"unit": 200,
"total": 200
},
"modifiers": [
{
"id": "sauce-side",
"name": "Sauce on the Side",
"quantity": 1,
"price": {
"base": 0,
"menu": 0,
"unit": 0,
"total": 0
}
}
]
}
]
},
{
"id": "04645392-0bb1-482a-afaf-479df05787b1",
"sku": "SKU-RICE-002",
"name": "Fried Rice",
"quantity": 1,
"price": {
"base": 600,
"menu": 600,
"unit": 600,
"total": 600
},
"note": "No onions",
"modifiers": [
{
"id": "22bbcd65-14d2-4809-a5c1-563c58a0bea8",
"name": "Add Egg",
"quantity": 1,
"price": {
"base": 0,
"menu": 0,
"unit": 0,
"total": 0
}
}
]
}
]
},
"rawPlatformFinancials": {
"totals": {
"subtotal": 1975,
"total": 2197,
"grandTotal": 2197,
"merchantTotal": 1650,
"dinerGrandTotal": null,
"adjustedGrandTotal": null,
"subtotalBeforeCoupons": 2324
},
"taxes": {
"total": 122,
"sales": 122,
"delivery": 0,
"restaurant": 122,
"merchantTotal": 122,
"merchantSalesTotal": 122,
"taxSource": "platform"
},
"taxRemittance": {
"isTaxRemittedByPlatform": true,
"taxRemittedByPlatform": 122,
"platformTaxRemittance": [
{
"amount": 122,
"currencyCode": "USD"
}
],
"restaurantTaxRemittance": null,
"courierTaxRemittance": null,
"eaterTaxRemittance": null
},
"tip": {
"amount": 100,
"type": "PREPAID"
},
"fees": {
"total": 0,
"delivery": 0,
"deliveryTax": 0,
"smallOrder": null,
"smallOrderTax": null,
"totalFeeTax": 0,
"bagFee": null,
"pickAndPackFee": null
},
"payments": {
"total": 2197,
"adjustedTotal": 2197,
"paymentMethods": [
{
"paymentType": "CREDIT_CARD",
"amount": 2197,
"taxApplication": "POST_TAX",
"paymentSource": "DINER"
}
]
},
"promotions": {
"appliedDiscounts": [
{
"discountAmount": 349,
"promoId": "promo-free-delivery",
"promoCode": null,
"externalCampaignId": null
}
],
"loyaltyRewards": null,
"coupons": null,
"platformPromotions": null,
"totalPromoApplied": 349,
"subtotalPromoApplied": 0,
"taxPromoApplied": 0
},
"platformMetadata": {
"commissionType": "regular",
"isDemandGen": false,
"subtotalForTax": 1975,
"subtotalDiscountFundingSource": null,
"storeOrderCartId": "cart-gh-56141916",
"taxWithheld": true,
"restaurantSubtotal": 1975,
"currencyCode": "USD"
}
}
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 150,
"totalPages": 15
}
}
Get Order by ID
Retrieve information about a specific order by its ID.
GET /orders/{id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string (UUID) | Yes | Unique order identifier |
Response Type
type OrderResponse = Order;
See Order Schema for the complete data structure.
Example Request
curl -X GET "https://public-api.onetablet.co/api/v1/orders/550e8400-e29b-41d4-a716-446655440000" \
-H "x-api-key: your-api-key"
Example Response
Example response:
{
"id": "3475e4e5-ff33-4acd-bdc6-2937670d10f8",
"status": "ready",
"deliveryStatus": "EN_ROUTE_TO_CUSTOMER",
"createdAt": "2022-06-13T16:20:46.100Z",
"updatedAt": "2022-06-13T16:25:00.000Z",
"store": {
"id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"externalId": "gh-les1-tributo",
"location": "Tributo LES",
"brand": "Tributo",
"platform": "grubhub"
},
"details": {
"externalId": "tE3_Qes0Eeyf_V8y5nw54Q",
"externalReadableOrderNum": "56141916-4846305",
"placedAt": "2022-06-13T16:20:46.062Z",
"estimatedPickupAt": "2022-06-13T17:01:00.000Z",
"isPickup": false,
"consumer": {
"id": null,
"name": "Jacob Yee",
"email": "",
"phone": "9548958785"
},
"consumers": [],
"isGroupOrder": false,
"note": "Include napkins and utensils",
"deliveryNote": "Will need to come to the lobby to collect from person Company Name: DailyPay",
"isMerchantDelivery": false,
"deliveryAddress": {
"googlePlaceId": "ChIJVTPokywQkFQRmtVEaUZlJRA",
"lat": 40.7034,
"lng": -74.0098,
"label": "55 Water St, New York, NY 10041",
"raw": "{\"address_line1\":\"55 Water St\",\"city\":\"New York\"}"
},
"total": 2197,
"subtotal": 1975,
"tax": 122,
"tip": 100,
"deliveryFee": 0,
"utensils": true,
"promotions": [
{
"name": "Free delivery",
"discountValue": 349
}
],
"items": [
{
"id": "e1809cd4-7948-4a16-861c-501e094ef02b",
"sku": "SKU-TACO-001",
"name": "Salt & Pepper Shrimp Taco",
"quantity": 1,
"price": {
"base": 1375,
"menu": 1375,
"unit": 1375,
"total": 1375
},
"modifiers": [
{
"id": "66561a41-5f7c-47fc-b44c-31ada1453276",
"sku": "SKU-PROTEIN-BEEF",
"name": "Beef",
"quantity": 1,
"price": {
"base": 0,
"menu": 0,
"unit": 0,
"total": 0
},
"modifierGroup": {
"id": "grp-protein",
"name": "Protein Choice"
}
},
{
"id": "3f20c307-e97e-4111-a476-53039f64a083",
"name": "Salsa Verde",
"quantity": 1,
"price": {
"base": 0,
"menu": 0,
"unit": 0,
"total": 0
}
},
{
"id": "opt-combo-001",
"name": "Combo Extras",
"quantity": 1,
"price": {
"base": 200,
"menu": 200,
"unit": 200,
"total": 200
},
"modifiers": [
{
"id": "sauce-side",
"name": "Sauce on the Side",
"quantity": 1,
"price": {
"base": 0,
"menu": 0,
"unit": 0,
"total": 0
}
}
]
}
]
},
{
"id": "04645392-0bb1-482a-afaf-479df05787b1",
"sku": "SKU-RICE-002",
"name": "Fried Rice",
"quantity": 1,
"price": {
"base": 600,
"menu": 600,
"unit": 600,
"total": 600
},
"note": "No onions",
"modifiers": [
{
"id": "22bbcd65-14d2-4809-a5c1-563c58a0bea8",
"name": "Add Egg",
"quantity": 1,
"price": {
"base": 0,
"menu": 0,
"unit": 0,
"total": 0
}
}
]
}
]
},
"rawPlatformFinancials": {
"totals": {
"subtotal": 1975,
"total": 2197,
"grandTotal": 2197,
"merchantTotal": 1650,
"dinerGrandTotal": null,
"adjustedGrandTotal": null,
"subtotalBeforeCoupons": 2324
},
"taxes": {
"total": 122,
"sales": 122,
"delivery": 0,
"restaurant": 122,
"merchantTotal": 122,
"merchantSalesTotal": 122,
"taxSource": "platform"
},
"taxRemittance": {
"isTaxRemittedByPlatform": true,
"taxRemittedByPlatform": 122,
"platformTaxRemittance": [
{
"amount": 122,
"currencyCode": "USD"
}
],
"restaurantTaxRemittance": null,
"courierTaxRemittance": null,
"eaterTaxRemittance": null
},
"tip": {
"amount": 100,
"type": "PREPAID"
},
"fees": {
"total": 0,
"delivery": 0,
"deliveryTax": 0,
"smallOrder": null,
"smallOrderTax": null,
"totalFeeTax": 0,
"bagFee": null,
"pickAndPackFee": null
},
"payments": {
"total": 2197,
"adjustedTotal": 2197,
"paymentMethods": [
{
"paymentType": "CREDIT_CARD",
"amount": 2197,
"taxApplication": "POST_TAX",
"paymentSource": "DINER"
}
]
},
"promotions": {
"appliedDiscounts": [
{
"discountAmount": 349,
"promoId": "promo-free-delivery",
"promoCode": null,
"externalCampaignId": null
}
],
"loyaltyRewards": null,
"coupons": null,
"platformPromotions": null,
"totalPromoApplied": 349,
"subtotalPromoApplied": 0,
"taxPromoApplied": 0
},
"platformMetadata": {
"commissionType": "regular",
"isDemandGen": false,
"subtotalForTax": 1975,
"subtotalDiscountFundingSource": null,
"storeOrderCartId": "cart-gh-56141916",
"taxWithheld": true,
"restaurantSubtotal": 1975,
"currencyCode": "USD"
}
}
}
Order Actions
The Orders API provides endpoints to manage order status through standardized actions.
Action Applicability
| Action | Pickup | Merchant Delivery | Third‑Party Delivery |
|---|---|---|---|
| ready | Yes | Yes | Yes |
| finish | Yes | Yes | Yes |
| delivered | N/A | Yes | No (platform-driven) |
| cancel | Yes | Yes | Yes |
Mark as Ready
Marks an order as ready for pickup or delivery.
POST /orders/{id}/ready
Response: 200 OK with an empty body
Mark as Finished (Picked Up)
Marks an order as finished (picked up). For pickup orders, this is the terminal state.
POST /orders/{id}/finish
Response: 200 OK with an empty body
Mark as Delivered (Merchant Delivery)
For merchant delivery orders, marks the order as delivered. Third-party delivery status updates are managed by the delivery platform and reported via webhooks.
POST /orders/{id}/delivered
Response: 200 OK with an empty body
Cancel Order
Cancels the order. The cancellation initiator and reason will be reflected in the cancellation object.
POST /orders/{id}/cancel
Request Body
{ "reason": "string" }
Response: 200 OK with a short success message
Error Responses
The API uses standard HTTP status codes for errors.
400 Bad Request
{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}
401 Unauthorized
{
"statusCode": 401,
"message": "Unauthorized",
"error": "Unauthorized"
}
404 Not Found
{
"statusCode": 404,
"message": "Order not found",
"error": "Not Found"
}
409 Conflict
Returned when an action conflicts with the order's current state (e.g., trying to cancel an already finished order).
{
"statusCode": 409,
"message": "Action conflicts with current order state",
"error": "Conflict"
}
500 Internal Server Error
{
"statusCode": 500,
"message": "Internal server error",
"error": "Internal Server Error"
}
Pagination
When retrieving a list of orders, pagination is used:
page- page number (starting from 1)limit- number of items per page (maximum 100)total- total number of orderstotalPages- total number of pages
Date Format
All dates are returned in ISO 8601 format (UTC): YYYY-MM-DDTHH:mm:ssZ.
Date filters use the order's createdAt timestamp. Both bounds are inclusive. Use ISO 8601 UTC format.