{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/grubhub/main/json-schema/grubhub-posorder-schema.json",
"title": "PosOrder",
"x-generated": "2026-09-17",
"x-method": "derived",
"x-source": "openapi/grubhub-orders-openapi.yml#/components/schemas/PosOrder",
"type": "object",
"properties": {
"uuid": {
"type": "string",
"description": "The globally unique identity of the order. This is the primary and only guaranteed unique identity.",
"format": "uuid"
},
"order_merchant_uuid": {
"type": "string",
"format": "uuid",
"writeOnly": true
},
"merchant_uuid": {
"type": "string",
"description": "Grubhub UUID for the merchant.",
"format": "uuid"
},
"order_number": {
"type": "string",
"description": "A more human-readable order number to show to the customer and merchant For standard and catering orders, this is equivalent to the parent_order_number. For group orders, this is the number related to the orders at that specific restaurant as a subset of the larger group order This is not guaranteed to be unique forever and is thus not used as a true identifier from an API perspective."
},
"parent_order_number": {
"type": "string",
"description": "A more human-readable order number to show to the driver This will be the order number displayed on the Grubhub Driver App. This is not guaranteed to be unique forever and is thus not used as a true identifier from an API perspective."
},
"is_test": {
"type": "boolean",
"description": "If true, this is a test order and should not actually be prepared"
},
"status": {
"type": "string",
"description": "The status of an order as it passes through the Grubhub fulfillment flow.
ANTICIPATED: denotes a future order, which may be cancelled by diner.
RESTAURANT_CONFIRMABLE: pending confirmation of receipt by the restaurant. These are effectively new ASAP orders. ANTICIPATED orders will automatically become RESTAURANT_CONFIRMABLE at the promise time, less the restaurant's configured pickup or delivery prep time.
DINER_CONFIRMABLE: a status held for future use.
CONFIRMED: denotes that the order was received by restaurant, even if the restaurant is unable to fulfill it.
REJECTED: an error status. For example, if an order is unable to be inserted to the POS, due to menu item mismatch, restaurant offline, etc., the status should be updated to REJECTED. This is not to be used when the order was successfully transmitted, but the restaurant is unable to fulfill it for operational reasons. In that scenario, a Change Request should be submitted to cancel the order.
CANCELLED: a cancellation request by the diner or restaurant has been processed by Grubhub Customer Care.
PICKUP_READY: indicates that the food is prepared and ready for pickup by the diner or a Grubhub delivery courier.
OUT_FOR_DELIVERY: the food is on the way to the diner.
FULFILLED: denotes that the food has been delivered to or picked up by the diner.
UNKNOWN: provided for error handling of strings unmappable to known enumeration values.",
"enum": [
"REJECTED",
"READY_FOR_PICKUP",
"ANTICIPATED",
"RESTAURANT_CONFIRMABLE",
"CONFIRMED",
"CANCELLED",
"DELIVERY_CONFIRMABLE",
"DINER_CONFIRMABLE",
"UNKNOWN",
"PICKUP_READY",
"OUT_FOR_DELIVERY",
"FULFILLED",
"POS_VALIDATING",
"POS_VALIDATED",
"POS_VALIDATION_REJECTED"
]
},
"statusHistory": {
"type": "array",
"description": "A list of all status updates for this order",
"items": {
"$ref": "#/$defs/StatusUpdate"
}
},
"updated_at": {
"$ref": "#/$defs/Instant"
},
"merchant_id": {
"type": "string",
"description": "This field can either be the Grubhub ID for the merchant, or if an external ID is provided, it represents the external ID of the merchant."
},
"fulfillment_info": {
"$ref": "#/$defs/FulfillmentInfo"
},
"brand": {
"type": "string",
"description": "Indicates which brand the order originated from",
"enum": [
"GRUBHUB",
"SEAMLESS",
"WONDER",
"DIRECT",
"GROUPON",
"YELP",
"EAT24",
"TAPINGO",
"UNKNOWN"
]
},
"time_placed": {
"$ref": "#/$defs/Instant"
},
"confirmation_code": {
"type": "string",
"description": "A string indicating the code required when confirming the order via a phone call. This is not required for programmatic confirmations of the order and can most likely be ignored."
},
"when_for": {
"type": "string",
"description": "Target fulfillment time for Pickup and Self-Delivery orders. For Pickup orders: time the order should be fully prepared and ready for handoff. For Self-Delivery orders: time the order is expected to have been delivered to the diner. For Managed Delivery orders: do not use this field; instead use fulfillmentInfo.deliveryInfo.managedDeliveryEstimatedPickup (driver pickup ready time). Integrations should treat this value as authoritative and should not recalculate it.",
"format": "date-time"
},
"restaurant_timezone_id": {
"$ref": "#/$defs/DateTimeZone"
},
"payments": {
"$ref": "#/$defs/Payments"
},
"charges": {
"$ref": "#/$defs/Charges"
},
"tax_withheld": {
"type": "boolean",
"description": "TRUE indicates that sales tax has been collected on behalf of the restaurant by GH"
},
"catering": {
"$ref": "#/$defs/Catering"
},
"order_filtering_applied": {
"type": "boolean",
"writeOnly": true
},
"diner_uuid": {
"type": "array",
"description": "A Grubhub UUID identifying the diner",
"items": {
"type": "string",
"description": "A Grubhub UUID identifying the diner",
"format": "uuid"
}
},
"jit_enabled": {
"type": "boolean",
"description": "Indicates if the associated restaurant has enabled just-in-time preparation for this order, where orders will be prepared only when the driver comes within a specified distance. This does not indicate that the JIT event has fired, just that `just_in_time_fired` can be expected to indicate when the driver is close enough to prepare the order."
},
"just_in_time_fired": {
"type": "boolean",
"description": "TRUE indicates that the driver is within the geofence distance and the restaurant should package the order for pickup."
},
"diners": {
"type": "array",
"description": "List of diners on this order including much related information such as Line and LineOption routingTags.",
"items": {
"$ref": "#/$defs/Diner"
}
},
"order_type": {
"type": "string",
"description": "The type of order (STANDARD, CATERING, GROUP).",
"enum": [
"STANDARD",
"CATERING",
"GROUP",
"UNKNOWN"
]
},
"order_taking_system": {
"type": "string",
"description": "Place where the order was created.",
"enum": [
"CARTING",
"ORDERS",
"ORDER_AHEAD",
"TESTORDERGENERATOR",
"DIRECT",
"EXTERNALORDERS",
"UNKNOWN"
]
},
"handoff_options": {
"uniqueItems": true,
"type": "array",
"description": "Instructions around the handoff pertaining to contact-free delivery",
"items": {
"type": "string",
"description": "Instructions around the handoff pertaining to contact-free delivery"
}
},
"merchant_data": {
"$ref": "#/$defs/PosOrderMerchantData"
},
"restaurant_version_id": {
"$ref": "#/$defs/RestaurantVersionId"
},
"affiliate": {
"$ref": "#/$defs/Affiliate"
},
"fulfillment_scheduling": {
"type": "string",
"description": "Order fulfillment type",
"enum": [
"ASAP",
"FUTURE",
"UNKNOWN"
]
},
"cart_version_id": {
"type": "string",
"description": "The Cart Version Id associate with the PosOrder",
"format": "uuid"
},
"transmission_id": {
"type": "string",
"description": "The Transmission Id associated with the PosOrder.",
"format": "uuid"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string",
"description": "The metadata associated to a specific PosOrder."
},
"description": "The metadata associated to a specific PosOrder."
},
"external_ordering_configs": {
"type": "object",
"additionalProperties": {
"type": "string",
"description": "External Ordering Configurations specific to the Partner."
},
"description": "External Ordering Configurations specific to the Partner."
},
"gh_plus": {
"type": "boolean",
"description": "Is this a GH Plus order."
},
"gh_plus_diner": {
"type": "boolean",
"description": "Is the diner a GH Plus member."
},
"external_order_id": {
"type": "string"
},
"chain_id": {
"type": "string",
"format": "uuid"
},
"order_merchant_id": {
"type": "string",
"description": "Used within grouped orders to identify a portion of an order associated with a single merchant. Grouped orders can have menu items from multiple merchants associated with a single order.",
"format": "uuid"
}
},
"description": "The order model is the basis for all Grubhub orders. This contains all necessary information for fulfilling and processing orders.",
"$defs": {
"Address": {
"type": "object",
"properties": {
"address_line1": {
"type": "string",
"description": "First address line"
},
"address_line2": {
"type": "string",
"description": "Optional second address line"
},
"city": {
"type": "string",
"description": "The city"
},
"state": {
"type": "string",
"description": "The state as a two letter abbreviation"
},
"country": {
"type": "string",
"description": "The country as a two letter abbreviation"
},
"zip_code": {
"type": "string",
"description": "The zip code. This is a string because it may in certain cases contain a +4 zip."
},
"latitude": {
"type": "number",
"description": "The geolocated addresses latitude"
},
"longitude": {
"type": "number",
"description": "The geolocated addresses longitude"
},
"cross_streets": {
"type": "string",
"description": "The closest major cross streets as entered by the diner"
},
"company_name": {
"type": "string",
"description": "Name of the company for a corporate order"
}
},
"description": "Physical street address"
},
"Affiliate": {
"type": "object",
"properties": {
"affiliate_id": {
"type": "string"
},
"affiliate_type": {
"type": "string",
"enum": [
"CLASSIC",
"WHITE_LABEL",
"UNKNOWN"
]
},
"data": {
"type": "string"
}
},
"description": "GH Affiliate class containing the Affiliate Type and Affiliate Id."
},
"CatalogVersion": {
"type": "object",
"properties": {
"version_id": {
"type": "string"
}
}
},
"Catering": {
"type": "object",
"properties": {
"estimated_attendees": {
"type": "integer",
"description": "Number of attendees",
"format": "int32"
},
"budget": {
"type": "integer",
"description": "The budget they had for this order",
"format": "int32"
},
"alternate_name": {
"type": "string",
"description": "Alternative contact info for the order"
},
"alternate_phone": {
"type": "string",
"description": "Alternative contact info for the order"
},
"green_indicated": {
"type": "boolean",
"description": "If set to true, the restaurant should not include napkins, utensils and other items that would just become waste as the diner has access to their own dishes and utensils"
},
"setup_food": {
"type": "boolean",
"description": "If true, the driver should setup the food before leaving"
},
"setup_instructions": {
"type": "string",
"description": "Instructions on how to setup the order"
}
},
"description": "Catering details for an order"
},
"Charges": {
"type": "object",
"properties": {
"fees": {
"$ref": "#/$defs/Fees"
},
"taxes": {
"$ref": "#/$defs/Taxes"
},
"exempted_taxes": {
"$ref": "#/$defs/Taxes"
},
"tip": {
"$ref": "#/$defs/Tip"
},
"diner_grand_total": {
"type": "integer",
"description": "Deprecated. Use "merchant_total" instead.",
"format": "int32",
"deprecated": true
},
"grand_total": {
"type": "integer",
"description": "Deprecated. Use "merchant_total" instead.",
"format": "int32",
"deprecated": true
},
"adjusted_grand_total": {
"type": "integer",
"description": "Deprecated. Use "merchantTotal" instead",
"format": "int32",
"deprecated": true
},
"line_groups": {
"type": "array",
"description": "The items ordered by the diner",
"items": {
"$ref": "#/$defs/LineGroup"
}
},
"coupons": {
"type": "array",
"description": "Coupons applied to the order",
"items": {
"$ref": "#/$defs/PosOrderCoupon"
}
},
"merchant_total": {
"type": "integer",
"description": "The total charges for the order in US Cents. Sum of subtotal, fees, taxes and tips.",
"format": "int64"
},
"diner_total": {
"type": "integer",
"description": "The total amount paid by the diner, including all charges and discounts.",
"format": "int64"
},
"merchant_subtotal": {
"type": "integer",
"description": "Charges for all line items in US Cents. Excludes taxes, tips and fees.",
"format": "int64"
},
"restaurant_subtotal": {
"type": "integer",
"description": "The subtotal amount for the restaurant, before any additional charges or discounts.",
"format": "int64"
},
"merchant_subtotal_before_coupons": {
"type": "integer",
"description": "The subtotal amount for the restaurant before applying any rewards or promotions.",
"format": "int64"
},
"diner_subtotal_before_coupons": {
"type": "integer",
"description": "The subtotal amount for the diner's order before applying any rewards or promotions.",
"format": "int64"
},
"diner_subtotal": {
"type": "integer",
"description": "The subtotal amount for the diner's order after applying rewards or promotions.",
"format": "int64"
}
},
"description": "Contains information about the contents of the order including the financial totals and items ordered."
},
"Chronology": {
"type": "object",
"properties": {
"zone": {
"$ref": "#/$defs/DateTimeZone"
}
}
},
"ContactInfo": {
"type": "object",
"properties": {
"phone": {
"type": "string",
"description": "Phone number of the diner. This number can only be used for the fulfillment of the order and may not be stored and used for any sort of marketing, research or other contacts not directly related to the delivery or pickup of this specific order."
},
"name": {
"type": "string",
"description": "Name of the diner"
},
"email": {
"type": "string",
"description": "E-mail address of the diner"
}
},
"description": "Basic diner contact information"
},
"DateTimeZone": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"fixed": {
"type": "boolean"
}
},
"description": "The timezone of the restaurant"
},
"DefaultContext": {
"type": "object",
"properties": {
"removed": {
"type": "boolean",
"description": "True if boolean line or line sub option has been removed"
},
"default_quantity": {
"type": "integer",
"description": "Present for line or line sub option with quantity if NormalizedModifierPrompt.modifier_prompt_quantity_settings",
"format": "int64"
},
"unit_price": {
"type": "integer",
"description": "Present for line or line sub option with default_quantity, quantity_free, and selected quantity is greater than quantity_free",
"format": "int64"
}
},
"description": "Contextual information to compare a line or line sub option to its default state"
},
"DeliveryInfo": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "An id for this delivery"
},
"address": {
"$ref": "#/$defs/Address"
},
"is_managed_delivery": {
"type": "boolean",
"description": "This delivery will be provided by Grubhub and not by the restaurant"
},
"estimated_delivery_time": {
"$ref": "#/$defs/Instant"
},
"is_green_indicated": {
"type": "boolean",
"description": "If set to true, the restaurant should not include napkins, utensils and other items that would just become waste as the diner has access to their own dishes and utensils"
},
"instruction": {
"type": "string",
"description": "Special instructions for delivery"
},
"contact_info": {
"$ref": "#/$defs/ContactInfo"
},
"managed-delivery-delivered": {
"$ref": "#/$defs/Instant"
},
"managed-delivery-estimated_pickup": {
"$ref": "#/$defs/Instant"
},
"order_delivery_type": {
"type": "string",
"description": "This indicates whether food is delivered by Grubhub or the restaurant.",
"enum": [
"SELF",
"GRUBHUB",
"SUPPLEMENTAL_DELIVERY_AS_GHD",
"SUPPLEMENTAL_DELIVERY_WITH_GHD_AS_PICKUP",
"UNKNOWN"
]
},
"managed_delivery_delivered": {
"$ref": "#/$defs/Instant"
},
"managed_delivery_estimated_pickup": {
"$ref": "#/$defs/Instant"
}
},
"description": "Information on how to deliver the order to the diner"
},
"Dimensions": {
"type": "object",
"properties": {
"depth_in_inches": {
"type": "number",
"format": "float"
},
"width_in_inches": {
"type": "number",
"format": "float"
},
"height_in_inches": {
"type": "number",
"format": "float"
}
}
},
"Diner": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"ACTIVE",
"CANCELLED",
"ADJUSTED",
"UNKNOWN"
]
},
"diner_info": {
"$ref": "#/$defs/ContactInfo"
},
"charges": {
"$ref": "#/$defs/Charges"
},
"payments": {
"$ref": "#/$defs/Payments"
},
"order_diner_number": {
"type": "string"
},
"cart_uuid": {
"type": "string",
"format": "uuid"
},
"participation": {
"type": "string",
"enum": [
"HOST",
"INVITEE",
"UNKNOWN"
]
}
},
"description": "List of diners on this order including much related information such as Line and LineOption routingTags."
},
"Fees": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"description": "Total of all fees in US Cents",
"format": "int32"
},
"delivery": {
"type": "integer",
"description": "Delivery charges in US Cents",
"format": "int32"
}
},
"description": "Base fees paid by the diner for the line items and delivery charges before taxes and tip"
},
"FulfillmentInfo": {
"type": "object",
"properties": {
"delivery_info": {
"$ref": "#/$defs/DeliveryInfo"
},
"pickup_info": {
"$ref": "#/$defs/PickupInfo"
}
},
"description": "Information about how to fulfill the order. If delivery info is provided, this is a delivery order, otherwise this is a pickup order. Exactly one property will be set on this object as delivery and pickup are mutually exclusive and required for fulfillment."
},
"Instant": {
"type": "object",
"properties": {
"chronology": {
"$ref": "#/$defs/Chronology"
},
"millis": {
"type": "integer",
"format": "int64"
},
"zone": {
"$ref": "#/$defs/DateTimeZone"
},
"after_now": {
"type": "boolean"
},
"before_now": {
"type": "boolean"
},
"equal_now": {
"type": "boolean"
}
},
"description": "The time that the diner placed the order"
},
"LeadTimeSettings": {
"type": "object",
"properties": {
"delivery_estimate_minutes": {
"type": "integer",
"format": "int32"
},
"pickup_estimate_minutes": {
"type": "integer",
"format": "int32"
},
"lead_time_settings_tiers": {
"type": "array",
"items": {
"$ref": "#/$defs/LeadTimeSettingsTier"
}
},
"calculated_large_order_threshold_settings": {
"$ref": "#/$defs/ThresholdSettings"
}
}
},
"LeadTimeSettingsTier": {
"required": [
"additional_prep_time",
"threshold",
"threshold_type"
],
"type": "object",
"properties": {
"threshold_type": {
"type": "string",
"enum": [
"ORDER_AMOUNT_CENTS",
"UNKNOWN"
]
},
"threshold": {
"type": "integer",
"format": "int32"
},
"additional_prep_time": {
"type": "integer",
"format": "int32"
}
}
},
"Line": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "A description of the line item."
},
"name": {
"type": "string",
"description": "The name of the line item."
},
"special_instructions": {
"type": "string",
"description": "Free form text special instructions added by the diner."
},
"line_options": {
"type": "array",
"description": "The options selected.",
"items": {
"$ref": "#/$defs/LineOption"
}
},
"price": {
"type": "integer",
"description": "Deprecated. Use "merchant_price" instead.",
"format": "int32",
"deprecated": true
},
"merchant_price": {
"type": "integer",
"description": "The price of this item in US Cents.",
"format": "int64"
},
"quantity": {
"type": "integer",
"description": "The number of this item to include.",
"format": "int32"
},
"id": {
"type": "string",
"description": "The Grubhub ID for this line item, may be null."
},
"menu_item_id": {
"type": "string",
"description": "The Grubhub menu item ID (legacy_id)."
},
"menu_item_uuid": {
"type": "string",
"description": "Grubhub menu item uuid.",
"format": "uuid"
},
"diner_total": {
"type": "integer",
"description": "The total cost of this item (and options) in US Cents.",
"format": "int32"
},
"total": {
"type": "integer",
"description": "Deprecated. Use "merchant_total" instead.",
"format": "int32",
"deprecated": true
},
"merchant_total": {
"type": "integer",
"description": "The total cost of this item (and options) in US Cents.",
"format": "int64"
},
"item_type": {
"type": "string",
"description": "A categorization of this item."
},
"variation_id": {
"type": "string",
"description": "Deprecated. A Grubhub Id for a specific variation of this line item."
},
"tags": {
"type": "array",
"description": "Grubhub tag IDs that apply to this line item.",
"items": {
"type": "integer",
"description": "Grubhub tag IDs that apply to this line item.",
"format": "int32"
}
},
"tag_names": {
"type": "array",
"description": "Grubhub tag names that apply to this line item.",
"items": {
"type": "string",
"description": "Grubhub tag names that apply to this line item."
}
},
"external_id": {
"type": "string",
"description": "The external ID that was stored in Grubhub for this menu item id."
},
"metadata": {
"type": "string",
"description": "Metadata associated with the line item."
},
"routing_tags": {
"uniqueItems": true,
"type": "array",
"description": "Tags for use in Ultimate Pickup system",
"items": {
"type": "string",
"description": "Tags for use in Ultimate Pickup system"
}
},
"line_uuid": {
"type": "string",
"description": "Unique line item id for this order instance (i.e. 2 lines of Hamburger will have the same line Id, but will have different line item Ids).",
"format": "uuid"
},
"packaging_options": {
"uniqueItems": true,
"type": "array",
"description": "Packaging information (i.e. packaging style, ect.)",
"items": {
"type": "string",
"description": "Packaging information (i.e. packaging style, ect.)"
}
},
"physical_info": {
"$ref": "#/$defs/PhysicalInfo"
},
"item_gtin": {
"type": "string"
},
"item_image_url": {
"type": "string"
},
"category": {
"type": "string"
},
"weight": {
"type": "number",
"description": "Weight after driver pick-up"
},
"requested_weight": {
"type": "number",
"description": "Diner requested weight"
},
"measurement_unit": {
"type": "string",
"description": "Measurement unit for a weighted line eg: pound, ounce etc",
"enum": [
"POUND",
"GRAM",
"KILOGRAM",
"OUNCE",
"FLUID_OUNCE",
"UNKNOWN"
]
},
"measurement_type": {
"type": "string",
"description": "Measurement type can be QUANTITY, COUNTABLE_WEIGHT, NON_COUNTABLE_WEIGHT"
},
"estimated_units_per_item": {
"type": "number",
"description": "Estimated units per item"
}
},
"description": "A line item for the order."
},
"LineGroup": {
"required": [
"lines"
],
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A label for the group of line items. This will be used in the future for the name of a diner on a group order."
},
"lines": {
"type": "array",
"description": "The lines items for this portion of the order.",
"items": {
"$ref": "#/$defs/Line"
}
}
},
"description": "A group of line items. Currently, the entire order is within one line group; as group ordering features are rolled out, orders will include multiple line groups."
},
"LineOption": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "DEPRECATED. A label for this line item option."
},
"price": {
"type": "integer",
"description": "The price of this item in US Cents.",
"format": "int32"
},
"id": {
"type": "string",
"description": "A Grubhub id (legacy_id) for this option."
},
"uuid": {
"type": "string",
"description": "Unique line option id for this order instance.",
"format": "uuid"
},
"name": {
"type": "string",
"description": "The name of this option."
},
"line_sub_options": {
"type": "array",
"description": "Sub-options applied to this option.",
"items": {
"$ref": "#/$defs/LineSubOption"
}
},
"external_id": {
"type": "string",
"description": "The external ID that was stored in Grubhub for this option."
},
"metadata": {
"type": "string",
"description": "Metadata associated with the line option."
},
"quantity": {
"type": "integer",
"description": "The number of this line options to include.",
"format": "int32"
},
"routing_tags": {
"uniqueItems": true,
"type": "array",
"description": "Used to route where a line option is printed and/or displayed.",
"items": {
"type": "string",
"description": "Used to route where a line option is printed and/or displayed."
}
},
"default_context": {
"$ref": "#/$defs/DefaultContext"
}
},
"description": "Options applied to a Line Item"
},
"LineSubOption": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The Grubhub ID of the sub option."
},
"name": {
"type": "string",
"description": "The name of the sub option, which will be shown to diners."
},
"price": {
"type": "integer",
"description": "Deprecated. Use "merchant_price" instead.",
"format": "int32",
"deprecated": true
},
"merchant_price": {
"type": "integer",
"description": "The price of this item in US Cents.",
"format": "int64"
},
"diner_price": {
"type": "integer",
"description": "Cost to diner, in cents.",
"format": "int64"
},
"choice_category_id": {
"type": "string",
"description": "The category Id the choice belongs to."
},
"quantity": {
"type": "integer",
"description": "The amount of this option to add to the previous option. This can indicate combos (single menu items with multiple selectable items), options with variable amounts, or options that can be selected multiple times.",
"format": "int32"
},
"tags": {
"type": "array",
"description": "Grubhub tag IDs that apply to this line item.",
"items": {
"$ref": "#/$defs/LineTag"
}
},
"line_sub_options": {
"type": "array",
"description": "Further sub options that apply to this sub option. These can be nested up to ten levels deep.",
"items": {
"$ref": "#/$defs/LineSubOption"
}
},
"external_id": {
"type": "string",
"description": "The external ID that was stored in Grubhub for this menu suboption."
},
"metadata": {
"type": "string",
"description": "Metadata associated with the line option."
},
"routing_tags": {
"uniqueItems": true,
"type": "array",
"description": "Used to route where a line option is printed and/or displayed.",
"items": {
"type": "string",
"description": "Used to route where a line option is printed and/or displayed."
}
},
"default_context": {
"$ref": "#/$defs/DefaultContext"
}
},
"description": "Sub Options that are applied to an Option or other Sub Option. These can be nested up to ten levels deep."
},
"LineTag": {
"type": "object",
"properties": {
"ghc_tag_id": {
"type": "integer",
"description": "The Grubhub Id for the tag.",
"format": "int64"
},
"name": {
"type": "string",
"description": "The name of the tag."
}
},
"description": "Tags that are associated with line items."
},
"OrderFacetData": {
"type": "object",
"properties": {
"lead_time_settings": {
"$ref": "#/$defs/LeadTimeSettings"
},
"min_advance_notice_minutes": {
"type": "integer",
"format": "int32"
}
}
},
"Payment": {
"type": "object",
"properties": {
"payment_type": {
"type": "string",
"description": "The payment type. Note all non-CASH payment types should be treated as pre-paid to a Grubhub tender or house account in the POS.",
"enum": [
"CREDIT_CARD",
"PROMO_CODE",
"UNIFIED_REWARD",
"REWARD",
"GRUBCASH",
"SUBSCRIPTION",
"GIFT_CARD",
"CREDIT_CARD",
"APPLE_PAY",
"PAYPAL_EXPRESS",
"CORPORATE_LINE_OF_CREDIT",
"ANDROID_PAY",
"VENMO_PAY",
"CASH",
"CAMPUS_CARD",
"AMEX_EXPRESS",
"AMAZON_PAY",
"THIRDPARTY_CREDIT",
"THIRDPARTY_GIFT_CARD",
"THIRDPARTY_PROMO",
"CASH_APP"
]
},
"amount": {
"type": "integer",
"description": "The payment amount in US Cents",
"format": "int32"
},
"payment_source": {
"type": "string",
"description": "The source of payment Possible values are `DINER`, `MERCHANT`, `GRUBHUB`, `OTHER`, or `UNKNOWN",
"enum": [
"DINER",
"MERCHANT",
"GRUBHUB",
"OTHER",
"UNKNOWN"
]
},
"tax_application": {
"type": "string",
"description": "Whether this payment is applied `POST_TAX`, `PRE_TAX`, or that the tax applied to this payment is`UNKNOWN`. Most payment types will be applied `POST_TAX`; however, loyalty rewards are applied by the merchant and therefore lower the taxable amount of the order. These payments from the merchant will generally be listed as `PRE_TAX'.",
"enum": [
"PRE_TAX",
"POST_TAX",
"UNKNOWN"
]
},
"promotion_title": {
"type": "string",
"description": "The name of the applied promotion."
},
"external_promotion_id": {
"type": "string",
"description": "The external ID that the partner uses to reference the applied promotion"
}
},
"description": "A single payment source",
"example": "{\n\"payment_type\": \"UNIFIED_REWARD\",\n\"amount\": 1000,\n\"payment_source\": \"MERCHANT\",\n\"tax_application\": \"PRE_TAX\"\n\"promotion_title\": \"$5 off $25 or more\"\n\"external_promotion_id\": \"12345\"\n}"
},
"Payments": {
"type": "object",
"properties": {
"payments": {
"type": "array",
"description": "A payment source",
"example": "[{ \"payment_type\": \"UNIFIED_REWARD\", \"amount\": 1000, \"payment_source\": \"MERCHANT\", \"tax_application\": \"PRE_TAX\" }\n\"promotion_title\": \"$5 off $25 or more\"\n\"external_promotion_id\": \"12345\"\n,\n{\n\"payment_type\": \"CREDIT_CARD\",\n\"amount\": 1620,\n\"payment_source\": \"UNKNOWN\",\n\"tax_application\": \"POST_TAX\"\n\"promotion_title\": \"$5 off $25 or more\"\n\"external_promotion_id\": \"12345\"\n}]",
"items": {
"$ref": "#/$defs/Payment"
}
},
"rewards": {
"type": "array",
"description": "List of rewards applied to the order.",
"items": {
"$ref": "#/$defs/Reward"
}
},
"promo_codes": {
"type": "array",
"writeOnly": true,
"items": {
"$ref": "#/$defs/Promotion"
}
},
"total": {
"type": "integer",
"description": "Initial total for an order in US Cents",
"format": "int32",
"example": 2620
},
"adjusted_total": {
"type": "integer",
"description": "Total payments after adjustments in US Cents",
"format": "int32",
"example": 2620
},
"promotions": {
"type": "array",
"description": "List of promotions applied to the order.",
"items": {
"$ref": "#/$defs/Promotion"
}
}
},
"description": "Information relating to any payments/rewards/promotions applied to the order"
},
"PhysicalInfo": {
"type": "object",
"properties": {
"dimensions": {
"$ref": "#/$defs/Dimensions"
},
"weight_in_pounds": {
"type": "number",
"format": "float"
},
"location_in_store": {
"type": "string"
}
}
},
"PickupInfo": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the person coming to pickup the order"
},
"contact_info": {
"$ref": "#/$defs/ContactInfo"
},
"instructions": {
"type": "string",
"description": "Special instructions for pickup"
},
"estimated_pickup_time": {
"$ref": "#/$defs/Instant"
},
"is_green_indicated": {
"type": "boolean",
"description": "if set to true, the merchant should not include napkins, utensils and other items that would just become waste as the diner has access to their own dishes and utensils"
}
},
"description": "Information about the pickup order"
},
"PosOrderCoupon": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The coupon description."
},
"amount": {
"type": "integer",
"description": "The coupon amount.",
"format": "int32"
}
},
"description": "Information relating to a coupon that can be applied to an order"
},
"PosOrderMerchantData": {
"type": "object",
"properties": {
"order_facet_data": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/OrderFacetData"
}
},
"restaurant_tags": {
"uniqueItems": true,
"type": "array",
"items": {
"type": "string"
}
},
"fulfillment_tags": {
"uniqueItems": true,
"type": "array",
"items": {
"type": "string"
}
},
"chain_name": {
"type": "string"
}
},
"description": "Merchant specific data including tags, chain name, and lead time."
},
"Promotion": {
"type": "object",
"properties": {
"amount": {
"type": "integer",
"description": "Amount of the payment type.",
"format": "int32"
},
"payment_source": {
"type": "string",
"description": "Source of the payment (DINER, MERCHANT, GRUBHUB, OTHER).",
"enum": [
"DINER",
"MERCHANT",
"GRUBHUB",
"OTHER",
"UNKNOWN"
]
},
"tax_application": {
"type": "string",
"description": "How this order was taxed (PRE_TAX, POST_TAX, UNKNOWN).",
"enum": [
"PRE_TAX",
"POST_TAX",
"UNKNOWN"
]
}
},
"description": "Information relating to any promotion applied to an order"
},
"RestaurantVersionId": {
"type": "object",
"properties": {
"catalog_version": {
"$ref": "#/$defs/CatalogVersion"
}
},
"description": "The Restaurant Version Id associated with the PosOrder."
},
"Reward": {
"type": "object",
"properties": {
"amount": {
"type": "integer",
"description": "Amount of the payment type.",
"format": "int32"
},
"payment_source": {
"type": "string",
"description": "Source of the payment (DINER, MERCHANT, GRUBHUB, OTHER).",
"enum": [
"DINER",
"MERCHANT",
"GRUBHUB",
"OTHER",
"UNKNOWN"
]
},
"tax_application": {
"type": "string",
"description": "How this order was taxed (PRE_TAX, POST_TAX, UNKNOWN).",
"enum": [
"PRE_TAX",
"POST_TAX",
"UNKNOWN"
]
}
},
"description": "Information relating to any rewards applied to an order"
},
"StatusUpdate": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "The status of an order as it passes through the Grubhub fulfillment flow.
ANTICIPATED: denotes a future order, which may be cancelled by diner.
RESTAURANT_CONFIRMABLE: pending confirmation of receipt by the restaurant. These are effectively new ASAP orders. ANTICIPATED orders will automatically become RESTAURANT_CONFIRMABLE at the promise time, less the restaurant's configured pickup or delivery prep time.
DINER_CONFIRMABLE: a status held for future use.
CONFIRMED: denotes that the order was received by restaurant, even if the restaurant is unable to fulfill it.
REJECTED: an error status. For example, if an order is unable to be inserted to the POS, due to menu item mismatch, restaurant offline, etc., the status should be updated to REJECTED. This is not to be used when the order was successfully transmitted, but the restaurant is unable to fulfill it for operational reasons. In that scenario, a Change Request should be submitted to cancel the order.
CANCELLED: a cancellation request by the diner or restaurant has been processed by Grubhub Customer Care.
PICKUP_READY: indicates that the food is prepared and ready for pickup by the diner or a Grubhub delivery courier.
OUT_FOR_DELIVERY: the food is on the way to the diner.
FULFILLED: denotes that the food has been delivered to or picked up by the diner.
UNKNOWN: provided for error handling of strings unmappable to known enumeration values.",
"enum": [
"REJECTED",
"READY_FOR_PICKUP",
"ANTICIPATED",
"RESTAURANT_CONFIRMABLE",
"CONFIRMED",
"CANCELLED",
"DELIVERY_CONFIRMABLE",
"DINER_CONFIRMABLE",
"UNKNOWN",
"PICKUP_READY",
"OUT_FOR_DELIVERY",
"FULFILLED",
"POS_VALIDATING",
"POS_VALIDATED",
"POS_VALIDATION_REJECTED"
]
},
"timestamp": {
"$ref": "#/$defs/Instant"
},
"update_source": {
"type": "string",
"description": "The source of the update.",
"enum": [
"DINER",
"RESTAURANT",
"GRUBHUB",
"GRUBHUB_ADMIN",
"GRUBHUB_CARE",
"GRUBHUB_CORE",
"GRUBHUB_DAPI",
"GRUBHUB_ORDERS_REAPER",
"CONFIRMATION_EMAIL_SERVICE",
"FAX_RING",
"MERCHANT_ORDERS",
"CONFIRMATION_AUTOMATION",
"POS_MICROS",
"POS_GENERIC",
"POS_ALOHA",
"POS_XENIAL",
"POS_POSITOUCH",
"TX",
"TXS",
"GRUBHUB_ORDERS_ANTICIPATED_REAPER",
"GRUBHUB_ORDERS_DAPI_SUPERVISOR",
"GRUBHUB_ORDERS_AUTOCONFIRM_SUPERVISOR",
"GRUBHUB_ORDERS_AUTOBUMP",
"GRUBHUB_ORDERS_NOTIFICATION_SUPERVISOR",
"GRUBHUB_ORDERS_FULFILLMENT_SUPERVISOR",
"GRUBHUB_ORDERS_TRANSMISSION_SUPERVISOR",
"UNKNOWN"
]
},
"reason": {
"type": "string",
"description": "An optional reason for the update."
},
"segment_index": {
"type": "integer",
"description": "A number denoting the order of the status. Higher numbers correspond to more recent order statuses",
"format": "int32"
}
},
"description": "A status update reflects each successive change in the status of an order."
},
"Taxes": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"description": "Deprecated. Use "merchantTotal" instead",
"format": "int32",
"deprecated": true
},
"sales": {
"type": "integer",
"description": "Deprecated. Use "merchantSalesTotal" instead",
"format": "int32",
"deprecated": true
},
"delivery": {
"type": "integer",
"description": "Tax portion attributed to delivery fees",
"format": "int32"
},
"restaurant": {
"type": "integer",
"description": "Deprecated. Use merchantTotal instead",
"format": "int32",
"deprecated": true
},
"merchant_sales_total": {
"type": "integer",
"description": "Total sales amount generated by the merchant transaction, inclusive of taxes.",
"format": "int64"
},
"diner_sales_total": {
"type": "integer",
"description": "Total sales amount generated from the diner transaction, inclusive of taxes.",
"format": "int64"
},
"merchant_total": {
"type": "integer",
"description": "Total amount earned by the merchant after deducting taxes from their sales.",
"format": "int64"
},
"diner_total": {
"type": "integer",
"description": "Total amount paid by the diner, including taxes.",
"format": "int64"
},
"tax_source": {
"type": "string",
"description": "Indicates if either the merchant, Vertex, or an unknown source provided the rates leading to tax calculation.",
"enum": [
"UNKNOWN",
"MERCHANT",
"VERTEX"
]
},
"tax_area_id": {
"type": "string",
"description": "The tax area id associated with this order."
}
},
"description": "Taxes paid by the diner"
},
"ThresholdSettings": {
"type": "object",
"properties": {
"threshold": {
"type": "integer",
"format": "int32"
},
"threshold_type": {
"type": "string",
"enum": [
"ORDER_AMOUNT_CENTS",
"UNKNOWN"
]
}
}
},
"Tip": {
"type": "object",
"properties": {
"amount": {
"type": "integer",
"description": "Tip amount",
"format": "int32"
},
"type": {
"type": "string",
"description": "Type of Tip. CASH or INCLUDE_IN_BILL",
"enum": [
"CASH",
"INCLUDE_IN_BILL",
"UNKNOWN"
]
}
},
"description": "Tip for the order"
}
}
}