# Models specifications ## Recipe ### 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 ### 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... ### dateModified- `DateTime` The most recent modification date ### datePublished `DateTime` The date the first time the recipe appeared online ### dicussionUrl schema.org value for microdata & JSON-LD linking to the comments section of the recipe ### licence `String` URL of the licence used for the recipe or a string such as "Public domain" ### thumbnailUrl schema.org value for microdata & JSON-LD linking to the thumbnail image of the recipe ### version Unless there is a versioning system for the recipe there's no point to this ### description `Text` The context of the recipe : history, source, ideas to serve it, personal notes, etc.. ### image `String (255)` URL of the image ### mainEntityOfPage ? ### name `String (255)` The name of the recipe ### url schema.org value for microdata & JSON-LD linking to the url of the recipe, given by the framework's router ### likesCount `Integer` Calculated from the likes in the database ### difficulty The degree of difficulty from a list to define