{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://schema.org/schemas/how-to.json", "title": "Schema.org HowTo", "description": "Instructions that explain how to achieve a result by performing a sequence of steps.", "type": "object", "required": ["@type", "name", "step"], "properties": { "@type": { "type": "string", "description": "The Schema.org type.", "enum": ["HowTo", "Recipe"] }, "@context": { "type": "string", "default": "https://schema.org" }, "name": { "type": "string", "description": "The name of the how-to guide." }, "description": { "type": "string", "description": "A description of the how-to guide." }, "url": { "type": "string", "format": "uri", "description": "URL of the how-to guide." }, "image": { "oneOf": [ { "type": "string", "format": "uri" }, { "$ref": "schema-org-image-object-schema.json" } ], "description": "An image of the completed how-to." }, "totalTime": { "type": "string", "description": "The total time required to perform all steps in ISO 8601 duration format." }, "prepTime": { "type": "string", "description": "The length of time it takes to prepare the items in ISO 8601 duration format." }, "performTime": { "type": "string", "description": "The length of time it takes to perform instructions in ISO 8601 duration format." }, "estimatedCost": { "type": "object", "description": "The estimated cost of the supply or supplies consumed when performing instructions.", "properties": { "@type": { "type": "string", "const": "MonetaryAmount" }, "currency": { "type": "string" }, "value": { "type": "number" } } }, "supply": { "oneOf": [ { "$ref": "#/$defs/HowToSupply" }, { "type": "array", "items": { "$ref": "#/$defs/HowToSupply" } } ], "description": "A sub-property of instrument. A supply consumed when performing instructions or a direction." }, "tool": { "oneOf": [ { "$ref": "#/$defs/HowToTool" }, { "type": "array", "items": { "$ref": "#/$defs/HowToTool" } } ], "description": "A sub-property of instrument. An object used (but not consumed) when performing instructions." }, "step": { "type": "array", "description": "The steps in the how-to.", "items": { "$ref": "#/$defs/HowToStep" } }, "yield": { "type": "string", "description": "The quantity that results by performing instructions." }, "author": { "oneOf": [ { "$ref": "schema-org-person-schema.json" }, { "$ref": "schema-org-organization-schema.json" } ], "description": "The author of this how-to guide." }, "datePublished": { "type": "string", "format": "date", "description": "Date of first publication." }, "video": { "$ref": "schema-org-video-object-schema.json", "description": "A video of the how-to." }, "sameAs": { "oneOf": [ { "type": "string", "format": "uri" }, { "type": "array", "items": { "type": "string", "format": "uri" } } ], "description": "URL of a reference Web page that unambiguously indicates the item's identity." } }, "$defs": { "HowToStep": { "type": "object", "description": "A step in the instructions for how to achieve a result.", "properties": { "@type": { "type": "string", "const": "HowToStep" }, "name": { "type": "string", "description": "The name of the step." }, "text": { "type": "string", "description": "The text directions for the step." }, "url": { "type": "string", "format": "uri", "description": "A URL linking to the step." }, "image": { "oneOf": [{ "type": "string", "format": "uri" }, { "$ref": "schema-org-image-object-schema.json" }], "description": "An image for the step." }, "position": { "type": "integer", "description": "The position of the step." }, "itemListElement": { "type": "array", "items": { "type": "object", "properties": { "@type": { "const": "HowToDirection" }, "text": { "type": "string" } } }, "description": "Detailed elements of this step." } } }, "HowToSupply": { "type": "object", "description": "A supply consumed when performing instructions.", "properties": { "@type": { "type": "string", "const": "HowToSupply" }, "name": { "type": "string", "description": "The name of the supply." }, "requiredQuantity": { "type": "number", "description": "The required quantity." }, "image": { "type": "string", "format": "uri", "description": "An image of the supply." }, "estimatedCost": { "type": "object", "properties": { "@type": { "const": "MonetaryAmount" }, "currency": { "type": "string" }, "value": { "type": "number" } } } } }, "HowToTool": { "type": "object", "description": "A tool used (but not consumed) when performing instructions.", "properties": { "@type": { "type": "string", "const": "HowToTool" }, "name": { "type": "string", "description": "The name of the tool." }, "image": { "type": "string", "format": "uri", "description": "An image of the tool." } } } } }