openapi: 3.2.0 info: title: 'Mealie Recipe: CRUD API' description: ' Mealie is a web application for managing your recipes, meal plans, and shopping lists. This is the Restful API interactive documentation that can be used to explore the API. If you''re justing getting started with the API and want to get started quickly, you can use the [API Usage | Mealie Docs](https://docs.mealie.io/documentation/getting-started/api-usage/) as a reference for how to get started. If you have any questions or comments about mealie, please use the discord server to talk to the developers or other community members. If you''d like to file an issue, please use the [GitHub Issue Tracker | Mealie](https://github.com/mealie-recipes/mealie/issues/new/choose) ## Helpful Links - [Home Page](https://mealie.io) - [Documentation](https://docs.mealie.io) - [Discord](https://discord.gg/QuStdQGSGK) - [Demo](https://demo.mealie.io) ' version: nightly tags: - name: 'Recipe: CRUD' paths: /api/recipes/test-scrape-url: post: tags: - 'Recipe: CRUD' summary: Test Parse Recipe Url operationId: test_parse_recipe_url_api_recipes_test_scrape_url_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScrapeRecipeTest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/create/html-or-json: post: tags: - 'Recipe: CRUD' summary: Create Recipe From Html Or Json description: Takes in raw HTML or a https://schema.org/Recipe object as a JSON string and parses it like a URL operationId: create_recipe_from_html_or_json_api_recipes_create_html_or_json_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScrapeRecipeData' responses: '201': description: Successful Response content: application/json: schema: type: string title: Response Create Recipe From Html Or Json Api Recipes Create Html Or Json Post '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/create/html-or-json/stream: post: tags: - 'Recipe: CRUD' summary: Create Recipe From Html Or Json Stream description: 'Takes in raw HTML or a https://schema.org/Recipe object as a JSON string and parses it like a URL, streaming progress via SSE' operationId: create_recipe_from_html_or_json_stream_api_recipes_create_html_or_json_stream_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScrapeRecipeData' responses: '200': description: Successful Response content: text/event-stream: itemSchema: type: object properties: data: type: string event: type: string id: type: string retry: type: integer minimum: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/create/url: post: tags: - 'Recipe: CRUD' summary: Parse Recipe Url description: Takes in a URL and attempts to scrape data and load it into the database operationId: parse_recipe_url_api_recipes_create_url_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScrapeRecipe' responses: '201': description: Successful Response content: application/json: schema: type: string title: Response Parse Recipe Url Api Recipes Create Url Post '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/create/url/stream: post: tags: - 'Recipe: CRUD' summary: Parse Recipe Url Stream description: 'Takes in a URL and attempts to scrape data and load it into the database, streaming progress via SSE' operationId: parse_recipe_url_stream_api_recipes_create_url_stream_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScrapeRecipe' responses: '200': description: Successful Response content: text/event-stream: itemSchema: type: object properties: data: type: string event: type: string id: type: string retry: type: integer minimum: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/create/ai: post: tags: - 'Recipe: CRUD' summary: Create Recipe With Ai description: 'Create a recipe from any combination of content (HTML, JSON, or text), images, and a URL, using AI. Optionally specify a language for it to translate the recipe to.' operationId: create_recipe_with_ai_api_recipes_create_ai_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/Body_create_recipe_with_ai_api_recipes_create_ai_post' responses: '201': description: Successful Response content: application/json: schema: type: string title: Response Create Recipe With Ai Api Recipes Create Ai Post '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/create/ai/stream: post: tags: - 'Recipe: CRUD' summary: Create Recipe With Ai Stream description: 'Create a recipe from any combination of content (HTML, JSON, or text), images, and a URL, using AI, streaming progress via SSE' operationId: create_recipe_with_ai_stream_api_recipes_create_ai_stream_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/Body_create_recipe_with_ai_stream_api_recipes_create_ai_stream_post' responses: '200': description: Successful Response content: text/event-stream: itemSchema: type: object properties: data: type: string event: type: string id: type: string retry: type: integer minimum: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/create/url/bulk: post: tags: - 'Recipe: CRUD' summary: Parse Recipe Url Bulk description: Takes in a URL and attempts to scrape data and load it into the database operationId: parse_recipe_url_bulk_api_recipes_create_url_bulk_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateRecipeByUrlBulk' responses: '202': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/create/zip: post: tags: - 'Recipe: CRUD' summary: Create Recipe From Zip description: Create recipe from archive operationId: create_recipe_from_zip_api_recipes_create_zip_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/Body_create_recipe_from_zip_api_recipes_create_zip_post' responses: '201': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes: get: tags: - 'Recipe: CRUD' summary: Get All operationId: get_all_api_recipes_get security: - OAuth2PasswordBearer: [] parameters: - name: categories in: query required: false schema: anyOf: - type: array items: anyOf: - type: string format: uuid4 - type: string - type: 'null' title: Categories - name: tags in: query required: false schema: anyOf: - type: array items: anyOf: - type: string format: uuid4 - type: string - type: 'null' title: Tags - name: tools in: query required: false schema: anyOf: - type: array items: anyOf: - type: string format: uuid4 - type: string - type: 'null' title: Tools - name: foods in: query required: false schema: anyOf: - type: array items: anyOf: - type: string format: uuid4 - type: string - type: 'null' title: Foods - name: households in: query required: false schema: anyOf: - type: array items: anyOf: - type: string format: uuid4 - type: string - type: 'null' title: Households - name: orderBy in: query required: false schema: anyOf: - type: string - type: 'null' title: Orderby - name: orderByNullPosition in: query required: false schema: anyOf: - $ref: '#/components/schemas/OrderByNullPosition' - type: 'null' title: Orderbynullposition - name: orderDirection in: query required: false schema: $ref: '#/components/schemas/OrderDirection' default: desc - name: queryFilter in: query required: false schema: anyOf: - type: string - type: 'null' title: Queryfilter - name: paginationSeed in: query required: false schema: anyOf: - type: string - type: 'null' title: Paginationseed - name: page in: query required: false schema: type: integer default: 1 title: Page - name: perPage in: query required: false schema: type: integer default: 50 title: Perpage - name: cookbook in: query required: false schema: anyOf: - type: string format: uuid4 - type: string - type: 'null' title: Cookbook - name: requireAllCategories in: query required: false schema: type: boolean default: false title: Requireallcategories - name: requireAllTags in: query required: false schema: type: boolean default: false title: Requirealltags - name: requireAllTools in: query required: false schema: type: boolean default: false title: Requirealltools - name: requireAllFoods in: query required: false schema: type: boolean default: false title: Requireallfoods - name: search in: query required: false schema: anyOf: - type: string - type: 'null' title: Search - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PaginationBase_RecipeSummary_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - 'Recipe: CRUD' summary: Create One description: Takes in a JSON string and loads data into the database as a new entry operationId: create_one_api_recipes_post security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateRecipe' responses: '201': description: Successful Response content: application/json: schema: type: string title: Response Create One Api Recipes Post '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - 'Recipe: CRUD' summary: Update Many operationId: update_many_api_recipes_put security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: type: array items: $ref: '#/components/schemas/Recipe-Input' title: Data responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - 'Recipe: CRUD' summary: Patch Many operationId: patch_many_api_recipes_patch security: - OAuth2PasswordBearer: [] parameters: - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: type: array items: $ref: '#/components/schemas/Recipe-Input' title: Data responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/suggestions: get: tags: - 'Recipe: CRUD' summary: Suggest Recipes operationId: suggest_recipes_api_recipes_suggestions_get security: - OAuth2PasswordBearer: [] parameters: - name: foods in: query required: false schema: anyOf: - type: array items: type: string format: uuid4 - type: 'null' title: Foods - name: tools in: query required: false schema: anyOf: - type: array items: type: string format: uuid4 - type: 'null' title: Tools - name: orderBy in: query required: false schema: anyOf: - type: string - type: 'null' title: Orderby - name: orderByNullPosition in: query required: false schema: anyOf: - $ref: '#/components/schemas/OrderByNullPosition' - type: 'null' title: Orderbynullposition - name: orderDirection in: query required: false schema: $ref: '#/components/schemas/OrderDirection' default: desc - name: queryFilter in: query required: false schema: anyOf: - type: string - type: 'null' title: Queryfilter - name: paginationSeed in: query required: false schema: anyOf: - type: string - type: 'null' title: Paginationseed - name: limit in: query required: false schema: type: integer default: 10 title: Limit - name: maxMissingFoods in: query required: false schema: type: integer default: 5 title: Maxmissingfoods - name: maxMissingTools in: query required: false schema: type: integer default: 5 title: Maxmissingtools - name: includeFoodsOnHand in: query required: false schema: type: boolean default: true title: Includefoodsonhand - name: includeToolsOnHand in: query required: false schema: type: boolean default: true title: Includetoolsonhand - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RecipeSuggestionResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/{slug}: get: tags: - 'Recipe: CRUD' summary: Get One description: Takes in a recipe's slug or id and returns all data for a recipe operationId: get_one_api_recipes__slug__get security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string description: A recipe's slug or id title: Slug description: A recipe's slug or id - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Recipe-Output' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - 'Recipe: CRUD' summary: Update One description: Updates a recipe by existing slug and data. operationId: update_one_api_recipes__slug__put security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string title: Slug - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Recipe-Input' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - 'Recipe: CRUD' summary: Patch One description: Updates a recipe by existing slug and data. operationId: patch_one_api_recipes__slug__patch security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string title: Slug - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Recipe-Input' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - 'Recipe: CRUD' summary: Delete One description: Deletes a recipe by slug operationId: delete_one_api_recipes__slug__delete security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string title: Slug - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/{slug}/duplicate: post: tags: - 'Recipe: CRUD' summary: Duplicate One description: Duplicates a recipe with a new custom name if given operationId: duplicate_one_api_recipes__slug__duplicate_post security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string title: Slug - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecipeDuplicate' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Recipe-Output' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/{slug}/last-made: patch: tags: - 'Recipe: CRUD' summary: Update Last Made description: Update a recipe's last made timestamp operationId: update_last_made_api_recipes__slug__last_made_patch security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string title: Slug - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecipeLastMade' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/{slug}/image: post: tags: - 'Recipe: CRUD' summary: Scrape Image Url operationId: scrape_image_url_api_recipes__slug__image_post security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string title: Slug - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScrapeRecipe' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UpdateImageResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - 'Recipe: CRUD' summary: Update Recipe Image operationId: update_recipe_image_api_recipes__slug__image_put security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string title: Slug - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/Body_update_recipe_image_api_recipes__slug__image_put' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UpdateImageResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - 'Recipe: CRUD' summary: Delete Recipe Image operationId: delete_recipe_image_api_recipes__slug__image_delete security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string title: Slug - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/recipes/{slug}/assets: post: tags: - 'Recipe: CRUD' summary: Upload Recipe Asset description: Upload a file to store as a recipe asset operationId: upload_recipe_asset_api_recipes__slug__assets_post security: - OAuth2PasswordBearer: [] parameters: - name: slug in: path required: true schema: type: string title: Slug - name: accept-language in: header required: false schema: anyOf: - type: string - type: 'null' title: Accept-Language requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/Body_upload_recipe_asset_api_recipes__slug__assets_post' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RecipeAsset' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: CreateIngredientFoodAlias: properties: name: type: string title: Name type: object required: - name title: CreateIngredientFoodAlias IngredientUnit-Input: properties: id: type: string format: uuid4 title: Id name: type: string title: Name pluralName: anyOf: - type: string - type: 'null' title: Pluralname description: type: string title: Description default: '' extras: anyOf: - additionalProperties: true type: object - type: 'null' title: Extras default: {} fraction: type: boolean title: Fraction default: true abbreviation: type: string title: Abbreviation default: '' pluralAbbreviation: anyOf: - type: string - type: 'null' title: Pluralabbreviation default: '' useAbbreviation: type: boolean title: Useabbreviation default: false aliases: items: $ref: '#/components/schemas/IngredientUnitAlias' type: array title: Aliases default: [] standardQuantity: anyOf: - type: number - type: 'null' title: Standardquantity standardUnit: anyOf: - type: string - type: 'null' title: Standardunit createdAt: anyOf: - type: string format: date-time - type: 'null' title: Createdat update_at: anyOf: - type: string format: date-time - type: 'null' title: Update At type: object required: - id - name title: IngredientUnit PaginationBase_RecipeSummary_: properties: page: type: integer title: Page default: 1 per_page: type: integer title: Per Page default: 10 total: type: integer title: Total default: 0 total_pages: type: integer title: Total Pages default: 0 items: items: $ref: '#/components/schemas/RecipeSummary' type: array title: Items next: anyOf: - type: string - type: 'null' title: Next previous: anyOf: - type: string - type: 'null' title: Previous type: object required: - items title: PaginationBase[RecipeSummary] Body_create_recipe_with_ai_stream_api_recipes_create_ai_stream_post: properties: content: anyOf: - type: string - type: 'null' title: Content url: anyOf: - type: string - type: 'null' title: Url translateLanguage: anyOf: - type: string - type: 'null' title: Translatelanguage createNewOrganizers: type: boolean title: Createneworganizers default: false images: items: type: string contentMediaType: application/octet-stream type: array title: Images type: object title: Body_create_recipe_with_ai_stream_api_recipes_create_ai_stream_post MultiPurposeLabelSummary: properties: name: type: string title: Name color: type: string title: Color default: '#959595' groupId: type: string format: uuid4 title: Groupid id: type: string format: uuid4 title: Id type: object required: - name - groupId - id title: MultiPurposeLabelSummary Body_create_recipe_with_ai_api_recipes_create_ai_post: properties: content: anyOf: - type: string - type: 'null' title: Content url: anyOf: - type: string - type: 'null' title: Url translateLanguage: anyOf: - type: string - type: 'null' title: Translatelanguage createNewOrganizers: type: boolean title: Createneworganizers default: false images: items: type: string contentMediaType: application/octet-stream type: array title: Images type: object title: Body_create_recipe_with_ai_api_recipes_create_ai_post Body_update_recipe_image_api_recipes__slug__image_put: properties: image: type: string contentMediaType: application/octet-stream title: Image extension: type: string title: Extension type: object required: - image - extension title: Body_update_recipe_image_api_recipes__slug__image_put RecipeTool: properties: id: type: string format: uuid4 title: Id groupId: anyOf: - type: string format: uuid4 - type: 'null' title: Groupid name: type: string title: Name slug: type: string title: Slug recipeCount: type: integer title: Recipecount default: 0 householdsWithTool: items: type: string type: array title: Householdswithtool default: [] type: object required: - id - name - slug title: RecipeTool CreateRecipe: properties: name: type: string title: Name type: object required: - name title: CreateRecipe Recipe-Output: properties: id: anyOf: - type: string format: uuid4 - type: 'null' title: Id userId: type: string format: uuid4 title: Userid householdId: type: string format: uuid4 title: Householdid groupId: type: string format: uuid4 title: Groupid name: anyOf: - type: string - type: 'null' title: Name slug: type: string title: Slug default: '' image: anyOf: - {} - type: 'null' title: Image recipeServings: type: number title: Recipeservings default: 0 recipeYieldQuantity: type: number title: Recipeyieldquantity default: 0 recipeYield: anyOf: - type: string - type: 'null' title: Recipeyield totalTime: anyOf: - type: string - type: 'null' title: Totaltime prepTime: anyOf: - type: string - type: 'null' title: Preptime cookTime: anyOf: - type: string - type: 'null' title: Cooktime performTime: anyOf: - type: string - type: 'null' title: Performtime description: anyOf: - type: string - type: 'null' title: Description default: '' recipeCategory: anyOf: - items: $ref: '#/components/schemas/RecipeCategory' type: array - type: 'null' title: Recipecategory default: [] tags: anyOf: - items: $ref: '#/components/schemas/RecipeTag' type: array - type: 'null' title: Tags default: [] tools: items: $ref: '#/components/schemas/RecipeTool' type: array title: Tools default: [] rating: anyOf: - type: number - type: 'null' title: Rating orgURL: anyOf: - type: string - type: 'null' title: Orgurl dateAdded: anyOf: - type: string format: date - type: 'null' title: Dateadded dateUpdated: anyOf: - type: string format: date-time - type: 'null' title: Dateupdated createdAt: anyOf: - type: string format: date-time - type: 'null' title: Createdat updatedAt: anyOf: - type: string format: date-time - type: 'null' title: Updatedat lastMade: anyOf: - type: string format: date-time - type: 'null' title: Lastmade recipeIngredient: items: $ref: '#/components/schemas/RecipeIngredient-Output' type: array title: Recipeingredient default: [] recipeInstructions: anyOf: - items: $ref: '#/components/schemas/RecipeStep' type: array - type: 'null' title: Recipeinstructions default: [] nutrition: anyOf: - $ref: '#/components/schemas/Nutrition' - type: 'null' settings: anyOf: - $ref: '#/components/schemas/RecipeSettings' - type: 'null' assets: anyOf: - items: $ref: '#/components/schemas/RecipeAsset' type: array - type: 'null' title: Assets default: [] notes: anyOf: - items: $ref: '#/components/schemas/RecipeNote' type: array - type: 'null' title: Notes default: [] extras: anyOf: - additionalProperties: true type: object - type: 'null' title: Extras default: {} comments: anyOf: - items: $ref: '#/components/schemas/RecipeCommentOut-Output' type: array - type: 'null' title: Comments default: [] type: object title: Recipe CreateRecipeBulk: properties: url: type: string title: Url categories: anyOf: - items: $ref: '#/components/schemas/RecipeCategory' type: array - type: 'null' title: Categories tags: anyOf: - items: $ref: '#/components/schemas/RecipeTag' type: array - type: 'null' title: Tags type: object required: - url title: CreateRecipeBulk IngredientFood-Output: properties: id: type: string format: uuid4 title: Id name: type: string title: Name pluralName: anyOf: - type: string - type: 'null' title: Pluralname description: type: string title: Description default: '' extras: anyOf: - additionalProperties: true type: object - type: 'null' title: Extras default: {} labelId: anyOf: - type: string format: uuid4 - type: 'null' title: Labelid aliases: items: $ref: '#/components/schemas/IngredientFoodAlias' type: array title: Aliases default: [] householdsWithIngredientFood: items: type: string type: array title: Householdswithingredientfood default: [] label: anyOf: - $ref: '#/components/schemas/MultiPurposeLabelSummary' - type: 'null' createdAt: anyOf: - type: string format: date-time - type: 'null' title: Createdat updatedAt: anyOf: - type: string format: date-time - type: 'null' title: Updatedat type: object required: - id - name title: IngredientFood IngredientReferences: properties: referenceId: anyOf: - type: string format: uuid4 - type: 'null' title: Referenceid type: object title: IngredientReferences description: A list of ingredient references. RecipeCommentOut-Input: properties: recipeId: type: string format: uuid4 title: Recipeid text: type: string title: Text id: type: string format: uuid4 title: Id createdAt: type: string format: date-time title: Createdat update_at: type: string format: date-time title: Update At userId: type: string format: uuid4 title: Userid user: $ref: '#/components/schemas/mealie__schema__recipe__recipe_comments__UserBase' type: object required: - recipeId - text - id - createdAt - update_at - userId - user title: RecipeCommentOut ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError Body_upload_recipe_asset_api_recipes__slug__assets_post: properties: name: type: string title: Name icon: type: string title: Icon extension: type: string title: Extension file: type: string contentMediaType: application/octet-stream title: File type: object required: - name - icon - extension - file title: Body_upload_recipe_asset_api_recipes__slug__assets_post RecipeIngredient-Input: properties: quantity: anyOf: - type: number - type: 'null' title: Quantity default: 0 unit: anyOf: - $ref: '#/components/schemas/IngredientUnit-Input' - $ref: '#/components/schemas/CreateIngredientUnit' - type: 'null' title: Unit food: anyOf: - $ref: '#/components/schemas/IngredientFood-Input' - $ref: '#/components/schemas/CreateIngredientFood' - type: 'null' title: Food referencedRecipe: anyOf: - $ref: '#/components/schemas/Recipe-Input' - type: 'null' note: anyOf: - type: string - type: 'null' title: Note default: '' display: type: string title: Display default: '' title: anyOf: - type: string - type: 'null' title: Title originalText: anyOf: - type: string - type: 'null' title: Originaltext referenceId: type: string format: uuid title: Referenceid type: object title: RecipeIngredient CreateIngredientFood: properties: id: anyOf: - type: string format: uuid4 - type: 'null' title: Id name: type: string title: Name pluralName: anyOf: - type: string - type: 'null' title: Pluralname description: type: string title: Description default: '' extras: anyOf: - additionalProperties: true type: object - type: 'null' title: Extras default: {} labelId: anyOf: - type: string format: uuid4 - type: 'null' title: Labelid aliases: items: $ref: '#/components/schemas/CreateIngredientFoodAlias' type: array title: Aliases default: [] householdsWithIngredientFood: items: type: string type: array title: Householdswithingredientfood default: [] type: object required: - name title: CreateIngredientFood Body_create_recipe_from_zip_api_recipes_create_zip_post: properties: archive: type: string contentMediaType: application/octet-stream title: Archive type: object required: - archive title: Body_create_recipe_from_zip_api_recipes_create_zip_post IngredientFoodAlias: properties: name: type: string title: Name type: object required: - name title: IngredientFoodAlias ScrapeRecipe: properties: includeTags: type: boolean title: Includetags default: false includeCategories: type: boolean title: Includecategories default: false url: type: string title: Url type: object required: - url title: ScrapeRecipe example: includeCategories: true includeTags: true url: https://myfavoriterecipes.com/recipes Recipe-Input: properties: id: anyOf: - type: string format: uuid4 - type: 'null' title: Id userId: type: string format: uuid4 title: Userid householdId: type: string format: uuid4 title: Householdid groupId: type: string format: uuid4 title: Groupid name: anyOf: - type: string - type: 'null' title: Name slug: type: string title: Slug default: '' image: anyOf: - {} - type: 'null' title: Image recipeServings: type: number title: Recipeservings default: 0 recipeYieldQuantity: type: number title: Recipeyieldquantity default: 0 recipeYield: anyOf: - type: string - type: 'null' title: Recipeyield totalTime: anyOf: - type: string - type: 'null' title: Totaltime prepTime: anyOf: - type: string - type: 'null' title: Preptime cookTime: anyOf: - type: string - type: 'null' title: Cooktime performTime: anyOf: - type: string - type: 'null' title: Performtime description: anyOf: - type: string - type: 'null' title: Description default: '' recipeCategory: anyOf: - items: $ref: '#/components/schemas/RecipeCategory' type: array - type: 'null' title: Recipecategory default: [] tags: anyOf: - items: $ref: '#/components/schemas/RecipeTag' type: array - type: 'null' title: Tags default: [] tools: items: $ref: '#/components/schemas/RecipeTool' type: array title: Tools default: [] rating: anyOf: - type: number - type: 'null' title: Rating orgURL: anyOf: - type: string - type: 'null' title: Orgurl dateAdded: anyOf: - type: string format: date - type: 'null' title: Dateadded dateUpdated: anyOf: - type: string format: date-time - type: 'null' title: Dateupdated createdAt: anyOf: - type: string format: date-time - type: 'null' title: Createdat update_at: anyOf: - type: string format: date-time - type: 'null' title: Update At lastMade: anyOf: - type: string format: date-time - type: 'null' title: Lastmade recipeIngredient: items: $ref: '#/components/schemas/RecipeIngredient-Input' type: array title: Recipeingredient default: [] recipeInstructions: anyOf: - items: $ref: '#/components/schemas/RecipeStep' type: array - type: 'null' title: Recipeinstructions default: [] nutrition: anyOf: - $ref: '#/components/schemas/Nutrition' - type: 'null' settings: anyOf: - $ref: '#/components/schemas/RecipeSettings' - type: 'null' assets: anyOf: - items: $ref: '#/components/schemas/RecipeAsset' type: array - type: 'null' title: Assets default: [] notes: anyOf: - items: $ref: '#/components/schemas/RecipeNote' type: array - type: 'null' title: Notes default: [] extras: anyOf: - additionalProperties: true type: object - type: 'null' title: Extras default: {} comments: anyOf: - items: $ref: '#/components/schemas/RecipeCommentOut-Input' type: array - type: 'null' title: Comments default: [] type: object title: Recipe RecipeLastMade: properties: timestamp: type: string format: date-time title: Timestamp type: object required: - timestamp title: RecipeLastMade RecipeCommentOut-Output: properties: recipeId: type: string format: uuid4 title: Recipeid text: type: string title: Text id: type: string format: uuid4 title: Id createdAt: type: string format: date-time title: Createdat updatedAt: type: string format: date-time title: Updatedat userId: type: string format: uuid4 title: Userid user: $ref: '#/components/schemas/UserBase-Output' type: object required: - recipeId - text - id - createdAt - updatedAt - userId - user title: RecipeCommentOut IngredientUnit-Output: properties: id: type: string format: uuid4 title: Id name: type: string title: Name pluralName: anyOf: - type: string - type: 'null' title: Pluralname description: type: string title: Description default: '' extras: anyOf: - additionalProperties: true type: object - type: 'null' title: Extras default: {} fraction: type: boolean title: Fraction default: true abbreviation: type: string title: Abbreviation default: '' pluralAbbreviation: anyOf: - type: string - type: 'null' title: Pluralabbreviation default: '' useAbbreviation: type: boolean title: Useabbreviation default: false aliases: items: $ref: '#/components/schemas/IngredientUnitAlias' type: array title: Aliases default: [] standardQuantity: anyOf: - type: number - type: 'null' title: Standardquantity standardUnit: anyOf: - type: string - type: 'null' title: Standardunit createdAt: anyOf: - type: string format: date-time - type: 'null' title: Createdat updatedAt: anyOf: - type: string format: date-time - type: 'null' title: Updatedat type: object required: - id - name title: IngredientUnit UpdateImageResponse: properties: image: type: string title: Image type: object required: - image title: UpdateImageResponse RecipeAsset: properties: name: type: string title: Name icon: type: string title: Icon fileName: anyOf: - type: string - type: 'null' title: Filename type: object required: - name - icon title: RecipeAsset mealie__schema__recipe__recipe_comments__UserBase: properties: id: type: string format: uuid4 title: Id username: anyOf: - type: string - type: 'null' title: Username admin: type: boolean title: Admin fullName: anyOf: - type: string - type: 'null' title: Fullname type: object required: - id - admin title: UserBase RecipeSuggestionResponse: properties: items: items: $ref: '#/components/schemas/RecipeSuggestionResponseItem' type: array title: Items type: object required: - items title: RecipeSuggestionResponse RecipeTag: properties: id: anyOf: - type: string format: uuid4 - type: 'null' title: Id groupId: anyOf: - type: string format: uuid4 - type: 'null' title: Groupid name: type: string title: Name slug: type: string title: Slug recipeCount: type: integer title: Recipecount default: 0 type: object required: - name - slug title: RecipeTag RecipeSettings: properties: public: type: boolean title: Public default: false showNutrition: type: boolean title: Shownutrition default: false showAssets: type: boolean title: Showassets default: false landscapeView: type: boolean title: Landscapeview default: false disableComments: type: boolean title: Disablecomments default: true locked: type: boolean title: Locked default: false type: object title: RecipeSettings ScrapeRecipeTest: properties: url: type: string title: Url useOpenAI: type: boolean title: Useopenai default: false type: object required: - url title: ScrapeRecipeTest CreateIngredientUnitAlias: properties: name: type: string title: Name type: object required: - name title: CreateIngredientUnitAlias IngredientFood-Input: properties: id: type: string format: uuid4 title: Id name: type: string title: Name pluralName: anyOf: - type: string - type: 'null' title: Pluralname description: type: string title: Description default: '' extras: anyOf: - additionalProperties: true type: object - type: 'null' title: Extras default: {} labelId: anyOf: - type: string format: uuid4 - type: 'null' title: Labelid aliases: items: $ref: '#/components/schemas/IngredientFoodAlias' type: array title: Aliases default: [] householdsWithIngredientFood: items: type: string type: array title: Householdswithingredientfood default: [] label: anyOf: - $ref: '#/components/schemas/MultiPurposeLabelSummary' - type: 'null' createdAt: anyOf: - type: string format: date-time - type: 'null' title: Createdat update_at: anyOf: - type: string format: date-time - type: 'null' title: Update At type: object required: - id - name title: IngredientFood ScrapeRecipeData: properties: includeTags: type: boolean title: Includetags default: false includeCategories: type: boolean title: Includecategories default: false data: type: string title: Data url: anyOf: - type: string - type: 'null' title: Url type: object required: - data title: ScrapeRecipeData CreateIngredientUnit: properties: id: anyOf: - type: string format: uuid4 - type: 'null' title: Id name: type: string title: Name pluralName: anyOf: - type: string - type: 'null' title: Pluralname description: type: string title: Description default: '' extras: anyOf: - additionalProperties: true type: object - type: 'null' title: Extras default: {} fraction: type: boolean title: Fraction default: true abbreviation: type: string title: Abbreviation default: '' pluralAbbreviation: anyOf: - type: string - type: 'null' title: Pluralabbreviation default: '' useAbbreviation: type: boolean title: Useabbreviation default: false aliases: items: $ref: '#/components/schemas/CreateIngredientUnitAlias' type: array title: Aliases default: [] standardQuantity: anyOf: - type: number - type: 'null' title: Standardquantity standardUnit: anyOf: - type: string - type: 'null' title: Standardunit type: object required: - name title: CreateIngredientUnit IngredientUnitAlias: properties: name: type: string title: Name type: object required: - name title: IngredientUnitAlias RecipeNote: properties: title: type: string title: Title text: type: string title: Text type: object required: - title - text title: RecipeNote Nutrition: properties: calories: anyOf: - type: string - type: 'null' title: Calories carbohydrateContent: anyOf: - type: string - type: 'null' title: Carbohydratecontent cholesterolContent: anyOf: - type: string - type: 'null' title: Cholesterolcontent fatContent: anyOf: - type: string - type: 'null' title: Fatcontent fiberContent: anyOf: - type: string - type: 'null' title: Fibercontent proteinContent: anyOf: - type: string - type: 'null' title: Proteincontent saturatedFatContent: anyOf: - type: string - type: 'null' title: Saturatedfatcontent sodiumContent: anyOf: - type: string - type: 'null' title: Sodiumcontent sugarContent: anyOf: - type: string - type: 'null' title: Sugarcontent transFatContent: anyOf: - type: string - type: 'null' title: Transfatcontent unsaturatedFatContent: anyOf: - type: string - type: 'null' title: Unsaturatedfatcontent type: object title: Nutrition RecipeIngredient-Output: properties: quantity: anyOf: - type: number - type: 'null' title: Quantity default: 0 unit: anyOf: - $ref: '#/components/schemas/IngredientUnit-Output' - $ref: '#/components/schemas/CreateIngredientUnit' - type: 'null' title: Unit food: anyOf: - $ref: '#/components/schemas/IngredientFood-Output' - $ref: '#/components/schemas/CreateIngredientFood' - type: 'null' title: Food referencedRecipe: anyOf: - $ref: '#/components/schemas/Recipe-Output' - type: 'null' note: anyOf: - type: string - type: 'null' title: Note default: '' display: type: string title: Display default: '' title: anyOf: - type: string - type: 'null' title: Title originalText: anyOf: - type: string - type: 'null' title: Originaltext referenceId: type: string format: uuid title: Referenceid type: object title: RecipeIngredient RecipeSummary: properties: id: anyOf: - type: string format: uuid4 - type: 'null' title: Id userId: type: string format: uuid4 title: Userid householdId: type: string format: uuid4 title: Householdid groupId: type: string format: uuid4 title: Groupid name: anyOf: - type: string - type: 'null' title: Name slug: type: string title: Slug default: '' image: anyOf: - {} - type: 'null' title: Image recipeServings: type: number title: Recipeservings default: 0 recipeYieldQuantity: type: number title: Recipeyieldquantity default: 0 recipeYield: anyOf: - type: string - type: 'null' title: Recipeyield totalTime: anyOf: - type: string - type: 'null' title: Totaltime prepTime: anyOf: - type: string - type: 'null' title: Preptime cookTime: anyOf: - type: string - type: 'null' title: Cooktime performTime: anyOf: - type: string - type: 'null' title: Performtime description: anyOf: - type: string - type: 'null' title: Description default: '' recipeCategory: anyOf: - items: $ref: '#/components/schemas/RecipeCategory' type: array - type: 'null' title: Recipecategory default: [] tags: anyOf: - items: $ref: '#/components/schemas/RecipeTag' type: array - type: 'null' title: Tags default: [] tools: items: $ref: '#/components/schemas/RecipeTool' type: array title: Tools default: [] rating: anyOf: - type: number - type: 'null' title: Rating orgURL: anyOf: - type: string - type: 'null' title: Orgurl dateAdded: anyOf: - type: string format: date - type: 'null' title: Dateadded dateUpdated: anyOf: - type: string format: date-time - type: 'null' title: Dateupdated createdAt: anyOf: - type: string format: date-time - type: 'null' title: Createdat updatedAt: anyOf: - type: string format: date-time - type: 'null' title: Updatedat lastMade: anyOf: - type: string format: date-time - type: 'null' title: Lastmade type: object title: RecipeSummary RecipeDuplicate: properties: name: anyOf: - type: string - type: 'null' title: Name type: object title: RecipeDuplicate HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError OrderDirection: type: string enum: - asc - desc title: OrderDirection RecipeCategory: properties: id: anyOf: - type: string format: uuid4 - type: 'null' title: Id groupId: anyOf: - type: string format: uuid4 - type: 'null' title: Groupid name: type: string title: Name slug: type: string title: Slug recipeCount: type: integer title: Recipecount default: 0 type: object required: - name - slug title: RecipeCategory RecipeSuggestionResponseItem: properties: recipe: $ref: '#/components/schemas/RecipeSummary' missingFoods: items: $ref: '#/components/schemas/IngredientFood-Output' type: array title: Missingfoods missingTools: items: $ref: '#/components/schemas/RecipeTool' type: array title: Missingtools type: object required: - recipe - missingFoods - missingTools title: RecipeSuggestionResponseItem UserBase-Output: properties: id: type: string format: uuid4 title: Id username: anyOf: - type: string - type: 'null' title: Username admin: type: boolean title: Admin fullName: anyOf: - type: string - type: 'null' title: Fullname type: object required: - id - admin title: UserBase OrderByNullPosition: type: string enum: - first - last title: OrderByNullPosition RecipeStep: properties: id: anyOf: - type: string format: uuid - type: 'null' title: Id title: anyOf: - type: string - type: 'null' title: Title default: '' summary: anyOf: - type: string - type: 'null' title: Summary default: '' text: type: string title: Text ingredientReferences: items: $ref: '#/components/schemas/IngredientReferences' type: array title: Ingredientreferences default: [] type: object required: - text title: RecipeStep CreateRecipeByUrlBulk: properties: imports: items: $ref: '#/components/schemas/CreateRecipeBulk' type: array title: Imports type: object required: - imports title: CreateRecipeByUrlBulk securitySchemes: OAuth2PasswordBearer: type: oauth2 flows: password: scopes: {} tokenUrl: /api/auth/token