Schemas

Queries

Balancer

Balancer

The balancer splits your ingredients into taste sections.


Fields:

BalancerSection

Fields:

  • counterTastes [ Taste ]

    Keywords that describe what kind of ingredients balance out the taste of this section.

  • selected [ Ingredient ]

  • suggested [ Ingredient ]

  • taste Taste

Blueprint

Blueprint for a recipe.

When ingredients are passed to a blueprint, it generates instructions. Instruction is a simple text, returned together with ingredients it should be applied to and an icon.

The blueprint inside consists of steps. Each step is either a simple text that is directly turned into an instruction, or a method that can generate multiple instructions.


In query use name: blueprints


Fields:

  • id ID

  • availableLanguages [ Language ]

  • created DateTime

  • dishes (tagsAnd, tagsOr, isOwn, pagination, djangoFilter, ids, search, id) [ Dish ]

  • instructions (ingredients) [ Instruction ]

    Pass a list of ingredient ids to get a set of instructions.

  • modified DateTime

  • name String

    Name for internal use.

  • originalLanguage Language

  • ownerName String

    Filter only objects that belong to this owner

  • steps (tagsAnd, tagsOr, isOwn, pagination, djangoFilter, ids, id, text, evaluationOrder) [ Step ]

  • tagAsValue (tag, field) TagValue

  • tags (shared, isOwn, pagination, djangoFilter, id, name, category) [ Tag ]

  • tagsAsBoolean (tags, mode) Boolean


Arguments:

  • id ID

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • name String

    Name in the active language.

  • tagsAnd [ ID ]

    Filter objects that have all these Tags

  • tagsOr [ ID ]

    Filter objects that have any of these Tags

Dish

Dish as a general genre.

A dish connects blueprint, ratio and ingredient blacklist to enable creating recipes that fall into a specific category.

Stew makes for a good example. There are only small differences between Hungarian gulash, Indian daal and Russian Borscht. Instruction to make these three dishes are the same, so they use the same blueprint. Gulash and daal are heavy on spices, so these will have a slightly different Ratio. All three of them have to be limited to their regional ingredients and that’s what the Dish itself supplies, as well as an image and other meta information.


In query use name: dishes


Fields:

  • id ID

  • adaptableToTags (category) [ Tag ]

  • blueprint Blueprint

  • components (tagsAnd, tagsOr, isOwn, djangoFilter, id, dish, mandatory) [ DishComponent ]

  • created DateTime

  • description (forceField) MultilingualValue

  • estimatedPreparationTime Int

    Rough estimate of how long does this dish take to cook, including prep and waiting time.

  • featuredRecipeUri String

  • image Image

  • ingredientBlacklist [ Ingredient ]

    Ingredients not compatible with this dish.

  • ingredientMasks [ IngredientMask ]

    Masks that are applied to ingredient match scores.

  • mandatoryIngredients (targetIngredient, contextIngredients) [ Ingredient ]

    Mandatory ingredients based on components.

  • modified DateTime

  • name (forceField) MultilingualValue

  • ownerName String

    Filter only objects that belong to this owner

  • productWhitelist (tagsAnd, tagsOr, searchName, isOwn, pagination, djangoFilter, ids, id, multilingualName, name, ean, brand) [ Product ]

  • ratio Ratio

  • recipeNote (forceField) MultilingualValue

  • recipeUri (ingredients, products) String

  • searchScore Float

  • serving Serving

  • substitutableIngredients (ingredients) [ Ingredient ]

    For a list of ingredients return those that are substitutable in the context of this dish.

  • substituteIngredient (targetIngredient, contextIngredients) [ Ingredient ]

    Suggest a substitution for a <target_ingredient>.

  • substitutionOverrides (isOwn, id, dish) [ SubstitutionOverride ]

  • suggestedIngredients (contextIngredients, mode, adaptToTags) [ Ingredient ]

    Suggest a list of matching ingredients to <context_ingredients>.

  • tagAsValue (tag, field) TagValue

  • tags (shared, isOwn, pagination, djangoFilter, id, name, category) [ Tag ]

  • tagsAsBoolean (tags, mode) Boolean


Arguments:

  • id ID

  • djangoFilter DjangoFilterInput

    This enables a direct connection to the PostgreSQL database through Django lookups (i.e.: id__in=[1,2,3]).

    The lookup string to have the format key1=lookup1&key2=lookup2, where keys will be evaluated as a string and lookups as Python literals. Multiple lookups chain in and AND relationship. Allowing for inputting a list or a set of values.

    Ordering is done using the order_by field. Enter the order field in a snake_case and use - to reverse as in -order.

    More on lookups in the Django documentation.

  • ids [ ID ]

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • pagination PaginationInput

  • search DishSearchInput

    Finds dishes that best match the query. Ingredient and keyword search is evaluated separately and match score from each is combined with equal weight to produce the results.

    Keyword search does not support multilinguality and currently works with English only.

    ingredients finds dishes based on ingredients they are often associated with keywords finds dishes based on keywords that appear in the dish name or description

  • tagsAnd [ ID ]

    Filter objects that have all these Tags

  • tagsOr [ ID ]

    Filter objects that have any of these Tags

