Grubhub · Schema
PosOrder
The order model is the basis for all Grubhub orders. This contains all necessary information for fulfilling and processing orders.
Food DeliveryRestaurantMarketplaceOnline OrderingPoint-of-SaleLogisticsLast Mile DeliveryMenu ManagementHospitalityLocal CommerceDelivery
Properties
| Name | Type | Description |
|---|---|---|
| uuid | string | The globally unique identity of the order. This is the primary and only guaranteed unique identity. |
| order_merchant_uuid | string | |
| merchant_uuid | string | Grubhub UUID for the merchant. |
| order_number | string | 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 |
| parent_order_number | string | 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 i |
| is_test | boolean | If true, this is a test order and should not actually be prepared |
| status | string | 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 confirma |
| statusHistory | array | A list of all status updates for this order |
| updated_at | object | |
| merchant_id | string | 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 | object | |
| brand | string | Indicates which brand the order originated from |
| time_placed | object | |
| confirmation_code | string | 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 | string | 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 h |
| restaurant_timezone_id | object | |
| payments | object | |
| charges | object | |
| tax_withheld | boolean | TRUE indicates that sales tax has been collected on behalf of the restaurant by GH |
| catering | object | |
| order_filtering_applied | boolean | |
| diner_uuid | array | A Grubhub UUID identifying the diner |
| jit_enabled | boolean | 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 |
| just_in_time_fired | boolean | TRUE indicates that the driver is within the geofence distance and the restaurant should package the order for pickup. |
| diners | array | List of diners on this order including much related information such as Line and LineOption routingTags. |
| order_type | string | The type of order (STANDARD, CATERING, GROUP). |
| order_taking_system | string | Place where the order was created. |
| handoff_options | array | Instructions around the handoff pertaining to contact-free delivery |
| merchant_data | object | |
| restaurant_version_id | object | |
| affiliate | object | |
| fulfillment_scheduling | string | Order fulfillment type |
| cart_version_id | string | The Cart Version Id associate with the PosOrder |
| transmission_id | string | The Transmission Id associated with the PosOrder. |
| metadata | object | The metadata associated to a specific PosOrder. |
| external_ordering_configs | object | External Ordering Configurations specific to the Partner. |
| gh_plus | boolean | Is this a GH Plus order. |
| gh_plus_diner | boolean | Is the diner a GH Plus member. |
| external_order_id | string | |
| chain_id | string | |
| order_merchant_id | string | 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. |
JSON Schema
{
"$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.<br /><br />ANTICIPATED: denotes a future order, which may be cancelled by diner.<br />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.<br />DINER_CONFIRMABLE: a status held for future use.<br />CONFIRMED: denotes that the order was received by restaurant, even if the restaurant is unable to fulfill it.<br />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.<br />CANCELLED: a cancellation request by the diner or restaurant has been processed by Grubhub Customer Care.<br />PICKUP_READY: indicates that the food is prepared and ready for pickup by the diner or a Grubhub delivery courier.<br />OUT_FOR_DELIVERY: the food is on the way to the diner.<br />FULFILLED: denotes that the food has been delivered to or picked up by the diner.<br />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 co
# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/grubhub/refs/heads/main/json-schema/grubhub-posorder-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/grubhub-posorder"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.