{ "$schema": "https://json-structure.org/meta/core/v0/#", "$id": "https://raw.githubusercontent.com/api-evangelist/toast-tab/refs/heads/main/json-structure/menus-catalog-product-structure.json", "name": "CatalogProduct", "description": "Retail catalog product information for a menu item.\n", "type": "object", "properties": { "id": { "type": "uuid", "description": "The unique identifier of the retail product in the retail product catalog. This is different from the menu item identifier.\n", "example": "5a401af8-d2e2-4090-8c45-9f87b8b6c4d1" }, "name": { "type": "string", "description": "The name of the product, for example, \"T-Shirt\".\n", "example": "Example Name" }, "description": { "type": "string", "description": "The description of the product.\n", "x-nullable": true, "example": "string" }, "type": { "type": "string", "enum": [ "SINGLE", "OPTION", "UNSPECIFIED" ], "description": "The type of product. Possible values include:\n\n* `SINGLE`: The product has exactly one variant and does not have any options.\n* `OPTION`: The product is an option-type product and will contain at least one variant and at least one option.\n* `UNSPECIFIED`: Product type is not specified or unknown.\n", "example": "SINGLE" }, "images": { "type": "array", "description": "List of image URLs for the product. A product can have different images than its variants.\n", "items": { "type": "string" } }, "availableOptions": { "type": "array", "description": "List of available options for the product.\n", "items": { "$ref": "#/$defs/CatalogProductOption" } } }, "definitions": { "CatalogProductOption": { "type": "object", "description": "An option for a retail product.\n", "properties": { "id": { "type": "uuid", "description": "The unique identifier for the product option.\n", "example": "5a401af8-d2e2-4090-8c45-9f87b8b6c4d1" }, "name": { "type": "string", "description": "The name of the product option, for example, \"size\".\n", "example": "Example Name" }, "sortOrder": { "type": "int32", "description": "The sort order of the product option.\n", "example": 1 }, "values": { "type": "array", "description": "List of values for the product option.\n", "items": { "$ref": "#/$defs/CatalogProductOptionValue" } } }, "name": "CatalogProductOption" }, "CatalogProductOptionValue": { "type": "object", "description": "A value within a catalog product option.\n", "properties": { "id": { "type": "uuid", "description": "The unique identifier for the product option value.\n", "example": "5a401af8-d2e2-4090-8c45-9f87b8b6c4d1" }, "name": { "type": "string", "description": "The name of the product option value, for example, \"small\".\n", "example": "Example Name" }, "sortOrder": { "type": "int32", "description": "The sort order of the product option value.\n", "example": 1 } }, "name": "CatalogProductOptionValue" } } }