{ "$schema": "https://json-structure.org/meta/core/v0/#", "$id": "https://raw.githubusercontent.com/api-evangelist/grubhub/refs/heads/main/json-structure/grubhub-merchant-structure.json", "name": "Grubhub Merchant", "description": "A merchant on the Grubhub platform with store details, fulfillment settings, schedules, and operational status.", "type": "object", "properties": { "merchant_id": { "type": "string", "description": "The Grubhub internal merchant identifier." }, "external_id": { "type": "string", "description": "The partner's external merchant identifier." }, "name": { "type": "string", "description": "The merchant's display name." }, "status": { "type": "string", "description": "The current online/offline status of the merchant on Grubhub.", "enum": [ "ONLINE", "OFFLINE" ] }, "pause_type": { "type": [ "string", "null" ], "description": "The type of pause applied when merchant is offline. A soft pause is for the remainder of the business day; a hard pause is for multiple days.", "enum": [ "SOFT", "HARD", null ] }, "address": { "$ref": "#/$defs/Address" }, "phone": { "type": "string", "description": "The merchant's phone number." }, "tax_rate": { "type": "double", "description": "The merchant's applicable tax rate as a decimal.", "minimum": 0, "maximum": 1 }, "fulfillment_types": { "type": "array", "description": "Supported fulfillment types for this merchant.", "items": { "type": "string", "enum": [ "DELIVERY", "PICKUP", "CATERING" ] } }, "fulfillment_settings": { "$ref": "#/$defs/FulfillmentSettings" }, "cuisine_types": { "type": "array", "description": "Types of cuisine offered by the merchant.", "items": { "type": "string" } } }, "required": [ "merchant_id", "name" ], "definitions": { "Address": { "type": "object", "description": "A physical address for the merchant location.", "properties": { "street_address": { "type": "string", "description": "The street address line." }, "city": { "type": "string", "description": "The city name." }, "state": { "type": "string", "description": "The state abbreviation.", "maxLength": 2 }, "zip": { "type": "string", "description": "The ZIP code.", "pattern": "^\\d{5}(-\\d{4})?$" }, "latitude": { "type": "double", "description": "The latitude coordinate." }, "longitude": { "type": "double", "description": "The longitude coordinate." } }, "name": "Address" }, "FulfillmentSettings": { "type": "object", "description": "Fulfillment configuration for a merchant.", "properties": { "delivery_enabled": { "type": "boolean", "description": "Whether delivery is enabled." }, "pickup_enabled": { "type": "boolean", "description": "Whether pickup is enabled." }, "catering_enabled": { "type": "boolean", "description": "Whether catering is enabled." }, "estimated_prep_time_minutes": { "type": "int32", "description": "Estimated preparation time in minutes.", "minimum": 0 }, "delivery_radius_miles": { "type": "double", "description": "The delivery radius in miles.", "minimum": 0 }, "minimum_order_amount": { "type": "double", "description": "The minimum order amount for delivery.", "minimum": 0 } }, "name": "FulfillmentSettings" } } }