{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://vapesafer.info/schema/flavoring-v1.json", "title": "Ingredient", "description": "Flavoring used for mixing e-liquid", "type": "object", "properties": { "flavoringKey": { "description": "Unique flavoring ID", "type": "string" }, "brandKey": { "description": "Unique key for flavor brand", "type": "string" }, "flavoringName": { "description": "The name of the flavoring", "type": "string" }, "brandName": { "description": "The name of the brand", "type": "string" }, "flavoringVariant": { "description": "The version of the flavoring if more than one variant with the same name", "type": "string" }, "attributes": { "type": "object", "properties": { "specificGravity": { "description": "The apparent specific gravity in g/mL", "type": "number" }, "suggestedPercent": { "description": "Suggested initial percent to use when mixing", "type": "number" }, "suggestedSteep": { "description": "Suggested number of days this flavoring need to steep", "type": "integer" }, "base": { "description": "The base used to carry this flavoring, like PG100", "type": "string" }, "isAdditive": { "description": "If true the flavoring is primarily an additive and not a flavor", "type": "boolean" }, "isRetired": { "description": "True if the flavoring has been retired or is no longer available", "type": "boolean" } } }, "flavorProfiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ingredients": { "description": "The ingredients that make up this ingredient", "type": "array", "items": { "type": [ "string", "object" ], "properties": { "class": { "type":"string" }, "ingredient": { "type":"string" }, "percent": { "type": [ "number", "object" ], "properties": { "min": { "type":"number" }, "max": { "type":"number" } } }, "isNotable": { "type": "boolean" }, "cas": { "type": "string" }, "warnings": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "notes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } } }, "uniqueItems": true }, "warnings": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "notes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "required": [ "flavoringKey", "brandKey", "flavoringName" ] }