Workflows / Shopping and planning

Move from a recipe idea to an actionable week.

The automation layer preserves recipe context while connecting shopping-list state and Cookidoo’s rolling seven-day planner.

Shopping list

Ingredients remain connected to their recipes.

The service reads three Cookidoo sources concurrently:

  • recipes currently represented in the shopping list;
  • ingredient ownership state;
  • manually added items.

The result includes recipe groups, a flat ingredient list, optional additional items, and summary counts. A valid account may have an empty shopping list; consumers must support empty arrays.

{
  "recipes": [
    {
      "id": "r460132",
      "name": "Recipe name",
      "ingredient_count": 2,
      "ingredients": [
        {
          "name": "Rice",
          "description": "200 g rice",
          "is_owned": false
        }
      ]
    }
  ],
  "ingredients": [],
  "additional_items": [],
  "summary": {}
}
Quantity lives in description

CookidooIngredient does not expose an ingredient.quantity field.

Meal planner

The requested date begins a rolling seven-day window.

It is not a fixed Monday-to-Sunday calendar week. Empty days are omitted by Cookidoo and filled by the service.

get_meal_plan_week(date="2026-07-29")

# Returns 2026-07-29 through 2026-08-04,
# including explicit empty day objects.
Recipe typeIdentification and API behavior
OfficialIDs normally begin with r.
Customer26-character ULIDs; may arrive only in customerRecipeIds and require a detail lookup.

Safe writes

Add, remove, and move without losing state.

Add

Mixed official and private IDs are de-duplicated, classified, and partitioned into Cookidoo’s source-specific calls.

Remove

The service uses a direct DELETE wrapper because deleting the final recipe from a day returns HTTP 200 with content: null, which the upstream library incorrectly tries to parse as a calendar day.

Move

The target is added first. The source is removed second. If source removal fails, the new target entry is rolled back.

Read and preview before writing

Fetch the relevant window first, then call the mutation with dry_run=true. The returned JSON validates dates, recipe IDs, source inference, and operation order without changing the calendar. Repeat with dry_run=false only after reviewing it.

Example automation

From inspiration to a planned meal.

  1. Read or copy the recipe.
  2. Adapt and validate its content.
  3. Read the target seven-day window.
  4. Add the official or private recipe to the intended date.
  5. Read shopping-list ingredients grouped by recipe.
  6. Hand structured grocery data to the next authorized workflow.