{"files":{"SKILL.md":"---\nname: 1000000-recipe-and-grocery-list-api-v2\ndescription: \"1,000,000+ Recipe and Grocery List API (v2) API skill. Use when working with 1,000,000+ Recipe and Grocery List API (v2) for collection, collections, grocerylist. Covers 66 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# 1,000,000+ Recipe and Grocery List API (v2)\nAPI version: partner\n\n## Auth\nbasic | ApiKey X-BigOven-API-Key in header\n\n## Base URL\nhttps://api2.bigoven.com\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /collections -- verify access\n3. POST /grocerylist/department -- create first department\n\n## Endpoints\n\n66 endpoints across 7 groups. See references/api-spec.lap for full details.\n\n### collection\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /collection/{id} | Gets a recipe collection. A recipe collection is a curated set of recipes. |\n| GET | /collection/{id}/meta | Gets a recipe collection metadata. A recipe collection is a curated set of recipes. |\n\n### collections\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /collections | Get the list of current, seasonal recipe collections. From here, you can use the /collection/{id} endpoint to retrieve the recipes in those collections. |\n\n### grocerylist\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /grocerylist/department | Departmentalize a list of strings -- used for ad-hoc grocery list item addition |\n| GET | /grocerylist | Get the user's grocery list.  User is determined by Basic Authentication. |\n| DELETE | /grocerylist | Delete all the items on a grocery list; faster operation than a sync with deleted items. |\n| POST | /grocerylist/recipe | Add a Recipe to the grocery list.  In the request data, pass in recipeId, scale (scale=1.0 says to keep the recipe the same size as originally posted), markAsPending (true/false) to indicate that |\n| POST | /grocerylist/line | Add a single line item to the grocery list |\n| POST | /grocerylist/item | Add a single line item to the grocery list |\n| POST | /grocerylist/sync | Synchronize the grocery list.  Call this with a POST to /grocerylist/sync |\n| PUT | /grocerylist/item/{guid} | Update a grocery item by GUID |\n| DELETE | /grocerylist/item/{guid} | /grocerylist/item/{guid}  DELETE will delete this item assuming you own it. |\n| POST | /grocerylist/clearcheckedlines | Clears the checked lines. |\n\n### recipe\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /recipe/{recipeId}/images | Get all the images for a recipe. DEPRECATED. Please use /recipe/{recipeId}/photos. |\n| GET | /recipe/photos/pending | Gets the pending by user. |\n| GET | /recipe/{recipeId}/photos | Get all the photos for a recipe |\n| GET | /recipe/{recipeId}/scans | Gets a list of RecipeScan images for the recipe. There will be at most 3 per recipe. |\n| POST | /recipe/{recipeId}/image | POST: /recipe/{recipeId}/image?lat=42&lng=21&caption=this%20is%20my%20caption |\n| GET | /recipe/{recipeId}/note/{noteId} | Get a given note. Make sure you're passing authentication information in the header for the user who owns the note. |\n| PUT | /recipe/{recipeId}/note/{noteId} | HTTP PUT (update) a Recipe note (RecipeNote). |\n| DELETE | /recipe/{recipeId}/note/{noteId} | Delete a review |\n| GET | /recipe/{recipeId}/notes | recipe/100/notes |\n| POST | /recipe/{recipeId}/note | HTTP POST a new note into the system. |\n| GET | /recipe/{id}/zap | Zaps the recipe. |\n| GET | /recipe/{id} | Return full Recipe detail. Returns 403 if the recipe is owned by someone else. |\n| DELETE | /recipe/{id} | Deletes specified recipe (you must be authenticated as the owner of the recipe) |\n| GET | /recipe/steps/{id} | Return full Recipe detail with steps. Returns 403 if the recipe is owned by someone else. |\n| POST | /recipe/post/step | Stores recipe step number and returns saved step data |\n| POST | /recipe/get/step/number | Returns stored step number and number of steps in recipe |\n| GET | /recipe/get/active/recipe | Returns last active recipe for the user |\n| POST | /recipe/get/saved/step | Gets recipe single step as text |\n| GET | /recipe/{recipeId}/related | Get recipes related to the given recipeId |\n| POST | /recipe/{recipeId}/feedback | Feedback on a Recipe -- for internal BigOven editors |\n| GET | /recipe/categories | Get a list of recipe categories (the ID field can be used for include_cat in search parameters) |\n| GET | /recipe/autocomplete | Given a query, return recipe titles starting with query. Query must be at least 3 chars in length. |\n| GET | /recipe/autocomplete/mine | Automatics the complete my recipes. |\n| GET | /recipe/autocomplete/all | Automatics the complete all recipes. |\n| POST | /recipe/scan | POST an image as a new RecipeScan request |\n| PUT | /recipe | Update a recipe |\n| POST | /recipe | Add a new recipe |\n| GET | /recipe/{recipeId}/review/{reviewId} | Get a given review - DEPRECATED. See recipe/review/{reviewId} for the current usage. |\n| PUT | /recipe/{recipeId}/review/{reviewId} | HTTP PUT (update) a recipe review. DEPRECATED. Please see recipe/review/{reviewId} PUT for the new endpoint. |\n| DELETE | /recipe/{recipeId}/review/{reviewId} | DEPRECATED! - Deletes a review by recipeId and reviewId. Please use recipe/review/{reviewId} instead. |\n| GET | /recipe/review/{reviewId} | Get a given review by string-style ID. This will return a payload with FeaturedReply, ReplyCount. |\n| PUT | /recipe/review/{reviewId} | Update a given top-level review. |\n| GET | /recipe/{recipeId}/review | Get *my* review for the recipe {recipeId}, where \"me\" is determined by standard authentication headers |\n| POST | /recipe/{recipeId}/review | Add a new review. Only one review can be provided per {userId, recipeId} pair. Otherwise your review will be updated. |\n| GET | /recipe/{recipeId}/reviews | Get paged list of reviews for a recipe. Each review will have at most one FeaturedReply, as well as a ReplyCount. |\n| GET | /recipe/review/{reviewId}/replies | Get a paged list of replies for a given review. |\n| POST | /recipe/review/{reviewId}/replies | POST a reply to a given review. The date will be set by server. Note that replies no longer have star ratings, only top-level reviews do. |\n| PUT | /recipe/review/replies/{replyId} | Update (PUT) a reply to a given review. Authenticated user must be the original one that posted the reply. |\n| DELETE | /recipe/review/replies/{replyId} | DELETE a reply to a given review. Authenticated user must be the one who originally posted the reply. |\n\n### image\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /image/avatar | POST: /image/avatar |\n\n### me\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /me | Indexes this instance. |\n| PUT | /me | Puts me. |\n| GET | /me/skinny | Skinnies this instance. |\n| GET | /me/preferences/options | Gets the options. |\n| PUT | /me/profile | Puts me. |\n| PUT | /me/personal | Puts me personal. |\n| PUT | /me/preferences | Puts me preferences. |\n\n### recipes\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /recipes/raves | Get the recipe/comment tuples for those recipes with 4 or 5 star ratings |\n| GET | /recipes/{id} | Same as GET recipe but also includes the recipe videos (if any) |\n| GET | /recipes/random | Get a random, home-page-quality Recipe. |\n| GET | /recipes/top25random | Search for recipes. There are many parameters that you can apply. Starting with the most common, use title_kw to search within a title. |\n| GET | /recipes | Search for recipes. There are many parameters that you can apply. Starting with the most common, use title_kw to search within a title. |\n| GET | /recipes/recentviews | Get a list of recipes that the authenticated user has most recently viewed |\n\n## Common Questions\n\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Get collection details?\" -> GET /collection/{id}\n- \"List all meta?\" -> GET /collection/{id}/meta\n- \"List all collections?\" -> GET /collections\n- \"Create a department?\" -> POST /grocerylist/department\n- \"List all grocerylist?\" -> GET /grocerylist\n- \"Create a recipe?\" -> POST /grocerylist/recipe\n- \"Create a line?\" -> POST /grocerylist/line\n- \"Create a item?\" -> POST /grocerylist/item\n- \"Create a sync?\" -> POST /grocerylist/sync\n- \"Update a item?\" -> PUT /grocerylist/item/{guid}\n- \"Delete a item?\" -> DELETE /grocerylist/item/{guid}\n- \"Create a clearcheckedline?\" -> POST /grocerylist/clearcheckedlines\n- \"List all images?\" -> GET /recipe/{recipeId}/images\n- \"List all pending?\" -> GET /recipe/photos/pending\n- \"List all photos?\" -> GET /recipe/{recipeId}/photos\n- \"List all scans?\" -> GET /recipe/{recipeId}/scans\n- \"Create a image?\" -> POST /recipe/{recipeId}/image\n- \"Create a avatar?\" -> POST /image/avatar\n- \"List all me?\" -> GET /me\n- \"List all skinny?\" -> GET /me/skinny\n- \"List all options?\" -> GET /me/preferences/options\n- \"Get note details?\" -> GET /recipe/{recipeId}/note/{noteId}\n- \"Update a note?\" -> PUT /recipe/{recipeId}/note/{noteId}\n- \"Delete a note?\" -> DELETE /recipe/{recipeId}/note/{noteId}\n- \"List all notes?\" -> GET /recipe/{recipeId}/notes\n- \"Create a note?\" -> POST /recipe/{recipeId}/note\n- \"List all raves?\" -> GET /recipes/raves\n- \"List all zap?\" -> GET /recipe/{id}/zap\n- \"Get recipe details?\" -> GET /recipe/{id}\n- \"Delete a recipe?\" -> DELETE /recipe/{id}\n- \"Get recipe details?\" -> GET /recipes/{id}\n- \"Get step details?\" -> GET /recipe/steps/{id}\n- \"Create a step?\" -> POST /recipe/post/step\n- \"Create a number?\" -> POST /recipe/get/step/number\n- \"List all recipe?\" -> GET /recipe/get/active/recipe\n- \"Create a step?\" -> POST /recipe/get/saved/step\n- \"List all related?\" -> GET /recipe/{recipeId}/related\n- \"Create a feedback?\" -> POST /recipe/{recipeId}/feedback\n- \"List all random?\" -> GET /recipes/random\n- \"List all top25random?\" -> GET /recipes/top25random\n- \"List all recipes?\" -> GET /recipes\n- \"List all categories?\" -> GET /recipe/categories\n- \"Search autocomplete?\" -> GET /recipe/autocomplete\n- \"Search mine?\" -> GET /recipe/autocomplete/mine\n- \"Search all?\" -> GET /recipe/autocomplete/all\n- \"Create a scan?\" -> POST /recipe/scan\n- \"Create a recipe?\" -> POST /recipe\n- \"List all recentviews?\" -> GET /recipes/recentviews\n- \"Get review details?\" -> GET /recipe/{recipeId}/review/{reviewId}\n- \"Update a review?\" -> PUT /recipe/{recipeId}/review/{reviewId}\n- \"Delete a review?\" -> DELETE /recipe/{recipeId}/review/{reviewId}\n- \"Get review details?\" -> GET /recipe/review/{reviewId}\n- \"Update a review?\" -> PUT /recipe/review/{reviewId}\n- \"List all review?\" -> GET /recipe/{recipeId}/review\n- \"Create a review?\" -> POST /recipe/{recipeId}/review\n- \"List all reviews?\" -> GET /recipe/{recipeId}/reviews\n- \"List all replies?\" -> GET /recipe/review/{reviewId}/replies\n- \"Create a reply?\" -> POST /recipe/review/{reviewId}/replies\n- \"Update a reply?\" -> PUT /recipe/review/replies/{replyId}\n- \"Delete a reply?\" -> DELETE /recipe/review/replies/{replyId}\n- \"How to authenticate?\" -> See Auth section\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- List endpoints may support pagination; check for limit, offset, or cursor params\n- Create/update endpoints typically return the created/updated object\n\n## CLI\n\n```bash\n# Update this spec to the latest version\nnpx @lap-platform/lapsh get 1000000-recipe-and-grocery-list-api-v2 -o references/api-spec.lap\n\n# Search for related APIs\nnpx @lap-platform/lapsh search 1000000-recipe-and-grocery-list-api-v2\n```\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api 1,000,000+ Recipe and Grocery List API (v2)\n@base https://api2.bigoven.com\n@version partner\n@auth basic | ApiKey X-BigOven-API-Key in header\n@endpoints 66\n@hint download_for_search\n@toc collection(2), collections(1), grocerylist(10), recipe(39), image(1), me(7), recipes(6)\n\n@group collection\n@endpoint GET /collection/{id}\n@desc Gets a recipe collection. A recipe collection is a curated set of recipes.\n@required {id: any # the collection identifier}\n@optional {rpp: any # results per page, pg: any # page number (starting with 1), test: any, sessionForLogging: any}\n@returns(200) OK\n\n@endpoint GET /collection/{id}/meta\n@desc Gets a recipe collection metadata. A recipe collection is a curated set of recipes.\n@required {id: any # the collection identifier}\n@returns(200) OK\n\n@endgroup\n\n@group collections\n@endpoint GET /collections\n@desc Get the list of current, seasonal recipe collections. From here, you can use the /collection/{id} endpoint to retrieve the recipes in those collections.\n@optional {test: any}\n@returns(200) OK\n\n@endgroup\n\n@group grocerylist\n@endpoint POST /grocerylist/department\n@desc Departmentalize a list of strings -- used for ad-hoc grocery list item addition\n@required {model: map # see DepartmentModel for the request payload}\n@returns(200) OK\n\n@endpoint GET /grocerylist\n@desc Get the user's grocery list.  User is determined by Basic Authentication.\n@returns(200) OK\n\n@endpoint DELETE /grocerylist\n@desc Delete all the items on a grocery list; faster operation than a sync with deleted items.\n@returns(200) OK\n\n@endpoint POST /grocerylist/recipe\n@desc Add a Recipe to the grocery list.  In the request data, pass in recipeId, scale (scale=1.0 says to keep the recipe the same size as originally posted), markAsPending (true/false) to indicate that\n@required {data: map}\n@returns(200) OK\n\n@endpoint POST /grocerylist/line\n@desc Add a single line item to the grocery list\n@required {newItem: map # name, quantity, unit, notes, department}\n@returns(200) OK\n\n@endpoint POST /grocerylist/item\n@desc Add a single line item to the grocery list\n@required {newItem: map # name, quantity, unit, notes, department}\n@returns(200) OK\n\n@endpoint POST /grocerylist/sync\n@desc Synchronize the grocery list.  Call this with a POST to /grocerylist/sync\n@required {req: map}\n@returns(200) OK\n\n@endpoint PUT /grocerylist/item/{guid}\n@desc Update a grocery item by GUID\n@required {req: map, guid: any}\n@returns(200) OK\n\n@endpoint DELETE /grocerylist/item/{guid}\n@desc /grocerylist/item/{guid}  DELETE will delete this item assuming you own it.\n@required {guid: any}\n@returns(200) OK\n\n@endpoint POST /grocerylist/clearcheckedlines\n@desc Clears the checked lines.\n@returns(200) OK\n\n@endgroup\n\n@group recipe\n@endpoint GET /recipe/{recipeId}/images\n@desc Get all the images for a recipe. DEPRECATED. Please use /recipe/{recipeId}/photos.\n@required {recipeId: any # Recipe ID (required)}\n@returns(200) OK\n\n@endpoint GET /recipe/photos/pending\n@desc Gets the pending by user.\n@returns(200) OK\n\n@endpoint GET /recipe/{recipeId}/photos\n@desc Get all the photos for a recipe\n@required {recipeId: any # Recipe ID (required)}\n@optional {pg: any, rpp: any}\n@returns(200) OK\n\n@endpoint GET /recipe/{recipeId}/scans\n@desc Gets a list of RecipeScan images for the recipe. There will be at most 3 per recipe.\n@required {recipeId: any # the recipe identifier (int)}\n@returns(200) OK\n\n@endpoint POST /recipe/{recipeId}/image\n@desc POST: /recipe/{recipeId}/image?lat=42&lng=21&caption=this%20is%20my%20caption\n@required {recipeId: any}\n@optional {caption: any, lat: any, lng: any}\n@returns(200) Success\n@errors {400: if bad request (e.g., missing parameters), 401: if the user is unknown, 415: if unsupported media type (e.g., bad JPG)}\n\n@endgroup\n\n@group image\n@endpoint POST /image/avatar\n@desc POST: /image/avatar\n@returns(200) Success\n@errors {400: if bad request (e.g., missing parameters), 401: if the user is unknown, 415: if unsupported media type (e.g., bad JPG)}\n\n@endgroup\n\n@group me\n@endpoint GET /me\n@desc Indexes this instance.\n@returns(200) OK\n\n@endpoint PUT /me\n@desc Puts me.\n@required {req: map # The req.}\n@returns(200) OK\n\n@endpoint GET /me/skinny\n@desc Skinnies this instance.\n@returns(200) OK\n\n@endpoint GET /me/preferences/options\n@desc Gets the options.\n@returns(200) OK\n\n@endpoint PUT /me/profile\n@desc Puts me.\n@required {req: map # The req.}\n@returns(200) OK\n\n@endpoint PUT /me/personal\n@desc Puts me personal.\n@required {req: map # The req.}\n@returns(200) OK\n\n@endpoint PUT /me/preferences\n@desc Puts me preferences.\n@required {req: map # The req.}\n@returns(200) OK\n\n@endgroup\n\n@group recipe\n@endpoint GET /recipe/{recipeId}/note/{noteId}\n@desc Get a given note. Make sure you're passing authentication information in the header for the user who owns the note.\n@required {recipeId: any # recipe identifier (integer), noteId: any # The note ID (note -- it's not the RecipeID)}\n@returns(200) OK\n\n@endpoint PUT /recipe/{recipeId}/note/{noteId}\n@desc HTTP PUT (update) a Recipe note (RecipeNote).\n@required {recipeId: any, noteId: any, recipeNote: map}\n@returns(200) OK\n\n@endpoint DELETE /recipe/{recipeId}/note/{noteId}\n@desc Delete a review\n@required {recipeId: any # recipeId (int), noteId: any # noteId (int)}\n@returns(200) OK\n\n@endpoint GET /recipe/{recipeId}/notes\n@desc recipe/100/notes\n@required {recipeId: any # recipeId (int)}\n@optional {pg: any # page (int, starting from 1), rpp: any # recipeId}\n@returns(200) OK\n\n@endpoint POST /recipe/{recipeId}/note\n@desc HTTP POST a new note into the system.\n@required {recipeId: any # recipeId (int), note: map # a recipe note, with fields: Date (YYYY-MM-DD string), Notes (string), People (string), Variations (string), RecipeID (int?)}\n@returns(200) OK\n\n@endgroup\n\n@group recipes\n@endpoint GET /recipes/raves\n@desc Get the recipe/comment tuples for those recipes with 4 or 5 star ratings\n@optional {pg: any # page, starting with 1, rpp: any # results per page}\n@returns(200) OK\n\n@endgroup\n\n@group recipe\n@endpoint GET /recipe/{id}/zap\n@desc Zaps the recipe.\n@required {id: any # The identifier.}\n@returns(200) OK\n\n@endpoint GET /recipe/{id}\n@desc Return full Recipe detail. Returns 403 if the recipe is owned by someone else.\n@required {id: any # The Recipe ID to retrieve}\n@optional {prefetch: any # The prefetch.}\n@returns(200) OK\n\n@endpoint DELETE /recipe/{id}\n@desc Deletes specified recipe (you must be authenticated as the owner of the recipe)\n@required {id: any # The recipe id.}\n@optional {Authorization: any # The authorization header (optional).}\n@returns(200) OK\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group recipes\n@endpoint GET /recipes/{id}\n@desc Same as GET recipe but also includes the recipe videos (if any)\n@required {id: any # The Recipe ID to retrieve}\n@optional {prefetch: any # The prefetch., includeInstructions: any # (Optional) True to include instructions otherwise false (default false)., Authorization: any # The authorization header (optional).}\n@returns(200) OK\n@errors {400: BadRequest, 403: Forbidden, 404: NotFound, 500: InternalServerError}\n\n@endgroup\n\n@group recipe\n@endpoint GET /recipe/steps/{id}\n@desc Return full Recipe detail with steps. Returns 403 if the recipe is owned by someone else.\n@required {id: any # the Recipe ID to retrieve}\n@optional {prefetch: any}\n@returns(200) OK\n\n@endpoint POST /recipe/post/step\n@desc Stores recipe step number and returns saved step data\n@required {userName: any, recipeId: any, stepId: any}\n@returns(200) OK\n\n@endpoint POST /recipe/get/step/number\n@desc Returns stored step number and number of steps in recipe\n@required {userName: any, recipeId: any}\n@returns(200) OK\n\n@endpoint GET /recipe/get/active/recipe\n@desc Returns last active recipe for the user\n@required {userName: any}\n@returns(200) OK\n\n@endpoint POST /recipe/get/saved/step\n@desc Gets recipe single step as text\n@required {userName: any, recipeId: any, stepId: any}\n@returns(200) OK\n\n@endpoint GET /recipe/{recipeId}/related\n@desc Get recipes related to the given recipeId\n@required {recipeId: any # The recipe id}\n@optional {pg: any # The page, rpp: any # The results per page}\n@returns(200) OK\n\n@endpoint POST /recipe/{recipeId}/feedback\n@desc Feedback on a Recipe -- for internal BigOven editors\n@required {recipeId: any, data: map # The payload for feedback, which includes the field \"feedback\"}\n@returns(200) OK\n\n@endgroup\n\n@group recipes\n@endpoint GET /recipes/random\n@desc Get a random, home-page-quality Recipe.\n@returns(200) OK\n\n@endpoint GET /recipes/top25random\n@desc Search for recipes. There are many parameters that you can apply. Starting with the most common, use title_kw to search within a title.\n@optional {any_kw: any # Search anywhere in the recipe for the keyword, folder: any # Search in a specific folder name for the authenticated user, coll: any # Limit to a collection ID number, filter: any # optionally set to either \"myrecipes\", \"try\", \"favorites\",\"added\" to filter to just the authenticated user's recipe set, title_kw: any # Search just in the recipe title for the keyword, userId: any # Set the target userid to search their public recipes, username: any # Set the target username to search their public recipes, token: any, photos: any # if set to true, limit search results to photos only, boostmine: any # if set to true, boost my own recipes in my folders so they show up high in the list (at the expense of other sort orders), include_cat: any # integer of the subcategory you'd like to limit searches to (see the /recipe/categories endpoint for available id numbers). For instance, 58 is \"Main Dish > Casseroles\"., exclude_cat: any # like include_cat, set this to an integer to exclude a specific category, include_primarycat: any # csv indicating up to three top-level categories -- valid values are [appetizers,bread,breakfast,desserts,drinks,maindish,salads,sidedish,soups,marinades,other], exclude_primarycat: any # csv indicating integer values for up to 3 top-level categories -- valid values are 1...11 [appetizers,bread,breakfast,desserts,drinks,maindish,salads,sidedish,soups,marinades,other], include_ing: any # A CSV representing up to 3 ingredients to include, e.g., tomatoes,corn%20%starch,chicken, exclude_ing: any # A CSV representing up to 3 ingredients to exclude  (Powersearch-capable plan required), cuisine: any # Limit to a specific cuisine. Cooks can enter anything free-form, but the few dozen preconfigured values are Afghan,African,American,American-South,Asian,Australian,Brazilian,Cajun,Canadian,Caribbean,Chinese,Croatian,Cuban,Dessert,Eastern European,English,French,German,Greek,Hawaiian,Hungarian,India,Indian,Irish,Italian,Japanese,Jewish,Korean,Latin,Mediterranean,Mexican,Middle Eastern,Moroccan,Polish,Russian,Scandanavian,Seafood,Southern,Southwestern,Spanish,Tex-Mex,Thai,Vegan,Vegetarian,Vietnamese, db: any, userset: any # If set to a given username, it'll force the search to filter to just that username, servingsMin: any # Limit to yield of a given number size or greater. Note that cooks usually enter recipes by Servings, but sometimes they are posted by \"dozen\", etc. This parameter simply specifies the minimum number for that value entered in \"yield.\", totalMins: any # Optional. If supplied, will restrict results to recipes that can be made in {totalMins} or less. (Convert \"1 hour, 15 minutes\" to 75 before passing in.), maxIngredients: any # Optional. If supplied, will restrict results to recipes that can be made with {maxIngredients} ingredients or less, minIngredients: any # Optional. If supplied, will restrict results to recipes that have at least {minIngredients}, vtn: any # when set to 1, limit to vegetarian (Powersearch-capable plan required), vgn: any # when set to 1, limit to vegan (Powersearch-capable plan required), chs: any # when set to 1, limit to contains-cheese (Powersearch-capable plan required), glf: any # when set to 1, limit to gluten-free (Powersearch-capable plan required), ntf: any # when set to 1, limit to nut-free (Powersearch-capable plan required), dyf: any # when set to 1, limit to dairy-free (Powersearch-capable plan required), sff: any # when set to 1, limit to seafood-free (Powersearch-capable plan required), slf: any # when set to 1, limit to shellfish-free (Powersearch-capable plan required), tnf: any # when set to 1, limit to tree-nut free (Powersearch-capable plan required), wmf: any # when set to 1, limit to white-meat free (Powersearch-capable plan required), rmf: any # when set to 1, limit to red-meat free (Powersearch-capable plan required), cps: any # when set to 1, recipe contains pasta, set to 0 means contains no pasta (Powersearch-capable plan required), champion: any # optional. When set to 1, this will limit search results to \"best of\" recipes as determined by various internal editorial and programmatic algorithms. For the most comprehensive results, don't include this parameter., synonyms: any # optional, default is false. When set to true, BigOven will attempt to apply synonyms in search (e.g., excluding pork will also exclude bacon)}\n@returns(200) OK\n\n@endpoint GET /recipes\n@desc Search for recipes. There are many parameters that you can apply. Starting with the most common, use title_kw to search within a title.\n@optional {any_kw: any # Search anywhere in the recipe for the keyword, folder: any # Search in a specific folder name for the authenticated user, coll: any # Limit to a collection ID number, filter: any # optionally set to either \"myrecipes\", \"try\", \"favorites\",\"added\" to filter to just the authenticated user's recipe set, title_kw: any # Search just in the recipe title for the keyword, userId: any # Set the target userid to search their public recipes, username: any # Set the target username to search their public recipes, token: any, photos: any # if set to true, limit search results to photos only, boostmine: any # if set to true, boost my own recipes in my folders so they show up high in the list (at the expense of other sort orders), include_cat: any # integer of the subcategory you'd like to limit searches to (see the /recipe/categories endpoint for available id numbers). For instance, 58 is \"Main Dish > Casseroles\"., exclude_cat: any # like include_cat, set this to an integer to exclude a specific category, include_primarycat: any # csv indicating up to three top-level categories -- valid values are [appetizers,bread,breakfast,desserts,drinks,maindish,salads,sidedish,soups,marinades,other], exclude_primarycat: any # csv indicating integer values for up to 3 top-level categories -- valid values are 1...11 [appetizers,bread,breakfast,desserts,drinks,maindish,salads,sidedish,soups,marinades,other], include_ing: any # A CSV representing up to 3 ingredients to include, e.g., tomatoes,corn%20%starch,chicken, exclude_ing: any # A CSV representing up to 3 ingredients to exclude  (Powersearch-capable plan required), cuisine: any # Limit to a specific cuisine. Cooks can enter anything free-form, but the few dozen preconfigured values are Afghan,African,American,American-South,Asian,Australian,Brazilian,Cajun,Canadian,Caribbean,Chinese,Croatian,Cuban,Dessert,Eastern European,English,French,German,Greek,Hawaiian,Hungarian,India,Indian,Irish,Italian,Japanese,Jewish,Korean,Latin,Mediterranean,Mexican,Middle Eastern,Moroccan,Polish,Russian,Scandanavian,Seafood,Southern,Southwestern,Spanish,Tex-Mex,Thai,Vegan,Vegetarian,Vietnamese, db: any, userset: any # If set to a given username, it'll force the search to filter to just that username, servingsMin: any # Limit to yield of a given number size or greater. Note that cooks usually enter recipes by Servings, but sometimes they are posted by \"dozen\", etc. This parameter simply specifies the minimum number for that value entered in \"yield.\", totalMins: any # Optional. If supplied, will restrict results to recipes that can be made in {totalMins} or less. (Convert \"1 hour, 15 minutes\" to 75 before passing in.), maxIngredients: any # Optional. If supplied, will restrict results to recipes that can be made with {maxIngredients} ingredients or less, minIngredients: any # Optional. If supplied, will restrict results to recipes that have at least {minIngredients}, rpp: any # integer; results per page, pg: any # integer: the page number, vtn: any # when set to 1, limit to vegetarian (Powersearch-capable plan required), vgn: any # when set to 1, limit to vegan (Powersearch-capable plan required), chs: any # when set to 1, limit to contains-cheese (Powersearch-capable plan required), glf: any # when set to 1, limit to gluten-free (Powersearch-capable plan required), ntf: any # when set to 1, limit to nut-free (Powersearch-capable plan required), dyf: any # when set to 1, limit to dairy-free (Powersearch-capable plan required), sff: any # when set to 1, limit to seafood-free (Powersearch-capable plan required), slf: any # when set to 1, limit to shellfish-free (Powersearch-capable plan required), tnf: any # when set to 1, limit to tree-nut free (Powersearch-capable plan required), wmf: any # when set to 1, limit to white-meat free (Powersearch-capable plan required), rmf: any # when set to 1, limit to red-meat free (Powersearch-capable plan required), cps: any # when set to 1, recipe contains pasta, set to 0 means contains no pasta (Powersearch-capable plan required), champion: any # optional. When set to 1, this will limit search results to \"best of\" recipes as determined by various internal editorial and programmatic algorithms. For the most comprehensive results, don't include this parameter., synonyms: any # optional, default is false. When set to true, BigOven will attempt to apply synonyms in search (e.g., excluding pork will also exclude bacon)}\n@returns(200) OK\n\n@endgroup\n\n@group recipe\n@endpoint GET /recipe/categories\n@desc Get a list of recipe categories (the ID field can be used for include_cat in search parameters)\n@returns(200) OK\n\n@endpoint GET /recipe/autocomplete\n@desc Given a query, return recipe titles starting with query. Query must be at least 3 chars in length.\n@required {query: any}\n@optional {limit: any}\n@returns(200) OK\n\n@endpoint GET /recipe/autocomplete/mine\n@desc Automatics the complete my recipes.\n@required {query: any # The query., limit: any # The limit.}\n@returns(200) OK\n\n@endpoint GET /recipe/autocomplete/all\n@desc Automatics the complete all recipes.\n@required {query: any # The query., limit: any # The limit.}\n@returns(200) OK\n\n@endpoint POST /recipe/scan\n@desc POST an image as a new RecipeScan request\n@optional {test: any, devicetype: any, lat: any, lng: any}\n@errors {401: Not authorized, 402: Payment required (not enough credits), 415: Bad media type (bad JPG), 500: General error on initiating RecipeScan task; please try again or contact us at support[at]bigoven.com}\n\n@endpoint PUT /recipe\n@desc Update a recipe\n@required {recipe: map}\n@returns(200) OK\n\n@endpoint POST /recipe\n@desc Add a new recipe\n@required {recipe: map}\n@returns(200) OK\n\n@endgroup\n\n@group recipes\n@endpoint GET /recipes/recentviews\n@desc Get a list of recipes that the authenticated user has most recently viewed\n@optional {pg: any # Page number starting with 1, rpp: any # results per page}\n@returns(200) OK\n\n@endgroup\n\n@group recipe\n@endpoint GET /recipe/{recipeId}/review/{reviewId}\n@desc Get a given review - DEPRECATED. See recipe/review/{reviewId} for the current usage.\n@required {reviewId: any # int, recipeId: any # int}\n@returns(200) OK\n\n@endpoint PUT /recipe/{recipeId}/review/{reviewId}\n@desc HTTP PUT (update) a recipe review. DEPRECATED. Please see recipe/review/{reviewId} PUT for the new endpoint.\n@required {reviewId: any # reviewId (int), review: map, recipeId: any # recipeId (int)}\n@returns(200) OK\n\n@endpoint DELETE /recipe/{recipeId}/review/{reviewId}\n@desc DEPRECATED! - Deletes a review by recipeId and reviewId. Please use recipe/review/{reviewId} instead.\n@required {recipeId: any, reviewId: any}\n@returns(200) OK\n\n@endpoint GET /recipe/review/{reviewId}\n@desc Get a given review by string-style ID. This will return a payload with FeaturedReply, ReplyCount.\n@required {reviewId: any}\n@returns(200) OK\n\n@endpoint PUT /recipe/review/{reviewId}\n@desc Update a given top-level review.\n@required {reviewId: any, review: map}\n@returns(200) OK\n\n@endpoint GET /recipe/{recipeId}/review\n@desc Get *my* review for the recipe {recipeId}, where \"me\" is determined by standard authentication headers\n@required {recipeId: any}\n@returns(200) OK\n\n@endpoint POST /recipe/{recipeId}/review\n@desc Add a new review. Only one review can be provided per {userId, recipeId} pair. Otherwise your review will be updated.\n@required {recipeId: any, data: map}\n@returns(200) OK\n\n@endpoint GET /recipe/{recipeId}/reviews\n@desc Get paged list of reviews for a recipe. Each review will have at most one FeaturedReply, as well as a ReplyCount.\n@required {recipeId: any # recipe id (int)}\n@optional {pg: any # the page (int), starting with 1, rpp: any # results per page (int)}\n@returns(200) OK\n\n@endpoint GET /recipe/review/{reviewId}/replies\n@desc Get a paged list of replies for a given review.\n@required {reviewId: any}\n@optional {pg: any # the page (int), starting with 1, rpp: any # results per page (int)}\n@returns(200) OK\n\n@endpoint POST /recipe/review/{reviewId}/replies\n@desc POST a reply to a given review. The date will be set by server. Note that replies no longer have star ratings, only top-level reviews do.\n@required {reviewId: any, data: map}\n@returns(200) OK\n\n@endpoint PUT /recipe/review/replies/{replyId}\n@desc Update (PUT) a reply to a given review. Authenticated user must be the original one that posted the reply.\n@required {replyId: any, data: map}\n@returns(200) OK\n\n@endpoint DELETE /recipe/review/replies/{replyId}\n@desc DELETE a reply to a given review. Authenticated user must be the one who originally posted the reply.\n@required {replyId: any}\n@returns(200) OK\n\n@endgroup\n\n@end\n"}}