# Update User Recipe

Endpoint allows updating user defined recipe. Updating a recipe is atomic. You need to override the whole recipe. If some fields are skipped they will be deleted from a recipe. This API available only for user access-token integration

## Update User Recipe

<mark style="color:orange;">`PUT`</mark> `https://graph.whisk.com/v1/:recipe_id`

#### Path Parameters

| Name       | Type   | Description                                                                                                 |
| ---------- | ------ | ----------------------------------------------------------------------------------------------------------- |
| recipe\_id | string | Unique recipe identifier                                                                                    |
| fields     | array  | Extra fields to return on the recipe Possible values: `normalizedIngredients`, `instructions`, `nutrition`. |

#### Request Body

| Name    | Type   | Description            |
| ------- | ------ | ---------------------- |
| payload | object | A RecipePayload object |

{% tabs %}
{% tab title="200 " %}

```javascript
{
  "recipe": {
    "id": "1070c26c320ce194efca97093e72517b4e7",
    "name": "Home made pasta",
    "description": "Pasta with tomato souce",
    "ingredients": [
      {
        "text": "Pappardelle pasta"
      },
      {
        "text": "5 tomatoes"
      },
      {
        "text": "3tbs of olive oil"
      }
    ],
    "saved": {
      "value": true,
      "collectionIds": [
        "cd037513c9e149a1b707e85eab1fc7f6"
      ],
      "owner": true,
      "type": "manual"
    }
  },
  "status": "success"
}
```

{% endtab %}
{% endtabs %}

## Recipe Payload

| ATTRIBUTE    | TYPE                   | DESCRIPTION                         |
| ------------ | ---------------------- | ----------------------------------- |
| name\*       | string                 | recipe name                         |
| description  | string                 | recipe description                  |
| ingredients  | array \[RawIngredient] | recipe ingredients                  |
| images       | array \[OriginalImage] | recipe images                       |
| instructions | RecipeInstructions     | recipe instruction steps            |
| durations    | RecipeDurations        | recipe cooking timing               |
| source       | ManualRecipeSource     | source of the recipe, e.g. web site |
| servings     | number                 | number of servings                  |

## Response

| ATTRIBUTE             | TYPE                          | DESCRIPTION                   |
| --------------------- | ----------------------------- | ----------------------------- |
| id\*                  | string                        |                               |
| name\*                | string                        |                               |
| description           | string                        |                               |
| numberOfServings      | number                        | Original number of servings   |
| ingredients           | array \[RawIngredient]        |                               |
| normalizedIngredients | array \[NormalizedIngredient] |                               |
| instructions          | RecipeInstructions            |                               |
| images                | array \[ImageContainer]       |                               |
| source                | RecipeSource                  |                               |
| durations             | RecipeDurations               |                               |
| nutrition             | RecipeNutrition               |                               |
| constraints           | RecipeConstraints             |                               |
| saved                 | RecipeSaved                   | Information about collections |

### RawIngredient

| ATTRIBUTE | TYPE   | DESCRIPTION |
| --------- | ------ | ----------- |
| text\*    | string |             |
| group     | string |             |

### NormalizedIngredient

| ATTRIBUTE | TYPE                     | DESCRIPTION |
| --------- | ------------------------ | ----------- |
| text\*    | string                   |             |
| group     | string                   |             |
| analysis  | RecipeIngredientAnalysis |             |

### RawIngredient

| ATTRIBUTE | TYPE   | DESCRIPTION |
| --------- | ------ | ----------- |
| text\*    | string |             |
| group     | string |             |

### RecipeIngredientAnalysis

| ATTRIBUTE       | TYPE   | DESCRIPTION |
| --------------- | ------ | ----------- |
| product\*       | string |             |
| canonicalName\* | string |             |
| quantity        | number |             |
| unit            | string |             |
| multiplier      | number |             |
| brand           | string |             |
| comment         | string |             |
| category        | string |             |

### RecipeInstruction

| ATTRIBUTE | TYPE                    | DESCRIPTION |
| --------- | ----------------------- | ----------- |
| text\*    | string                  |             |
| group     | string                  |             |
| images    | array \[ImageContainer] |             |

