Skip to main content

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

ParameterTypeRequiredDescriptionDefault
pagenumberNoPage number (starting from 1)1
limitnumberNoNumber of orders per page (1-100)50
createdAtStartDatestringNoStart date for order creation (ISO 8601)-
createdAtEndDatestringNoEnd date for order creation (ISO 8601)-
locationCodestringNoLocation code for filtering-
statusesarrayNoOrder 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:

Orders List 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

ParameterTypeRequiredDescription
idstring (UUID)YesUnique 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:

Single Order 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

ActionPickupMerchant DeliveryThird‑Party Delivery
readyYesYesYes
finishYesYesYes
deliveredN/AYesNo (platform-driven)
cancelYesYesYes

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 orders
  • totalPages - 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.