DishComponent

Necessary or recommended component of a dish.

Pizza necessarily needs a pizza dough. However, you can use any flat bread and it works. Pastry dough, butter dough or quiche dough turn out just fine for a pizza too.

Dish component defines one selection that might be necessary to be made when creating a recipe for this dish. Components with a default selection of ingredients can be safely skipped during the creation, but the components with min_count >= 0 and no default ingredients need to force a selection in order for the final recipe to work. Each component can be accompanied by a header or message to comment on the choice.


In query use name: dishComponents


Fields:

  • id ID

  • dish Dish

  • dishcomponentingredientthroughSet [ DishComponentIngredientThrough ]

  • header (forceField) MultilingualValue

  • image Image

  • ingredients (tagsAnd, tagsOr, searchName, isOwn, pagination, djangoFilter, ids, matchTo, id, modelName, name) [ Ingredient ]

  • isPublic Boolean

  • lifAcceptMinCountZero Boolean

    Historically, the behavior of LIF was to bump component’s min_count to 1 if it was 0. This flag allows to preserve this behavior (field is not checked) while also giving an option to keep the min_count at 0 during LIF evaluation (field is checked).

  • mandatory Boolean

  • maxCount Int

    Recommended maximum count of ingredients to select if the component is used to present the selection to an end-user.

  • message (forceField) MultilingualValue

  • minCount Int

    Minimum count of ingredients needed in a recipe to make it complete. The component is considered mandatory in a dish if min_count >= 1.

  • name (forceField) MultilingualValue

  • ordering Int

  • owner Client

  • ownerName String

    Filter only objects that belong to this owner

  • tagAsValue (tag, field) TagValue

  • tags (shared, isOwn, pagination, djangoFilter, id, name, category) [ Tag ]

  • tagsAsBoolean (tags, mode) Boolean


Arguments:

  • id ID

  • dish ID

  • djangoFilter DjangoFilterInput

    This enables a direct connection to the PostgreSQL database through Django lookups (i.e.: id__in=[1,2,3]).

    The lookup string to have the format key1=lookup1&key2=lookup2, where keys will be evaluated as a string and lookups as Python literals. Multiple lookups chain in and AND relationship. Allowing for inputting a list or a set of values.

    Ordering is done using the order_by field. Enter the order field in a snake_case and use - to reverse as in -order.

    More on lookups in the Django documentation.

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • mandatory Boolean

  • tagsAnd [ ID ]

    Filter objects that have all these Tags

  • tagsOr [ ID ]

    Filter objects that have any of these Tags

DishComponentIngredientThrough

Use this model to find default ingredients for given components.


In query use name: dishComponentIngredients


Fields:

  • id ID

  • component DishComponent

  • default Boolean

  • ingredient Ingredient

  • isPublic Boolean

  • owner Client

  • ownerName String

    Filter only objects that belong to this owner


Arguments:

  • isOwn Boolean

    If true filters only my objects, opposite if false.

Icon

Icon(id, owner, is_public, name, image)


In query use name: icons


Fields:

  • id ID

  • image String

  • ingredientSet [ Ingredient ]

  • isPublic Boolean

  • methodSet [ Method ]

  • name String

    Name for internal use.

  • owner Client

  • ownerName String

    Filter only objects that belong to this owner

  • productSet [ Product ]

  • stepSet [ Step ]

  • tagSet [ Tag ]

  • url String


Arguments:

  • id ID

  • djangoFilter DjangoFilterInput

    This enables a direct connection to the PostgreSQL database through Django lookups (i.e.: id__in=[1,2,3]).

    The lookup string to have the format key1=lookup1&key2=lookup2, where keys will be evaluated as a string and lookups as Python literals. Multiple lookups chain in and AND relationship. Allowing for inputting a list or a set of values.

    Ordering is done using the order_by field. Enter the order field in a snake_case and use - to reverse as in -order.

    More on lookups in the Django documentation.

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • name String

  • pagination PaginationInput

Image

Image(id, owner, is_public, name, image)


In query use name: images


Fields:

  • id ID

  • croppedUrl (rendition) String

    Cropped version (400x400 rendition by default)

  • image String

  • name String

    Name for internal use.

  • ownerName String

    Filter only objects that belong to this owner

  • thumbnailUrl (rendition) String

    Thumbnail version (20x20 rendition by default)

  • url String


Arguments:

  • id ID

  • djangoFilter DjangoFilterInput

    This enables a direct connection to the PostgreSQL database through Django lookups (i.e.: id__in=[1,2,3]).

    The lookup string to have the format key1=lookup1&key2=lookup2, where keys will be evaluated as a string and lookups as Python literals. Multiple lookups chain in and AND relationship. Allowing for inputting a list or a set of values.

    Ordering is done using the order_by field. Enter the order field in a snake_case and use - to reverse as in -order.

    More on lookups in the Django documentation.

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • name String

  • pagination PaginationInput

Ingredient

Ingredient.

model_name: identifier for the Neural Network name: translated field

