{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://data.vapesafer.info/schema/recipe.schema.json", "title": "Recipe", "description": "An e-juice recipe", "type": "object", "properties": { "url": { "description": "Original recipe URL. Should be unique and canonical", "type": "string" }, "key": { "description": "Unique identifier for this recipe. Should be slug-like and have an appropriate author prefix", "type": "string" }, "recipeName": { "description": "The name of the recipe", "type": "string" }, "author": { "description": "The author of the recipe", "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "type": "string" }, "email": { "type": "string" }, "url": { "type": "string" } } } ] }, "license": { "description": "The license this recipe is published under", "type": "string" }, "recommendedSteep": { "description": "The recommended number of days to steep this recipe", "type": "integer" }, "type": { "description": "Recipe type, such as experiment or clone", "type": "string" }, "recipe": { "description": "Recipe ingredients", "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "vendor": { "type": "string" }, "flavor": { "type": "string" }, "percent": { "type": "number" }, "optional": { "type": "boolean" }, "subs": { "description": "Possible substitutes for this ingredient", "type": "array", "items": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "vendor": { "type": "string" }, "flavor": { "type": "string" }, "percent": { "type": "number" }, "note": { "type": "string" } } } } } }, "note": { "type": "string" } }, "required": [ "flavor", "percent" ] } }, "required": [ "recipeName", "recipe" ] }