# Models specifications ## Recipe ### Entity properties #### estimatedTime `Array` of different estimated times : cookTime, prepTime, performTime, totalTime, waitTime cookTime - https://schema.org/Duration - The time it takes to actually cook the dish prepTime - https://schema.org/Duration - The length of time it takes to prepare the items to be used in instructions or a direction performTime - https://schema.org/Duration - The length of time it takes to perform instructions or a direction (not including time to prepare the supplies) totalTime - https://schema.org/Duration - The total time required to perform instructions or a direction (including time to prepare the supplies) waitTime - https://schema.org/Duration - The total time needed to wait between steps, in ISO 8601 duration format - waitTime is not in the schema : https://github.com/schemaorg/schemaorg/issues/2164 #### cookingMethod → Maybe just not use it, or analyse the text to excerpt it The method of cooking, such as Frying, Steaming,... Maybe have a checklist of methods ? #### recipeCategory `String (255)` The category of the recipe—for example, appetizer, entree, etc. #### recipeCuisine `String (255)` The cuisine of the recipe (for example, French or Ethiopian). #### recipeIngredient `String[]` List of ingredients in text format A single ingredient used in the recipe, e.g. sugar, flour or garlic. #### recipeInstructions `String[]` A step in making the recipe, in the form of a single item (document, video, etc.) or an ordered list with HowToStep and/or HowToSection items. The number of the step should never be the text. #### recipeYield `String (50)` The quantity produced by the recipe (for example, number of people served, number of servings, etc). #### suitableForDiet `Array` of selected keywords (DiabeticDiet, GlutenFreeDiet, HalalDiet, HinduDiet, KosherDiet, LowCalorieDiet, LowFatDiet, LowLactoseDiet, LowSaltDiet, VeganDiet, VegetarianDiet) Indicates a dietary restriction or guideline for which this recipe or menu item is suitable, e.g. diabetic, halal etc. TODO : Decide the best way to store the list... maybe in the model --- #### tool `String[]` A sub property of instrument. An object used (but not consumed) when performing instructions or a direction. #### author `ManyToOne:User` The author, a user Microdata, JSON-LD : Person with name, url (profile) and image. #### comment `OneToMany:Note` A list of Note received from the fediverse TODO : define a comment #### commentCount `Integer` A property to be shown in microdata/json-ld but in the model #### dateModified- `DateTime` The most recent modification date #### datePublished `DateTime` The date the first time the recipe appeared online #### licence `String` URL of the licence used for the recipe or a string such as "Public domain" #### description `Text` The context of the recipe : history, source, ideas to serve it, personal notes, etc.. #### image `String (255)` URL of the image #### name `String (255)` The name of the recipe #### likesCount `Integer` Calculated from the likes in the database #### difficulty The degree of difficulty from a list to define #### contributor Maybe add this later. One of the future features is to let someone edit his own version of a recipe. The original author can know about it, accept the changes and add the contributor to the list. But maybe it's too much... #### version Unless there is a versioning system for the recipe there's no point to this ### Properties limited the microdata usage #### url schema.org value for microdata & JSON-LD linking to the url of the recipe, given by the framework's router #### thumbnailUrl schema.org value for microdata & JSON-LD linking to the thumbnail image of the recipe #### dicussionUrl schema.org value for microdata & JSON-LD linking to the comments section of the recipe