Filters: tagsAnd [<tag id>]: filter ingredients that have ALL the tags tagsOr [<tag id>]: filter ingredients that have at least ONE of the tags matchTo [<ingredient id>]: adds a field match_score -how well does the ingredient fit the input ids similarTo <ingredient id>: adds a field similarity_score -how similar is an ingredient to the input


In query use name: ingredients


Fields:

  • id ID

  • created DateTime

  • icon Icon

  • matchScore Float

  • measure (isOwn) Measure

  • methodData (isOwn, id) [ MethodData ]

  • modified DateTime

  • name (forceField) MultilingualValue

  • ownerName String

    Filter only objects that belong to this owner

  • products (tagsAnd, tagsOr, searchName, isOwn, pagination, djangoFilter, ids, id, multilingualName, name, ean, brand) [ Product ]

  • similarityScore Float

  • substitutes (tagsAnd, tagsOr, searchName, isOwn, pagination, djangoFilter, ids, matchTo, id, modelName, name) [ Ingredient ]

  • tagAsValue (tag, field) TagValue

  • tags (shared, isOwn, pagination, djangoFilter, id, name, category) [ Tag ]

  • tagsAsBoolean (tags, mode) Boolean


Arguments:

  • id ID

  • djangoFilter DjangoFilterInput

    This enables a direct connection to the PostgreSQL database through Django lookups (i.e.: id__in=[1,2,3]).

    The lookup string to have the format key1=lookup1&key2=lookup2, where keys will be evaluated as a string and lookups as Python literals. Multiple lookups chain in and AND relationship. Allowing for inputting a list or a set of values.

    Ordering is done using the order_by field. Enter the order field in a snake_case and use - to reverse as in -order.

    More on lookups in the Django documentation.

  • ids [ ID ]

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • matchTo [ ID ]

    The Foodpairing Fiter.

    Pass ingredient ids as input to the matchTo filter. The filter will set a value matchScore for each ingredient that tells you how well does it match to the ingredients you pass in.

  • modelName String

  • name String

    name_value in the active language.

  • pagination PaginationInput

  • searchName String

    The fuzzy name filter.

    Pass name or a part of the name you’re searching for. First results are items that start with the search string, followed by trigram similar items and lastly items that merely contain the passed string.

  • tagsAnd [ ID ]

    Filter objects that have all these Tags

  • tagsOr [ ID ]

    Filter objects that have any of these Tags

IngredientMask

A mask can affect the result of suggested ingredients and substitutions.

Matching ingredients is fairly static, and only varies based on a given selection of ingredients. So for the most part, a potato’s good matches will stay the same. However, the context of how the potato is used can vary, and in those cases, you might want to nudge matches up or down. This is the job of the mask.

Masks can be combined, and can be applied through Meta.


In query use name: ingredientMasks


Fields:

  • id ID

  • created DateTime

  • description String

    Short description with the purpose of this mask

  • dishes (tagsAnd, tagsOr, isOwn, pagination, djangoFilter, ids, search, id) [ Dish ]

  • modified DateTime

  • name (forceField) MultilingualValue

  • nameInternal String

    Name for internal use.

  • ownerName String

    Filter only objects that belong to this owner

  • tagAsValue (tag, field) TagValue

  • tags (shared, isOwn, pagination, djangoFilter, id, name, category) [ Tag ]

  • tagsAsBoolean (tags, mode) Boolean

  • values [ MaskValue ]

  • weight Float

    weight that this mask should be multiplied with


Arguments:

  • id ID

  • ids [ ID ]

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • name String

  • searchName String

    The fuzzy name filter.

    Pass name or a part of the name you’re searching for. First results are items that start with the search string, followed by trigram similar items and lastly items that merely contain the passed string.

  • tagsAnd [ ID ]

    Filter objects that have all these Tags

  • tagsOr [ ID ]

    Filter objects that have any of these Tags

IngredientUnitRanges

An object that carries information about allowed units and their counts for a specific ingredient within a given Units System. For each feasible amount of an ingredient measured in grams to provides a corresponding unit and it’s count.


Fields:

  • ingredient Ingredient

  • unitRanges [ UnitRange ]

    For given ingredient measure computes possible units and their unit_counts within min-max limits and units system.

Instruction

Instruction.

An instruction for the recipe reader.

Each instrucion has text and icon to display and a list of ingredients that it applies to.

If an instruction has been generated by a special method, it also has access to its object.


Fields:

  • displayVolume Boolean

  • icon Icon

  • ingredients [ Ingredient ]

    Ingredients this instruction applies to.

  • method String

    Method that generated this instruction.

  • order Int

  • text String

  • volumeModifier Float

MaskValue

The value of a given ingredient in a mask.


In query use name: maskValues


Fields:

  • id ID

  • ingredient Ingredient

  • isPublic Boolean

  • mask IngredientMask

  • owner Client

  • ownerName String

    Filter only objects that belong to this owner

  • value Float

    Value of an ingredient’s influence on a given mask.


Arguments:

  • isOwn Boolean

    If true filters only my objects, opposite if false.

Measure

