How to add desserts to your meal plan

The document will guide you through the steps to add a dessert meal to your generated meal plan.

Overview

The Suggestic API usually generates a 7-day meal plan based on the following format:

BREAKFAST, SNACK, LUNCH, DINNER

Even though there is no DESSERT mealtime category, you can replace a mealtime to include a dessert recipe. Usually, the SNACK mealtime can be replaced with a dessert recipe in an already generated meal plan.

In this example, you will learn how to add a dessert recipe to your meal plan.

Requirements

Considerations

API endpoints to use

Through the example, use the following endpoints in the same order as they are listed below:

Examples

Code Example

Find all the steps detailed below in this graphqlbin. Modify the code accordingly.

Step by Step Example

Follow the 6 steps below to include a dessert in your meal plan.

The first two steps are optional. Follow then only if you don't have a SNACKdefined in your meal plan.

STEP 1: Add a SNACK meal to your meal plan.

Remember that the SNACK recipe will be replaced by the DESSERT recipe. If your meal plan does not include the SNACK meal time, execute the following mutation by adding a SNACK meal after LUNCH.

mutation updateMealPlanSettings {
  updateMealPlanSettings(
    overwrite: { format: [BREAKFAST, LUNCH, SNACK, DINNER] }
  ) {
    success
    message
  }
}

Note: Add a or move the SNACK meal time to any place. For example, if you need to have a SNACK (as a dessert) after the DINNER meal, you can setup the following format:

format: [BREAKFAST, LUNCH, SNACK, DINNER, SNACK]
STEP 2: Regenerate your meal plan

If you updated the meal plan settings, re-generate your meal plan

STEP 3: Identify the mealtime to replace

Execute the mealPlan query to identify the mealtime or mealtimes to replace.

Request:

{
  mealPlan {
    day
    date(useDatetime: false)
    calories
    meals {
      id
      calories
      meal
      numOfServings
      recipe {
        name
        numberOfServings
        nutrientsPerServing {
          calories
        }
      }
    }
  }
}

Response:

{
  "data": {
    "mealPlan": [
      {
        "day": 7,
        "date": "2022-04-28",
        "calories": 2250.48579801368,
        "meals": [
          {
            "id": "TWVhbDo0OTg4Mzg2",
            "calories": 582.850409456654,
            "meal": "breakfast",
            "numOfServings": 1,
            "recipe": {
              "name": "Mexican-Spiced Tofu Scramble",
              "numberOfServings": 4,
              "nutrientsPerServing": {
                "calories": 582.85
              }
            }
          },
          {
            "id": "TWVhbDo0OTg4Mzg3",
            "calories": 830.597746296156,
            "meal": "lunch",
            "numOfServings": 2,
            "recipe": {
              "name": "Arugula Cannellini Beans Salad Recipes",
              "numberOfServings": 4,
              "nutrientsPerServing": {
                "calories": 415.3
              }
            }
          },
          {
            "id": "TWVhbDo0OTg4Mzg4",
            "calories": 154.027677840875,
            "meal": "snack",
            "numOfServings": 1,
            "recipe": {
              "name": "Kale Smoothie With Orange And Pear",
              "numberOfServings": 2,
              "nutrientsPerServing": {
                "calories": 154.03
              }
            }
          },
          {
            "id": "TWVhbDo0OTg4Mzg5",
            "calories": 683.00996442,
            "meal": "dinner",
            "numOfServings": 1,
            "recipe": {
              "name": "Braised Tofu",
              "numberOfServings": 1,
              "nutrientsPerServing": {
                "calories": 683.01
              }
            }
          }
        ]
      }
      ......

Copy the meal or meals id of the meal times and save them to use at the moment of swapping the recipes. In the case of the examples, the SNACK mealtime for day 7 is copied:

DAY 7: "id": "TWVhbDo0OTg4Mzg4"

STEP 4: Get the DESSERT recipe Id

As was mentioned above, there are different queries to get the dessert information. In the case of this example, the recipesByMealTime query is used.

Request:

{
  recipesByMealTime(mealTime: TREAT_DESSERT, dietaryTags: [VEGAN]) {
    edges {
      node {
        id
        name
        author
        tags
        mealTags
        ingredients {
          name
        }
        instructions
        ingredientLines
      }
    }
  }
}

Response:

{
  "data": {
    "recipesByMealTime": {
      "edges": [
        {
          "node": {
            "id": "UmVjaXBlOmJlZGQ0MjAzLTljZWEtNDZiYS05ZmIwLTY4NGFjZGYxZjZkNg==",
            "name": "Pineapple Chia Ice Pops",
            "author": "I Heart Vegetables",
            "tags": [
              "VEGETARIAN",
              "PLANT_BASED",
              "Dessert",
              "DAIRY_FREE",
              "VEGAN",
              "GLUTEN_FREE"
            ],
            "mealTags": [
              "Snack"
            ],
            "ingredients": [
              {
                "name": "Pineapple"
              },
              {
                "name": "Protein powder optional"
              },
              {
                "name": "Bolthouse farms pineapple mango smoothie"
              },
              {
                "name": "Chia seeds"
              }
            ],
            "instructions": [],
            "ingredientLines": [
              "½ cup frozen pineapple",
              "1 scoop of protein powder Optional: For a protein boost",
              "16 oz Bolthouse Farms Pineapple Mango Smoothie",
              "2 tbsp chia seeds"
            ]
          }
        }
      ]
    }
  }
}
STEP 5: Swap the SNACK and DESSERT recipes in the meal plan

Execute theswapMealPlanRecipe and replace the mealId copied on step 2 and the recipeID copied on step 4:

mutation {
  swapMealPlanRecipe(
    recipeId: "UmVjaXBlOmI5NmMxMmExLWU1Y2EtNDI2MS1hZjUzLWY0MGMxY2ZhNDBiMg=="
    mealId: "TWVhbDo0ODk4OTY3"
    serving: 2
  ) {
    success
  }
}
STEP 6: Verify that both recipes were swapped

Execute the mealPlan query to verify that the recipe has been replaced:

Last updated