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.
View JSON Schema on GitHub

JSON Schema

grubhub-posorder-schema.json Raw ↑
{
  "$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 &quot;merchant_total&quot; instead.",
          "format": "int32",
          "deprecated": true
        },
        "grand_total": {
          "type": "integer",
          "description": "Deprecated. Use &quot;merchant_total&quot; instead.",
          "format": "int32",
          "deprecated": true
        },
        "adjusted_grand_total": {
          "type": "integer",
          "description": "Deprecated. Use &quot;merchantTotal&quot; 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 &quot;merchant_price&quot; 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 &quot;merchant_total&quot; 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 &quot;merchant_price&quot; 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.
All 92 tools →

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.