Measure is an unique object for each ingredient that carries information about volume convertions and allowed units. dry_weight_multiplier value represents how much does the weight increse after processing (boiling) the food.


In query use name: measures


Fields:

  • id ID

  • dryWeightMultiplier Float

    What is the ratio between i.e. dry beans and soaked beans?

  • gramsPerMl Float

    How many grams per 1 ml?

  • gramsPerPiece Float

    How many grams per piece?

  • ingredient Ingredient

  • isPublic Boolean

  • maxValue Float

    Maximal value per portion in grams

  • minValue Float

    Minimal value per portion in grams

  • owner Client

  • ownerName String

    Filter only objects that belong to this owner

  • units (isOwn) [ Unit ]


Arguments:

  • isOwn Boolean

    If true filters only my objects, opposite if false.

Method

Makes a blueprint step return 1 or more instructions based on Python code. Handles non-linearities in recipes such as different times of prepration for each ingredient.

Example: Roast method - splits ingredients into oils, aromas and other. Returns multiple steps that say in which order and at what time to add ingredients in the oven and to splash them with the selected oil.


In query use name: methods


Fields:

  • id ID

  • availableLanguages [ Language ]

  • created DateTime

  • definition String

  • icon Icon

  • instructions (ingredients) [ Instruction ]

    Pass a list of ingredient ids to get a set of instructions.

  • modified DateTime

  • name String

    Non-translated internal name.

  • originalLanguage Language

  • ownerName String

    Filter only objects that belong to this owner

  • tagAsValue (tag, field) TagValue

  • tags (shared, isOwn, pagination, djangoFilter, id, name, category) [ Tag ]

  • tagsAsBoolean (tags, mode) Boolean

  • time Int


Arguments:

  • id ID

  • definition String

    Pseudo-code definition of the method.

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • name String

    Name in the active language.

  • tagsAnd [ ID ]

    Filter objects that have all these Tags

  • tagsOr [ ID ]

    Filter objects that have any of these Tags

MethodData

Data for the methods.

A method might need information about each ingredient such as preparation time or temperature.

Each ingredient is connected to a single MethodData object that holds a ‘data’ dictionary of all the possible parameters.


In query use name: methodData


Fields:

  • id ID

  • created DateTime

  • data JSONString

  • modified DateTime

  • ownerName String

    Filter only objects that belong to this owner


Arguments:

  • id ID

  • isOwn Boolean

    If true filters only my objects, opposite if false.

MultilingualName

MultilingualName is represented by a CharField in the database. It is suitable for lookup and has a length of up to 80 characters.


In query use name: multilingualNames


Fields:

  • id ID

  • ar String

    Arabic

  • cs String

    Czech

  • da String

    Danish

  • de String

    Deutsch

  • deAt String

    German (Austria)

  • en String

    English

  • es String

    Spanish

  • es419 String

    Spanish (Latin America)

  • et String

    Estonian

  • fr String

    French

  • it String

    Italian

  • ja String

    Japanese

  • lt String

    Lithuanian

  • lv String

    Latvian

  • nl String

    Dutch

  • no String

    Norwegian

  • ownerName String

    Filter only objects that belong to this owner

  • pl String

    Polish

  • ptBr String

    Portuguese (Brazil)

  • sv String

    Swedish

  • zhHans String

    Mandarin Chinese (Simplified)


Arguments:

  • id ID

  • ar String

  • cs String

  • da String

  • de String

  • deAt String

  • en String

  • es String

  • es419 String

  • et String

  • fr String

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • it String

  • ja String

  • lt String

  • lv String

  • nl String

  • no String

  • pl String

  • ptBr String

  • sv String

  • zhHans String

MultilingualText

MultilingualText is represented by a TextField in the database. Holds longer sections of text and is not suitable for lookups.


In query use name: multilingualTexts


Fields:

  • id ID

  • ar String

    Arabic

  • cs String

    Czech

  • da String

    Danish

  • de String

    Deutsch

  • deAt String

    German (Austria)

  • en String

    English

  • es String

    Spanish

  • es419 String

    Spanish (Latin America)

  • et String

    Estonian

  • fr String

    French

  • it String

    Italian

  • ja String

    Japanese

  • lt String

    Lithuanian

  • lv String

    Latvian

  • nl String

    Dutch

  • no String

    Norwegian

  • ownerName String

    Filter only objects that belong to this owner

  • pl String

    Polish

  • ptBr String

    Portuguese (Brazil)

  • sv String

    Swedish

  • zhHans String

    Mandarin Chinese (Simplified)


Arguments:

  • id ID

  • ar String

  • cs String

  • da String

  • de String

  • deAt String

  • en String

  • es String

  • es419 String

  • et String

  • fr String

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • it String

  • ja String

  • lt String

  • lv String

  • nl String

  • no String

  • pl String

  • ptBr String

  • sv String

  • zhHans String

Product

Product.

A specific purchasable product, belongs to an ingredient.


In query use name: products