### RecipeInstructions

| ATTRIBUTE | TYPE                       | DESCRIPTION |
| --------- | -------------------------- | ----------- |
| steps\*   | array \[RecipeInstruction] |             |

### ProductCategory

| ATTRIBUTE | TYPE   | DESCRIPTION |
| --------- | ------ | ----------- |
| name\*    | string |             |

### ImageContainer

| ATTRIBUTE    | TYPE            | DESCRIPTION                                                       |
| ------------ | --------------- | ----------------------------------------------------------------- |
| url\*        | string          | original image url, depricated. Please use field original instead |
| original     | OriginalImage   | original image information, e.g. image url                        |
| responsive\* | ResponsiveImage |                                                                   |

### ResponsiveImage

| ATTRIBUTE | TYPE    | DESCRIPTION            |
| --------- | ------- | ---------------------- |
| url\*     | string  | Hosted url of an image |
| width\*   | integer | Image width            |
| height\*  | integer | Image height           |

### OriginalImage

| ATTRIBUTE | TYPE   | DESCRIPTION      |
| --------- | ------ | ---------------- |
| url\*     | string | URL of the image |

### RecipeSource

| ATTRIBUTE       | TYPE           | DESCRIPTION |
| --------------- | -------------- | ----------- |
| name\*          | string         |             |
| displayName     | string         |             |
| sourceRecipeUrl | string         |             |
| license         | string         |             |
| image           | ImageContainer |             |

### RecipeLabels

| ATTRIBUTE  | TYPE                 | DESCRIPTION |
| ---------- | -------------------- | ----------- |
| mealType\* | array \[RecipeLabel] |             |
| cuisine\*  | array \[RecipeLabel] |             |
| category\* | array \[RecipeLabel] |             |

### RecipeLabel

Some RecipeLabel description

| ATTRIBUTE     | TYPE   | DESCRIPTION |
| ------------- | ------ | ----------- |
| name\*        | string |             |
| displayName\* | string |             |

### RecipeDurations

| ATTRIBUTE | TYPE   | DESCRIPTION                 |
| --------- | ------ | --------------------------- |
| cookTime  | number | Cooking time in minutes     |
| prepTime  | number | Preparation time in minutes |
| totalTime | number | Total time in minutes       |

### RecipeConstraints

| ATTRIBUTE  | TYPE                  | DESCRIPTION                                |
| ---------- | --------------------- | ------------------------------------------ |
| violates\* | ConstraintsCollection | Constraints which are violated in a recipe |

### ConstraintsCollection

| ATTRIBUTE    | TYPE  | DESCRIPTION                                                                                                                                                         |
| ------------ | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| diets\*      | array | List of diets Possible values: lacto-vegetarian, ovo-vegetarian, ovo-lacto-vegetarian, pescatarian, vegan, vegetarian.                                              |
| avoidances\* | array | List of avoidances and intolerances Possible values: celery, crustacean, egg, fish, groundnut, milk, mollusc, mustard, sesame, soybean, sulphites, tree-nut, wheat. |

### RecipeSaved

| ATTRIBUTE     | TYPE            | DESCRIPTION                                    |
| ------------- | --------------- | ---------------------------------------------- |
| value         | boolean         | True if this recipe is saved to favorites      |
| collectionIds | array \[string] |                                                |
| owner         | boolean         | If current user is owner of the recipe         |
| type          | enum            | Recipe type Possible values: manual, imported. |

### RecipeAuthor

| ATTRIBUTE | TYPE           | DESCRIPTION |
| --------- | -------------- | ----------- |
| name\*    | string         |             |
| image     | ImageContainer |             |

## Sample Request

```bash
curl -X PUT "https://graph.whisk.com/v1/1070c26c320ce194efca97093e72517b4e7" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "Authorization: Token Access-Token>" \
  -d '{
    "payload": {
      "name": "Home made pasta",
      "description": "Pasta with tomato souce",
      "ingredients": [
        {
          "text": "Pappardelle pasta"
        },
        {
          "text": "5 tomatoes"
        },
        {
          "text": "3tbs of olive oil"
        }
      ]
    }
  }'
```
