Olo · Schema
Olo Promotions Request
The shared request payload sent by Olo to a promotions provider for the Validate Promotions and Redeem Promotions operations, describing an order, its totals, and its basket contents.
Food ServiceRestaurantsOnline OrderingDeliveryPoint of SaleHospitalityPaymentsLoyaltyMarketing
Properties
| Name | Type | Description |
|---|---|---|
| orderId | stringnull | The ID of the order, only populated once the order has been placed. |
| accountId | stringnull | The loyalty account's unique identifier in the provider's system. |
| source | string | The source of the order. |
| handoff | stringnull | The handoff method for the order. |
| currency | string | A three-letter ISO 4217 currency code; defaults to USD. |
| placed | stringnull | A UTC RFC 3339 date-time representing when the order was created. |
| wanted | stringnull | A UTC RFC 3339 date-time representing when the guest wants their food. |
| storeNumber | string | The ID of the store as provided by the restaurant. |
| restaurant | string | A unique ID representing the vendor restaurant in Olo's system. |
| brand | string | A unique ID representing the restaurant brand in Olo's system. |
| subtotal | number | The cost of the food before any tax, tip, fees or discounts. |
| tax | numbernull | The amount of tax applied to the order. |
| tip | numbernull | The amount the customer tipped on the order. |
| delivery | numbernull | The delivery fee for the order. |
| customFees | numbernull | The sum of any custom fees applied to the order. |
| discount | numbernull | The sum of any discounts applied to the order. |
| total | number | The final total for the order after tax, tip, fees and discounts. |
| address | objectnull | The destination address of the order. |
| payments | arraynull | Any payments applied to the order. |
| basket | object | The basket contents for an order. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/olo/main/json-schema/olo-promotions-request-schema.json",
"title": "Olo Promotions Request",
"description": "The shared request payload sent by Olo to a promotions provider for the Validate Promotions and Redeem Promotions operations, describing an order, its totals, and its basket contents.",
"type": "object",
"required": ["subtotal", "total", "basket"],
"properties": {
"orderId": { "type": ["string", "null"], "description": "The ID of the order, only populated once the order has been placed." },
"accountId": { "type": ["string", "null"], "description": "The loyalty account's unique identifier in the provider's system." },
"source": { "type": "string", "enum": ["Web", "MobileWeb", "iOS", "Android", "Kiosk", "Other"], "description": "The source of the order." },
"handoff": { "type": ["string", "null"], "enum": ["Pickup", "Curbside", "Delivery", "Dispatch", "Drivethru", "Dinein", null], "description": "The handoff method for the order." },
"currency": { "type": "string", "description": "A three-letter ISO 4217 currency code; defaults to USD." },
"placed": { "type": ["string", "null"], "format": "date-time", "description": "A UTC RFC 3339 date-time representing when the order was created." },
"wanted": { "type": ["string", "null"], "format": "date-time", "description": "A UTC RFC 3339 date-time representing when the guest wants their food." },
"storeNumber": { "type": "string", "description": "The ID of the store as provided by the restaurant." },
"restaurant": { "type": "string", "description": "A unique ID representing the vendor restaurant in Olo's system." },
"brand": { "type": "string", "description": "A unique ID representing the restaurant brand in Olo's system." },
"subtotal": { "type": "number", "description": "The cost of the food before any tax, tip, fees or discounts." },
"tax": { "type": ["number", "null"], "description": "The amount of tax applied to the order." },
"tip": { "type": ["number", "null"], "description": "The amount the customer tipped on the order." },
"delivery": { "type": ["number", "null"], "description": "The delivery fee for the order." },
"customFees": { "type": ["number", "null"], "description": "The sum of any custom fees applied to the order." },
"discount": { "type": ["number", "null"], "description": "The sum of any discounts applied to the order." },
"total": { "type": "number", "description": "The final total for the order after tax, tip, fees and discounts." },
"address": {
"type": ["object", "null"],
"description": "The destination address of the order.",
"properties": {
"street": { "type": "string", "description": "The street address." },
"city": { "type": "string", "description": "The name of the city." },
"code": { "type": "string", "description": "The zip code." },
"country": { "type": "string", "description": "A three-letter ISO 3166-1 country code." }
}
},
"payments": {
"type": ["array", "null"],
"description": "Any payments applied to the order.",
"items": {
"type": "object",
"properties": {
"tender": { "type": "string", "enum": ["Cash", "Check", "Credit", "Debit", "Prepaid", "Transfer", "Value", "Other"] },
"issuer": { "type": "string", "enum": ["Amex", "Diners", "Discover", "JCB", "MasterCard", "PayPal", "Visa"] },
"suffix": { "type": "string", "description": "The credit card suffix; only when tender is Credit." },
"amount": { "type": "number", "description": "The payment amount for this payment method." }
}
}
},
"basket": {
"type": "object",
"description": "The basket contents for an order.",
"properties": {
"id": { "type": "string", "description": "The ID of the basket; the unique order identifier until an order ID is generated." },
"rewards": { "type": "array", "description": "Any loyalty rewards applied to the basket.", "items": { "type": "object" } },
"coupons": { "type": "array", "description": "Any coupons applied to the basket.", "items": { "type": "object" } },
"entries": { "type": "array", "description": "The Olo representations of the basket items.", "items": { "type": "object" } },
"posEntries": { "type": "array", "description": "The POS representations of the basket items.", "items": { "type": "object" } }
}
}
}
}