Fields:

  • id ID

  • brand String

  • country String

  • created DateTime

  • description String

  • ean String

    The EAN code.

  • icon Icon

  • image Image

  • ingredient Ingredient

  • isPublic Boolean

  • isValidated Boolean

    Flag confirming that product-ingredient mapping is accurate.

  • modified DateTime

  • multilingualDescription (forceField) MultilingualValue

  • multilingualName (forceField) MultilingualValue

  • name String

  • nutritionalValue Int

    In kilocalories

  • owner Client

  • ownerName String

    Filter only objects that belong to this owner

  • source ProductSource

    Data aquisition method.

  • substitutes (tagsAnd, tagsOr, searchName, isOwn, pagination, djangoFilter, ids, id, multilingualName, name, ean, brand) [ Product ]

  • tagAsValue (tag, field) TagValue

  • tags (shared, isOwn, pagination, djangoFilter, id, name, category) [ Tag ]

  • tagsAsBoolean (tags, mode) Boolean

  • unit Unit

  • weight Int

    In grams

  • whitelistedInDishes [ Dish ]


Arguments:

  • id ID

  • brand String

  • djangoFilter DjangoFilterInput

    This enables a direct connection to the PostgreSQL database through Django lookups (i.e.: id__in=[1,2,3]).

    The lookup string to have the format key1=lookup1&key2=lookup2, where keys will be evaluated as a string and lookups as Python literals. Multiple lookups chain in and AND relationship. Allowing for inputting a list or a set of values.

    Ordering is done using the order_by field. Enter the order field in a snake_case and use - to reverse as in -order.

    More on lookups in the Django documentation.

  • ean String

  • ids [ ID ]

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • multilingualName String

    name_value in the active language.

  • name String

    Name

  • pagination PaginationInput

  • searchName String

    The fuzzy name filter.

    Pass name or a part of the name you’re searching for. First results are items that start with the search string, followed by trigram similar items and lastly items that merely contain the passed string.

  • tagsAnd [ ID ]

    Filter objects that have all these Tags

  • tagsOr [ ID ]

    Filter objects that have any of these Tags

Ratio

Defines a ratio between ingredients.

Can be evaluated to obtain a specific Volume.

Each Dish points to a root Ratio. The root Ratio is static and defines the portion weight for the Dish. The total of ingredient volumes add up to this value. The volumes are then split between the root Ratio’s children Ratios based on Ratio.ratio.


In query use name: ratios


Fields:

  • id ID

  • children (isOwn, id, name) [ Ratio ]

  • created DateTime

  • ingredients (tagsAnd, tagsOr, searchName, isOwn, pagination, djangoFilter, ids, matchTo, id, modelName, name) [ Ingredient ]

  • modified DateTime

  • name String

    Name of the DishRatio component, for internal use.

  • ownerName String

    Filter only objects that belong to this owner

  • parent (isOwn, id, name) Ratio

  • ratio Int

    On the root ratio level this value defines the total weight.

  • static Boolean

    If checked, the ratio will not be interpreted as a ratio, but as a static weight in grams.

  • volumes (ingredients, weight, portions, unitSelection) [ Volume ]


Arguments:

  • id ID

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • name String

Recipe

An instance of a dish with a set of ingredients.

A generated recipe provides direct access to instructions, volumes and substitutions that are all specific to the combination of a particular dish and set of ingredients.


Fields:

  • availableTags (category) [ Tag ]

    Tags that are not currently applied to the recipe, but can be.

  • description String

  • dish Dish

  • estimatedPreparationTime Int

  • image Image

  • ingredients [ Ingredient ]

  • instructions (ingredients) [ Instruction ]

    Pass a list of ingredient ids to get a set of instructions.

  • name String

  • products [ Product ]

  • serving Serving

  • substitutions [ Substitution ]

    Available substitutions for this particular recipe.

  • tagAsValue (tag, field) TagValue

  • tags (category) [ Tag ]

    Tags that currently apply to the recipe.

  • tagsAsBoolean (tags, mode) Boolean

  • volumes (ingredients, weight, portions, unitSelection) [ Volume ]

Serving

Serving(id, owner, is_public, name, amount)


In query use name: servings


Fields:

  • id ID

  • amount Float

    Amount of <name> per serving. I.e. 6 <buns>.

  • dish Dish

  • isPublic Boolean

  • name (forceField) MultilingualValue

  • owner Client

  • ownerName String

    Filter only objects that belong to this owner


Arguments:

  • isOwn Boolean

    If true filters only my objects, opposite if false.

Step

Generates recipe instructions.

Multiple steps create blueprints. Given ingredients as input, the step can generate an instruction. If text is specified, the instruction will contain that text and ingredients that overlap between the input and the step’s ingredients. If a method is specified, both the text and ingredients returned will be generated by Python code in the method definition.

Fields:

evaluation_order: what order to evaluate the steps in (and exclude ingredients)

display_order: order of the instructions after evaluation

ingredients: what ingredients does the step apply to

method: alternative to text, see the Method type

text: Text to display. Can use placeholders: {ingredients} - display all ingredients {ids: 1,2} - display ingredients 1,2, exclude them from above {ingredients} {blueprint: 12} - evaluate as a blueprint {tag:oils} - ingredients with tag “oils” {tag:oils:components} - ingredients with tag oils from category components

