84 lines
2.4 KiB
Plaintext
84 lines
2.4 KiB
Plaintext
|
{
|
||
|
"$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" ]
|
||
|
}
|