Grubhub · Schema
MenuMerchantStatus
The current state or result of a menu ingestion job. Each status will be communicated with both a standardized status string and a human-readable description.
Food DeliveryRestaurantMarketplaceOnline OrderingPoint-of-SaleLogisticsLast Mile DeliveryMenu ManagementHospitalityLocal CommerceDelivery
Properties
| Name | Type | Description |
|---|---|---|
| merchant_id | string | The partner resource ID of the merchant whose specific menu ingestion job this status applies to. |
| status | string | Represents the current state of the menu ingestion job.
|
| menu_proof_url | string | The proof URL to view the ingested menu on the front-end. This is only returned when the menu ingestion is successful. |
| details | array | A list where each element is a human-readable description of the status of this job or the problem encountered, if any. For example: ["Control details: jobId is ...", "Other details"], ["Error message |
| media_processing_status | string | Status reflecting the state of the media uploads. |
| media_validation_error_list | array | A List of any media validation errors that occurred during ingestion. |
| tax_category_validation_errors | array | List of tax category validation errors on supplied menu. |
| weighted_items_validation_errors | string | String of comma-delimited items that were marked as invalid weighted items. Will not be ingested. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/grubhub/main/json-schema/grubhub-menumerchantstatus-schema.json",
"title": "MenuMerchantStatus",
"x-generated": "2026-09-17",
"x-method": "derived",
"x-source": "openapi/grubhub-menu-openapi.yml#/components/schemas/MenuMerchantStatus",
"required": [
"merchant_id",
"status"
],
"type": "object",
"properties": {
"merchant_id": {
"type": "string",
"description": "The partner resource ID of the merchant whose specific menu ingestion job this status applies to."
},
"status": {
"type": "string",
"description": "Represents the current state of the menu ingestion job.<ul><li>`REQUESTED` - The ingestion process has been received, but it has not begun processing. Replaces `QUEUED`, but that status is not deprecated.</li><li>`QUEUED` - Waiting to process.</li><li>`IN_PROGRESS` - Job is in progress, possibly in retry cycle.</li><li>`SUCCESS` - Menu successfully updated.</li><li>`PARTIAL_SUCCESS` - Some portion of the menu has updated successfully, but not all.</li><li>`FAILED` - Menu could not be updated.</li><li>`FAILED_MENU_DOWNLOAD` - Menu request payload/URL could not be downloaded.</li><li>`FAILED_VALIDATION` - Menu request payload/URL could not be validated.</li><li>`UNKNOWN` - The ingestion process is in an unknown state. Contact support.</li></ul>",
"enum": [
"REQUESTED",
"QUEUED",
"IN_PROGRESS",
"SUCCESS",
"PARTIAL_SUCCESS",
"FAILED",
"FAILED_MENU_DOWNLOAD",
"FAILED_VALIDATION",
"UNKNOWN"
]
},
"menu_proof_url": {
"type": "string",
"description": "The proof URL to view the ingested menu on the front-end. This is only returned when the menu ingestion is successful."
},
"details": {
"type": "array",
"description": "A list where each element is a human-readable description of the status of this job or the problem encountered, if any. For example: [\"Control details: jobId is ...\", \"Other details\"], [\"Error message\"] ",
"items": {
"type": "string",
"description": "A list where each element is a human-readable description of the status of this job or the problem encountered, if any. For example: [\"Control details: jobId is ...\", \"Other details\"], [\"Error message\"] "
}
},
"media_processing_status": {
"type": "string",
"description": "Status reflecting the state of the media uploads."
},
"media_validation_error_list": {
"type": "array",
"description": "A List of any media validation errors that occurred during ingestion.",
"items": {
"$ref": "#/$defs/MediaValidationErrorDTO"
}
},
"tax_category_validation_errors": {
"type": "array",
"description": "List of tax category validation errors on supplied menu.",
"items": {
"$ref": "#/$defs/InvalidCodeAndEntityIds"
}
},
"weighted_items_validation_errors": {
"type": "string",
"description": "String of comma-delimited items that were marked as invalid weighted items. Will not be ingested."
}
},
"description": "The current state or result of a menu ingestion job. Each status will be communicated with both a standardized status string and a human-readable description.",
"$defs": {
"InvalidCodeAndEntityIds": {
"required": [
"code",
"entity_ids"
],
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "The invalid tax category code found in the menu."
},
"entity_ids": {
"uniqueItems": true,
"type": "array",
"description": "Set of entity ids with the invalid code above.",
"items": {
"type": "string",
"description": "Set of entity ids with the invalid code above."
}
},
"errror_message": {
"type": "string",
"description": "The error message includes more details."
}
},
"description": "A tax category validation error found on supplied menu"
},
"MediaValidationErrorDTO": {
"type": "object",
"properties": {
"media_validation_error_message": {
"type": "string",
"description": "The message including error details.",
"example": "Precondition Failed : User request invalid, could not upload media."
},
"entity_id": {
"type": "string",
"description": "The entity id of the item with media validation error.",
"example": "123452933468"
},
"external_id": {
"type": "string",
"description": "The external id of the item with media validation error.",
"example": "ededebf898ebd89ebd9e8bd9b3"
},
"url": {
"type": "string",
"description": "The url of the invalid media.",
"example": "https://mediahost.example/bacon.jpg"
},
"menu_item_name": {
"type": "string",
"description": "The name of the item with media validation error.",
"example": "Bacon"
}
},
"description": "A media validation error that occurred during ingestion."
}
}
}
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-menumerchantstatus"
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.