condition: Evaluated as a Python literal casted to bool. If the condition is False, this step will be skipped.

display_volume:

volume_modifier:


In query use name: steps


Fields:

  • id ID

  • availableLanguages [ Language ]

  • blueprint (tagsAnd, tagsOr, isOwn, id, name) Blueprint

  • displayOrder Int

    Determines in what order are instructions going to be shown after evaluation.

  • displayVolume Boolean

  • evaluationOrder Int

    Determines in what order are the steps going to be evaluated.

  • excludeSteps (tagsAnd, tagsOr, isOwn, pagination, djangoFilter, ids, id, text, evaluationOrder) [ Step ]

  • formatText (ingredients, translate, language) String

    Pass a list of ingredient ids to replace placeholders with their names.

  • ingredients (tagsAnd, tagsOr, searchName, isOwn, pagination, djangoFilter, ids, matchTo, id, modelName, name) [ Ingredient ]

  • instructions (ingredients) [ Instruction ]

    Pass a list of ingredient ids to get a set of instructions.

  • method (tagsAnd, tagsOr, isOwn, id, name, definition) Method

  • ownerName String

    Filter only objects that belong to this owner

  • tagAsValue (tag, field) TagValue

  • tags (shared, isOwn, pagination, djangoFilter, id, name, category) [ Tag ]

  • tagsAsBoolean (tags, mode) Boolean

  • text String

  • volumeModifier Float


Arguments:

  • id ID

  • djangoFilter DjangoFilterInput

    This enables a direct connection to the PostgreSQL database through Django lookups (i.e.: id__in=[1,2,3]).

    The lookup string to have the format key1=lookup1&key2=lookup2, where keys will be evaluated as a string and lookups as Python literals. Multiple lookups chain in and AND relationship. Allowing for inputting a list or a set of values.

    Ordering is done using the order_by field. Enter the order field in a snake_case and use - to reverse as in -order.

    More on lookups in the Django documentation.

  • evaluationOrder Int

  • ids [ ID ]

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • pagination PaginationInput

  • tagsAnd [ ID ]

    Filter objects that have all these Tags

  • tagsOr [ ID ]

    Filter objects that have any of these Tags

  • text String

SubstitutionOverride

Force a substitution.

If you’re not happy with what the algorithm suggest as a substitute for an ingredient in your dish, you can override the algorithm by your own choice. Such an override is specific to a dish-ingredient-ingredient triplet. It does not matter what direction you place the ingredients (a/b), they will become mutual substitute both ways.


In query use name: substitutionOverrides


Fields:

  • id ID

  • dish Dish

  • ingredientA Ingredient

  • ingredientB Ingredient

  • isPublic Boolean

  • owner Client

  • ownerName String

    Filter only objects that belong to this owner


Arguments:

  • id ID

  • dish ID

  • isOwn Boolean

    If true filters only my objects, opposite if false.

Tag

Tags are custom labels available on certain models. Name and category are together a unique pair.


In query use name: tags


Fields:

  • id ID

  • blueprints (tagsAnd, tagsOr, isOwn, id, name) [ Blueprint ]

  • category String

    Category name for internal use.

  • created DateTime

  • description String

    Description for internal use

  • dishComponents (tagsAnd, tagsOr, isOwn, djangoFilter, id, dish, mandatory) [ DishComponent ]

  • dishes (tagsAnd, tagsOr, isOwn, pagination, djangoFilter, ids, search, id) [ Dish ]

  • floatValue Float

  • icon Icon

  • image Image

  • ingredients (tagsAnd, tagsOr, searchName, isOwn, pagination, djangoFilter, ids, matchTo, id, modelName, name) [ Ingredient ]

  • masks (tagsAnd, tagsOr, searchName, isOwn, ids, id, name) [ IngredientMask ]

  • methods (tagsAnd, tagsOr, isOwn, id, name, definition) [ Method ]

  • modified DateTime

  • multilingualName (forceField) MultilingualValue

  • multilingualText (forceField) MultilingualValue

  • name String

    Name for internal use.

  • ownerName String

    Filter only objects that belong to this owner

  • products (tagsAnd, tagsOr, searchName, isOwn, pagination, djangoFilter, ids, id, multilingualName, name, ean, brand) [ Product ]


Arguments:

  • id ID

  • category String

  • djangoFilter DjangoFilterInput

    This enables a direct connection to the PostgreSQL database through Django lookups (i.e.: id__in=[1,2,3]).

    The lookup string to have the format key1=lookup1&key2=lookup2, where keys will be evaluated as a string and lookups as Python literals. Multiple lookups chain in and AND relationship. Allowing for inputting a list or a set of values.

    Ordering is done using the order_by field. Enter the order field in a snake_case and use - to reverse as in -order.

    More on lookups in the Django documentation.

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • name String

  • pagination PaginationInput

  • shared SharedTagInput

Translation

MultilingualText is represented by a TextField in the database. Holds longer sections of text and is not suitable for lookups.


In query use name: translations


