Update an Item in a Shopping List

This endpoint allows you update an item in a shopping list.

put
Update Item

https://api.whisk.com/list/v2/{list_id}/item/{item_id}
You can use the following path parameters and a body parameter to update an item in a shopping list:
Request
Response
Request
Path Parameters
list_id
required
string
The unique identifier of the list that contains the item to be updated.
item_id
required
string
The unique identifier of the item to be updated.
Headers
Authentication
required
string
Server Token or a User Access token containing shopping_list:write scope to authorize the API usage. For more information, see Authentication.
Body Parameters
body
required
object
The body object contains the item's attributes that can be updated. See the Body Object Example below.
Response
200: OK
This is how a successful response looks.
{
"list": {
"id": "string",
"name": "string",
"primary": true
},
"content": {
"items": [
{
"id": "string",
"item": {
"name": "string",
"brand": "string",
"comment": "string",
"quantity": 0,
"unit": "string"
},
"checked": true,
"image_url": "string",
"analysis": {
"product": {
"canonical_name": "string",
"original_name": "string"
},
"category": {
"canonical_name": "string"
},
"brand": {
"canonical_name": "string"
}
},
"recipe": {
"recipe_id": "string",
"position": 0
},
"combined": {
"combined_item_id": "string",
"quantity": 0
},
"created_time": "string",
"updated_at": "string",
"matching_properties": {
"gtin": "string",
"custom_product_id": "string"
}
}
],
"combined_items": [
{
"id": "string",
"item": {
"name": "string",
"brand": "string",
"comment": "string",
"quantity": 0,
"unit": "string"
},
"checked": true,
"image_url": "string",
"analysis": {
"product": {
"canonical_name": "string",
"original_name": "string"
},
"category": {
"canonical_name": "string"
},
"brand": {
"canonical_name": "string"
}
},
"created_time": "string",
"updated_at": "string"
}
],
"recipes": [
{
"id": "string",
"name": "string",
"images": [
{
"responsive": {
"url": "string",
"width": 0,
"height": 0,
"selection": {
"x": 0,
"y": 0,
"width": 0,
"height": 0
}
},
"url": "string"
}
],
"source": {
"name": "string",
"display_name": "string",
"source_recipe_url": "string",
"image": {
"responsive": {
"url": "string",
"width": 0,
"height": 0,
"selection": {
"x": 0,
"y": 0,
"width": 0,
"height": 0
}
},
"url": "string"
},
"license": "LICENCE_INVALID"
}
}
]
}
}
400: Bad Request
This failed response appears when error codes are found in the endpoint query.
{
"error_code": "REAL_CODES_ARE_IN_ENDPOINT_DESCRIPTION",
"message": "Additional details about error are not static and can be changed"
}
401: Unauthorized
This failed response appears due to API authentication failure. The possible error codes that may appear are: auth.tokenNotFound , auth.tokenExpired, auth.tokenInvalid, auth.tokenRequired.
{
"code": "auth.tokenNotFound"
}
500: Internal Server Error
This failed response appears when something is not right on Whisk's end. Please send a message to [email protected], and be sure to include both the Request and Response data. We’ll get back to you soon.
This is unexpected response, something is wrong on our side, please contact: [email protected]

Request Body Object Example

{
"fields": {
"name": "strawberry ice cream",
"brand": "magnum",
"comment": "frozen",
"quantity": 10,
"unit": "scoop",
"checked": true
},
"mask": {
"paths": [
"name", "brand", "comment", "quantity", "unit", "checked"
]
}
}

fields

The fields object allows you to specify new values for following attributes of an item:

Attribute

Type

Description

name

string

The item's name.

brand

array

The brand name if the item is of a specific brand.

comment

boolean

Additional information attached with the item.

quantity

number

The item's volume or count.

unit

array

The measurement unit of the item's quantity.

checked

boolean

Check or uncheck the item in the list.

mask

The mask object allows you to specify the attributes that you want to update specifically. It is essential to use this object because you need to specify values for all the attributes that the fields object contains regardless of whether you want to update all or only a few of them in each update request. Hence, the mask object determines which attributes are to be updated exactly.

The mask object contains the path array that allows you to add a comma-separated list of attributes to update.

Sample Request and Response

Curl Request
Response
Curl Request
curl -X PUT "https://api.whisk.com/list/v2/106c5fa85ddbba343099347c57e54632500/item/611b542e-4d9f-4a1a-afab-be960c88a3c2"
-H "Accept: application/json"
-H "Authorization: Bearer <YOUR-API-ACCESS-KEY>"
-d "{ \"fields\": { \"name\": \"strawberry ice cream\", \"brand\": \"magnum\", \"comment\": \"frozen\", \"quantity\": 10, \"unit\": \"scoop\", \"checked\": true }, \"mask\": { \"paths\": [ \"name\", \"brand\", \"comment\", \"quantity\", \"unit\", \"checked\" ] }}"

Whisk allows you to discover and understand its API capabilities on the Swagger interface with the ability to try out the API calls directly in your browser. You can call this endpoint here.

Response
{
"list": {
"id": "106c5fa85ddbba343099347c57e54632500",
"name": "My New Shopping List"
},
"content": {
"items": [
{
"id": "611b542e-4d9f-4a1a-afab-be960c88a3c2",
"item": {
"name": "strawberry ice cream",
"brand": "magnum",
"comment": "frozen",
"quantity": 10,
"unit": "scoop"
},
"checked": true,
"image_url": "https://whisk-res.cloudinary.com/image/upload/v1579874533/custom_upload/05b8a428286fb4177ae5d82a4d00bc03.jpg",
"analysis": {
"product": {
"canonical_name": "STRAWBERRY ICE CREAM"
},
"category": {
"canonical_name": "FROZEN"
},
"brand": {
"canonical_name": "MAGNUM"
}
},
"created_time": "1614714958",
"updated_at": "1614715075",
"matching_properties": {
"gtin": "00000034411207"
}
}
]
}
}

A successful response returns the shopping list definition with an updated list of items. To understand the data structure of a shopping list definition, see Shopping List Object.