Fields:

  • id ID

  • ar String

    Arabic

  • cs String

    Czech

  • da String

    Danish

  • de String

    Deutsch

  • deAt String

    German (Austria)

  • en String

    English

  • es String

    Spanish

  • es419 String

    Spanish (Latin America)

  • et String

    Estonian

  • fr String

    French

  • it String

    Italian

  • ja String

    Japanese

  • lt String

    Lithuanian

  • lv String

    Latvian

  • nl String

    Dutch

  • no String

    Norwegian

  • ownerName String

    Filter only objects that belong to this owner

  • pl String

    Polish

  • ptBr String

    Portuguese (Brazil)

  • sv String

    Swedish

  • zhHans String

    Mandarin Chinese (Simplified)


Arguments:

  • id ID

  • ar String

  • cs String

  • da String

  • de String

  • deAt String

  • djangoFilter DjangoFilterInput

    This enables a direct connection to the PostgreSQL database through Django lookups (i.e.: id__in=[1,2,3]).

    The lookup string to have the format key1=lookup1&key2=lookup2, where keys will be evaluated as a string and lookups as Python literals. Multiple lookups chain in and AND relationship. Allowing for inputting a list or a set of values.

    Ordering is done using the order_by field. Enter the order field in a snake_case and use - to reverse as in -order.

    More on lookups in the Django documentation.

  • en String

  • es String

  • es419 String

  • et String

  • fr String

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • it String

  • ja String

  • lt String

  • lv String

  • nl String

  • no String

  • pagination PaginationInput

  • pl String

  • ptBr String

  • sv String

  • trigramSimilar String

    Similar Translation Filter. Returns existing translations that are similar to the input text.

  • zhHans String

Unit

Units are aggreated in units systems that provide relevant units for ingredients, i.e. metric.


In query use name: units


Fields:

  • id ID

  • Order Int

    Determines in what order are units selected.

  • basedOnGrams Boolean

    Is the unit based on grams.

  • increment Float

  • isPiece Boolean

    Is the unit a piece.

  • isPublic Boolean

  • measures [ Measure ]

  • name (forceField) MultilingualValue

  • nameInternal String

    Name for internal use.

  • ownerName String

    Filter only objects that belong to this owner

  • perPortion Float

    Grams/mls per one unit.

  • productSet [ Product ]

  • roundingMethod UnitRoundingMethod

  • system UnitsSystem

  • type UnitType


Arguments:

  • isOwn Boolean

    If true filters only my objects, opposite if false.

UnitCounter

Fields:

  • grams Int

  • unitCount Float

    An allowed unit value.

UnitRange

Fields:

UnitsSystem


In query use name: unitsSystems


Fields:

  • id ID

  • ingredientUnitRanges (ingredients, portions) [ IngredientUnitRanges ]

    For given ingredient measure computes possible units and their unit_counts within min-max limits and units system.

  • name (forceField) MultilingualValue

  • ownerName String

    Filter only objects that belong to this owner


Arguments:

  • id ID

  • isOwn Boolean

    If true filters only my objects, opposite if false.

  • name String

Volume

Volume of an ingredient to use in a recipe.

Every Volume is an object that allows to represent weight of an ingredient using the most appropriate Unit. Units are picked based on the weight and measurement system and amounts are converted to human-readable rounded format.


Fields:

Mutations

refreshToken

Arguments:

  • token String

tokenAuth

Obtain JSON Web Token mutation


Arguments:

  • email String

  • expirationDelta Int

    Token expiry time in seconds

  • password String

verifyToken

Arguments:

  • token String

Inputs

ComponentIngredientInput

Input fields:

  • default Boolean

    Should this ingredient be a default selection in this component?

  • ingredient ID

    Ingredient ID

ComponentIngredientListInput

Input fields:

DishSearchInput

Input fields:

  • ingredients [ ID ]

    Find dishes based on ingredients they are often associated with.

  • keywords String

    Find dishes based on keywords that appear in the dish name or description.

DjangoFilterInput

Input fields:

  • exclude String

    Django exclude expression. Excludes all objects fitting the filter. More info on lookups at docs.djangoproject.com/en/2.2/ref/models/querysets/#id4

  • filter String

    Django filter expression. Only returns objects fitting the filter. More info on lookups at docs.djangoproject.com/en/2.2/ref/models/querysets/#id4

  • orderBy String

    Single attribute or a tuple of attributes to sort the list by. Is evaluated as Python expression, so simple strings need double quotes. “’-example’”. matchTo automatically sorts by highest score, can be overriden, but score can’t be used for this field.

DualIngredientInput

Input fields:

  • ingredientA ID

    Ingredient ID

  • ingredientB ID

    Ingredient ID

IDListInput

Input fields:

IngredientRatioInput

An input type for defining a subratio.


Input fields:

  • ingredients [ ID ]

  • name String

  • ratio Int

  • static Boolean

    If True, volumes won’t be calculated as ratios but always have static amount defined in ratio field.

MaskValueInput

Input fields:

  • ingredient ID

    Ingredient ID

  • value Float

    How much influence should this ingredient have?

MaskValueListInput

Input fields:

PaginationInput

Input fields:

  • limitTo Int

    Limit the results to n.

  • offset Int

    Offset the results by n.

QueryMeta

End user meta information.

This context is common for the query execution.


Input fields:

  • diets [ Diet ]

    Setting diets will automatically filter out incompatible dishes and ingredients.

  • endUserToken String

  • language Language

  • masks [ ID ]

    Setting masks will automatically apply masks to ingredients match scores.

  • unitsSystem UnitsSystemEnum

SharedTagInput

Input fields:

SubstitutionListInput

Input fields:

UnitSelectionInput

Allows to preselect a specific unit for an inredient to calculate volumes.


Input fields:

  • ingredient ID

  • unit ID

Enums

AnyAllNoneEnum

Accepted values:

  • ALL

  • ANY

  • NONE

ClientLanguage

An enumeration.


Accepted values:

  • AR

    Arabic

  • CS

    Czech

  • DA

    Danish

  • DE

    Deutsch

  • DE_AT

    German (Austria)

  • EN

    English

  • ES

    Spanish

  • ES_419

    Spanish (Latin America)

  • ET

    Estonian

  • FR

    French

  • IT

    Italian

  • JA

    Japanese

  • LT

    Lithuanian

  • LV

    Latvian

  • NL

    Dutch

  • NO

    Norwegian

  • PL

    Polish

  • PT_BR

    Portuguese (Brazil)

  • SV

    Swedish

  • ZH_HANS

    Mandarin Chinese (Simplified)

Diet

Accepted values:

  • DIABETIC

    Removes ingredients high in sugar content.

  • EGGFREE

    Removes eggs and ingredients containing them.

  • FODMAPS

    Removes FODMAPS ingredients (containing significant amounts of Fermentable Oligo-, Di-, Mono-saccharides And Polyols).

  • GLUTENFREE

    Removes ingredients that contain gluten.

  • LACTOSEFREE

    Removes dairy products.

  • NOMEAT

    Removes meat, seafood and ingredients containing it.

  • NUTFREE

    Removes nuts.

  • VEGAN

    Removes all animal products.

Language

Accepted values:

  • ARABIC

  • CZECH

  • DANISH

  • DEUTSCH

  • DUTCH

  • ENGLISH

  • ESTONIAN

  • FRENCH

  • ITALIAN

  • JAPANESE

  • LATVIAN

  • LITHUANIAN

  • NORWEGIAN

  • POLISH

  • SPANISH

  • SWEDISH

  • ar

  • cs

  • da

  • de

  • de_AT

  • en

  • es

  • es_419

  • et

  • fr

  • it

  • ja

  • lt

  • lv

  • nl

  • no

  • pl

  • pt_BR

  • sv

  • zh_Hans

LanguageOrId

Accepted values:

  • ARABIC

  • CZECH

  • DANISH

  • DEUTSCH

  • DUTCH

  • ENGLISH

  • ESTONIAN

  • FRENCH

  • ID

  • ITALIAN

  • JAPANESE

  • LATVIAN

  • LITHUANIAN

  • NORWEGIAN

  • POLISH

  • SPANISH

  • SWEDISH

  • ar

  • cs

  • da

  • de

  • de_AT

  • en

  • es

  • es_419

  • et

  • fr

  • it

  • ja

  • lt

  • lv

  • nl

  • no

  • pl

  • pt_BR

  • sv

  • zh_Hans

ListActionEnum

Accepted values:

  • ADD

  • CLEAN

  • REMOVE

  • SET

ModelTypeEnum

Accepted values:

  • BLUEPRINT

  • DISH

  • DISHCOMPONENT

  • INGREDIENT

  • METHOD

  • PRODUCT

  • STEP

ProductSource

An enumeration.


Accepted values:

  • COOPSE_1

    Coop Sweden 1

  • MANUAL

    manual

RenditionEnum

Accepted values:

  • CROP_SQUARE_400

  • CROP_SQUARE_660

  • THUMBNAIL_20

  • THUMBNAIL_250

RoleEnum

Accepted values:

  • CLIENT_API

  • CLIENT_CMS

  • PJ_CMS

SuggestionModeEnum

Accepted values:

  • ALL

    Sends a complete list of ingredients that form a dish.

  • SINGLE

    Suggests a list of matching ingredients.

  • VARIATION_ALL

    Same as ALL, but adds random variations to the selection process.

TagFieldEnum

Accepted values:

  • FLOAT_VALUE

  • ICON

  • IMAGE

  • NAME

  • TEXT

Taste

Accepted values:

  • AROMA

  • BITTER

  • BLAND

  • OIL

  • SALTY

  • SOUR

  • SPICY

  • SWEET

  • UMAMI

UnitRoundingMethod

An enumeration.


Accepted values:

  • DF

    Differential round

  • ID

    No rounding

  • IN

    Round to integer

UnitType

An enumeration.


Accepted values:

  • CV

    Custom volume-based

  • CW

    Custom weight-based

  • GR

    Grams

  • ML

    Mls

  • PC

    Pieces

UnitsSystemEnum

Accepted values:

  • IMPERIAL

  • METRIC