Doordash Item management API Specification (2.0)
API to manage item catalog, inventory, pricing and other attributes.
Add new items
Add new items managed by business. Items sold across all stores must be added to business first. Items must be uniquely identifiable across stores.
Request Body schema: application/json
object | |
Array of objects (Item) |
Responses
Request samples
- Payload
{- "scope": {
- "business_ids": [
- "string"
]
}, - "items": [
- {
- "merchant_supplied_item_id": "string",
- "name": "string",
- "description": "string",
- "product_traits": [
- "ALCOHOL"
], - "other_identifiers": [
- {
- "identifier_type": "UPC",
- "identifier_value": "string"
}
], - "images": [
- {
- "url": "string",
- "sort_id": 0
}
], - "size": {
- "details": {
- "dimensions": {
- "length": {
- "value": 0,
- "unit": "inch"
}, - "width": {
- "value": 0,
- "unit": "inch"
}, - "height": {
- "value": 0,
- "unit": "inch"
}
}, - "weight": {
- "value": 0,
- "unit": "lbs"
}, - "volume": {
- "value": 0,
- "unit": "oz"
}, - "product_specific_size_definition": {
- "value": "string",
- "description": "string"
}
}, - "pack_size_details": {
- "count_per_pack": 0,
- "per_item_size_details": {
- "dimensions": {
- "length": {
- "value": 0,
- "unit": "inch"
}, - "width": {
- "value": 0,
- "unit": "inch"
}, - "height": {
- "value": 0,
- "unit": "inch"
}
}, - "weight": {
- "value": 0,
- "unit": "lbs"
}, - "volume": {
- "value": 0,
- "unit": "oz"
}, - "product_specific_size_definition": {
- "value": "string",
- "description": "string"
}
}
}
}, - "weighted_item_info": {
- "average_weight_per_each": 0,
- "average_weight_measurement_unit": "ea",
- "shop_by_measurement_unit": "kg",
- "price_by_measurement_unit": "kg"
}, - "brand_info": {
- "name": "string"
}, - "program_eligibility": [
- "SNAP"
], - "item_categorizations": [
- {
- "category": {
- "name": "string",
- "sub_category": { }
}
}
]
}
]
}
Response samples
- 201
- 400
- 401
- 403
- 404
- 422
- 429
- 500
{- "operation_id": "string",
- "operation_status": "QUEUED",
- "message": "string"
}
Update existing items
Update existing items managed by business.
Request Body schema: application/json
object | |
Array of objects (Item) |
Responses
Request samples
- Payload
{- "scope": {
- "business_ids": [
- "string"
]
}, - "items": [
- {
- "merchant_supplied_item_id": "string",
- "name": "string",
- "description": "string",
- "product_traits": [
- "ALCOHOL"
], - "other_identifiers": [
- {
- "identifier_type": "UPC",
- "identifier_value": "string"
}
], - "images": [
- {
- "url": "string",
- "sort_id": 0
}
], - "size": {
- "details": {
- "dimensions": {
- "length": {
- "value": 0,
- "unit": "inch"
}, - "width": {
- "value": 0,
- "unit": "inch"
}, - "height": {
- "value": 0,
- "unit": "inch"
}
}, - "weight": {
- "value": 0,
- "unit": "lbs"
}, - "volume": {
- "value": 0,
- "unit": "oz"
}, - "product_specific_size_definition": {
- "value": "string",
- "description": "string"
}
}, - "pack_size_details": {
- "count_per_pack": 0,
- "per_item_size_details": {
- "dimensions": {
- "length": {
- "value": 0,
- "unit": "inch"
}, - "width": {
- "value": 0,
- "unit": "inch"
}, - "height": {
- "value": 0,
- "unit": "inch"
}
}, - "weight": {
- "value": 0,
- "unit": "lbs"
}, - "volume": {
- "value": 0,
- "unit": "oz"
}, - "product_specific_size_definition": {
- "value": "string",
- "description": "string"
}
}
}
}, - "weighted_item_info": {
- "average_weight_per_each": 0,
- "average_weight_measurement_unit": "ea",
- "shop_by_measurement_unit": "kg",
- "price_by_measurement_unit": "kg"
}, - "brand_info": {
- "name": "string"
}, - "program_eligibility": [
- "SNAP"
], - "item_categorizations": [
- {
- "category": {
- "name": "string",
- "sub_category": { }
}
}
]
}
]
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
- 500
{- "operation_id": "string",
- "operation_status": "QUEUED",
- "message": "string"
}
Update existing store
path Parameters
store_location_id required | string <string> ID of store to be updated |
Request Body schema: application/json
update existing store
merchant_supplied_store_id | string |
Array of objects | |
Array of objects |
Responses
Request samples
- Payload
{- "merchant_supplied_store_id": "string",
- "open_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string"
}
], - "special_hours": [
- {
- "date": "string",
- "start_time": "string",
- "end_time": "string",
- "closed": true
}
]
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
- 500
{- "merchant_supplied_store_id": "string",
- "open_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string"
}
], - "special_hours": [
- {
- "date": "string",
- "start_time": "string",
- "end_time": "string",
- "closed": true
}
]
}
Endpoints to manage inventory/pricing and other item attributes specific to this store
Add inventory/pricing and other in-store attributes of new item that is made available for sale in the store. Request will fail if item has extras/options.
Add inventory/pricing and other in-store attributes of new item that is made available for sale in the store. base_price and status must be specified first time when an item is made available for sale in a store.
path Parameters
store_location_id required | string <string> ID of store where the item is physically sourced. |
Request Body schema: application/json
object Only need this information when you use paginated pull workflow | |
Array of objects (StoreItem) |
Responses
Request samples
- Payload
{- "meta": {
- "current_page": 0,
- "page_size": 0,
- "total_page": 0
}, - "items": [
- {
- "merchant_supplied_item_id": "string",
- "item_availability": "ACTIVE",
- "balance_on_hand": 0,
- "last_sold_datetime": "string",
- "price_info": {
- "base_price": 0,
- "sale_price": 0,
- "tax_rate": 0,
- "bottle_fee_deposit": 0
}, - "location": {
- "aisle": "string",
- "zone": "string",
- "shelf": "string",
- "side": "string",
- "additional_details": "string",
- "coordinates": {
- "x": 0,
- "y": 0
}
}, - "item_special_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string",
- "start_date": "string",
- "end_date": "string"
}
], - "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "description": "string",
- "availability": "ACTIVE",
- "sort_id": 0,
- "min_num_options": 0,
- "max_num_options": 0,
- "num_free_options": 0,
- "min_option_choice_quantity": 0,
- "max_option_choice_quantity": 0,
- "min_aggregate_options_quantity": 0,
- "max_aggregate_options_quantity": 0,
- "options": [
- {
- "merchant_supplied_item_id": "string",
- "name": "string",
- "availability": "ACTIVE",
- "price_info": {
- "base_price": 0,
- "sale_price": 0,
- "tax_rate": 0,
- "bottle_fee_deposit": 0
}, - "item_extra_option_special_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string",
- "start_date": "string",
- "end_date": "string"
}
], - "description": "string",
- "default": true,
- "sort_id": 0,
- "operation_context": [
- "string"
], - "quantity_info": {
- "default_quantity": 0,
- "charge_above": 0
}, - "dish_info": {
- "nutritional_info": {
- "calorific_info": {
- "display_type": null,
- "lower_range": null,
- "higher_range": null
}
}, - "classification_info": {
- "classification_traits": "HAS_SIDE",
- "service_types": [
- null
], - "classification_tags": [
- null
]
}
}, - "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "description": "string",
- "availability": "ACTIVE",
- "sort_id": 0,
- "min_num_options": 0,
- "max_num_options": 0,
- "num_free_options": 0,
- "min_option_choice_quantity": 0,
- "max_option_choice_quantity": 0,
- "min_aggregate_options_quantity": 0,
- "max_aggregate_options_quantity": 0,
- "options": [
- null
]
}
]
}
]
}
], - "product_attribute_overrides": [
- {
- "op": "add",
- "attribute_path": "string",
- "attribute_value": "string"
}
]
}
]
}
Response samples
- 202
- 400
- 401
- 403
- 404
- 422
- 429
- 500
{- "operation_id": "string",
- "operation_status": "QUEUED",
- "message": "string"
}
Update inventory/pricing and other in-store attributes of item that is already sold in the store. Request will fail if item has extras/options.
path Parameters
store_location_id required | string <string> ID of store where the item is physically sourced. |
Request Body schema: application/json
object Only need this information when you use paginated pull workflow | |
Array of objects (StoreItem) |
Responses
Request samples
- Payload
{- "meta": {
- "current_page": 0,
- "page_size": 0,
- "total_page": 0
}, - "items": [
- {
- "merchant_supplied_item_id": "string",
- "item_availability": "ACTIVE",
- "balance_on_hand": 0,
- "last_sold_datetime": "string",
- "price_info": {
- "base_price": 0,
- "sale_price": 0,
- "tax_rate": 0,
- "bottle_fee_deposit": 0
}, - "location": {
- "aisle": "string",
- "zone": "string",
- "shelf": "string",
- "side": "string",
- "additional_details": "string",
- "coordinates": {
- "x": 0,
- "y": 0
}
}, - "item_special_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string",
- "start_date": "string",
- "end_date": "string"
}
], - "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "description": "string",
- "availability": "ACTIVE",
- "sort_id": 0,
- "min_num_options": 0,
- "max_num_options": 0,
- "num_free_options": 0,
- "min_option_choice_quantity": 0,
- "max_option_choice_quantity": 0,
- "min_aggregate_options_quantity": 0,
- "max_aggregate_options_quantity": 0,
- "options": [
- {
- "merchant_supplied_item_id": "string",
- "name": "string",
- "availability": "ACTIVE",
- "price_info": {
- "base_price": 0,
- "sale_price": 0,
- "tax_rate": 0,
- "bottle_fee_deposit": 0
}, - "item_extra_option_special_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string",
- "start_date": "string",
- "end_date": "string"
}
], - "description": "string",
- "default": true,
- "sort_id": 0,
- "operation_context": [
- "string"
], - "quantity_info": {
- "default_quantity": 0,
- "charge_above": 0
}, - "dish_info": {
- "nutritional_info": {
- "calorific_info": {
- "display_type": null,
- "lower_range": null,
- "higher_range": null
}
}, - "classification_info": {
- "classification_traits": "HAS_SIDE",
- "service_types": [
- null
], - "classification_tags": [
- null
]
}
}, - "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "description": "string",
- "availability": "ACTIVE",
- "sort_id": 0,
- "min_num_options": 0,
- "max_num_options": 0,
- "num_free_options": 0,
- "min_option_choice_quantity": 0,
- "max_option_choice_quantity": 0,
- "min_aggregate_options_quantity": 0,
- "max_aggregate_options_quantity": 0,
- "options": [
- null
]
}
]
}
]
}
], - "product_attribute_overrides": [
- {
- "op": "add",
- "attribute_path": "string",
- "attribute_value": "string"
}
]
}
]
}
Response samples
- 202
- 400
- 401
- 403
- 404
- 422
- 429
- 500
{- "operation_id": "string",
- "operation_status": "QUEUED",
- "message": "string"
}
Create jobs to trigger various pull request flows. Job parameters should confirm to the schema defined for specific job.
Request Body schema: application/json
job_type | string Enum: "PULL_STORE_ITEMS" "PULL_STORE_ITEMS_WITH_PAGINATION" Use PULL_STORE_ITEMS if you can return all items in one pull call for one store, otherwise use PULL_STORE_ITEMS_WITH_PAGINATION which is paginated version pull. |
object |
Responses
Request samples
- Payload
{- "job_type": "PULL_STORE_ITEMS",
- "job_parameters": {
- "property1": "string",
- "property2": "string"
}
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
- 500
{- "operation_id": "string",
- "operation_status": "QUEUED",
- "message": "string",
- "max_page_size": 0
}
merchant_supplied_item_id | string Merchant supplied Id to identify an item uniquely within business across all stores. Every item that is shopable by CX must be represented as an unique item |
name | string Name of the item |
description | string Description of the item |
product_traits | Array of strings (ProductTrait) Items Enum: "ALCOHOL" "MEDICATION" "WEIGHTED" Specifies type of product(s) represented by the item. These attributes will be used to validate product specific attributes in request and apply product specific business logic internally. For example, when WEIGHTED is specified as one of the product trait, presence of weighted_item_info will be validated in the request payload |
Array of objects Other identifiers associated with item. | |
Array of objects Images of the item, atleast one image must be specified | |
object size of the item | |
object attributes related to items that are sold by weights | |
object brand of the item if applicable | |
program_eligibility | Array of strings (ProgramEligibility) Items Enum: "SNAP" "HSA" "FSA" Program eligibility of the item |
Array of objects One or more categories associated with the item |
{- "merchant_supplied_item_id": "string",
- "name": "string",
- "description": "string",
- "product_traits": [
- "ALCOHOL"
], - "other_identifiers": [
- {
- "identifier_type": "UPC",
- "identifier_value": "string"
}
], - "images": [
- {
- "url": "string",
- "sort_id": 0
}
], - "size": {
- "details": {
- "dimensions": {
- "length": {
- "value": 0,
- "unit": "inch"
}, - "width": {
- "value": 0,
- "unit": "inch"
}, - "height": {
- "value": 0,
- "unit": "inch"
}
}, - "weight": {
- "value": 0,
- "unit": "lbs"
}, - "volume": {
- "value": 0,
- "unit": "oz"
}, - "product_specific_size_definition": {
- "value": "string",
- "description": "string"
}
}, - "pack_size_details": {
- "count_per_pack": 0,
- "per_item_size_details": {
- "dimensions": {
- "length": {
- "value": 0,
- "unit": "inch"
}, - "width": {
- "value": 0,
- "unit": "inch"
}, - "height": {
- "value": 0,
- "unit": "inch"
}
}, - "weight": {
- "value": 0,
- "unit": "lbs"
}, - "volume": {
- "value": 0,
- "unit": "oz"
}, - "product_specific_size_definition": {
- "value": "string",
- "description": "string"
}
}
}
}, - "weighted_item_info": {
- "average_weight_per_each": 0,
- "average_weight_measurement_unit": "ea",
- "shop_by_measurement_unit": "kg",
- "price_by_measurement_unit": "kg"
}, - "brand_info": {
- "name": "string"
}, - "program_eligibility": [
- "SNAP"
], - "item_categorizations": [
- {
- "category": {
- "name": "string",
- "sub_category": { }
}
}
]
}
merchant_supplied_store_id | string |
Array of objects | |
Array of objects |
{- "merchant_supplied_store_id": "string",
- "open_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string"
}
], - "special_hours": [
- {
- "date": "string",
- "start_time": "string",
- "end_time": "string",
- "closed": true
}
]
}
merchant_supplied_item_id | string |
item_availability | string Enum: "ACTIVE" "INACTIVE" |
balance_on_hand | integer |
last_sold_datetime | string DateTime in ISO8601 format of when the item was last sold at the store. |
object (PriceInfo) | |
object (ItemLocation) Default location of an item in the store across business. Can be specified at store level for any store specific customizations. | |
Array of objects (TimeBlock) Special hours on when item will be available | |
Array of objects (Extra) | |
Array of objects (ProductAttributeOverride) Store level overrides of Item properties defined at business level. |
{- "merchant_supplied_item_id": "string",
- "item_availability": "ACTIVE",
- "balance_on_hand": 0,
- "last_sold_datetime": "string",
- "price_info": {
- "base_price": 0,
- "sale_price": 0,
- "tax_rate": 0,
- "bottle_fee_deposit": 0
}, - "location": {
- "aisle": "string",
- "zone": "string",
- "shelf": "string",
- "side": "string",
- "additional_details": "string",
- "coordinates": {
- "x": 0,
- "y": 0
}
}, - "item_special_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string",
- "start_date": "string",
- "end_date": "string"
}
], - "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "description": "string",
- "availability": "ACTIVE",
- "sort_id": 0,
- "min_num_options": 0,
- "max_num_options": 0,
- "num_free_options": 0,
- "min_option_choice_quantity": 0,
- "max_option_choice_quantity": 0,
- "min_aggregate_options_quantity": 0,
- "max_aggregate_options_quantity": 0,
- "options": [
- {
- "merchant_supplied_item_id": "string",
- "name": "string",
- "availability": "ACTIVE",
- "price_info": {
- "base_price": 0,
- "sale_price": 0,
- "tax_rate": 0,
- "bottle_fee_deposit": 0
}, - "item_extra_option_special_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string",
- "start_date": "string",
- "end_date": "string"
}
], - "description": "string",
- "default": true,
- "sort_id": 0,
- "operation_context": [
- "string"
], - "quantity_info": {
- "default_quantity": 0,
- "charge_above": 0
}, - "dish_info": {
- "nutritional_info": {
- "calorific_info": {
- "display_type": "string",
- "lower_range": 0,
- "higher_range": 0
}
}, - "classification_info": {
- "classification_traits": "HAS_SIDE",
- "service_types": [
- "string"
], - "classification_tags": [
- "TAG_KEY_DIETARY_VEGETARIAN"
]
}
}, - "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "description": "string",
- "availability": "ACTIVE",
- "sort_id": 0,
- "min_num_options": 0,
- "max_num_options": 0,
- "num_free_options": 0,
- "min_option_choice_quantity": 0,
- "max_option_choice_quantity": 0,
- "min_aggregate_options_quantity": 0,
- "max_aggregate_options_quantity": 0,
- "options": [
- {
- "merchant_supplied_item_id": "string",
- "name": "string",
- "availability": "ACTIVE",
- "price_info": {
- "base_price": null,
- "sale_price": null,
- "tax_rate": null,
- "bottle_fee_deposit": null
}, - "item_extra_option_special_hours": [
- null
], - "description": "string",
- "default": true,
- "sort_id": 0,
- "operation_context": [
- null
], - "quantity_info": {
- "default_quantity": null,
- "charge_above": null
}, - "dish_info": {
- "nutritional_info": null,
- "classification_info": null
}, - "extras": [
- null
]
}
]
}
]
}
]
}
], - "product_attribute_overrides": [
- {
- "op": "add",
- "attribute_path": "string",
- "attribute_value": "string"
}
]
}
object | |
Array of objects (Item) |
{- "scope": {
- "business_ids": [
- "string"
]
}, - "items": [
- {
- "merchant_supplied_item_id": "string",
- "name": "string",
- "description": "string",
- "product_traits": [
- "ALCOHOL"
], - "other_identifiers": [
- {
- "identifier_type": "UPC",
- "identifier_value": "string"
}
], - "images": [
- {
- "url": "string",
- "sort_id": 0
}
], - "size": {
- "details": {
- "dimensions": {
- "length": {
- "value": 0,
- "unit": "inch"
}, - "width": {
- "value": 0,
- "unit": "inch"
}, - "height": {
- "value": 0,
- "unit": "inch"
}
}, - "weight": {
- "value": 0,
- "unit": "lbs"
}, - "volume": {
- "value": 0,
- "unit": "oz"
}, - "product_specific_size_definition": {
- "value": "string",
- "description": "string"
}
}, - "pack_size_details": {
- "count_per_pack": 0,
- "per_item_size_details": {
- "dimensions": {
- "length": {
- "value": 0,
- "unit": "inch"
}, - "width": {
- "value": 0,
- "unit": "inch"
}, - "height": {
- "value": 0,
- "unit": "inch"
}
}, - "weight": {
- "value": 0,
- "unit": "lbs"
}, - "volume": {
- "value": 0,
- "unit": "oz"
}, - "product_specific_size_definition": {
- "value": "string",
- "description": "string"
}
}
}
}, - "weighted_item_info": {
- "average_weight_per_each": 0,
- "average_weight_measurement_unit": "ea",
- "shop_by_measurement_unit": "kg",
- "price_by_measurement_unit": "kg"
}, - "brand_info": {
- "name": "string"
}, - "program_eligibility": [
- "SNAP"
], - "item_categorizations": [
- {
- "category": {
- "name": "string",
- "sub_category": { }
}
}
]
}
]
}
object Only need this information when you use paginated pull workflow | |
Array of objects (StoreItem) |
{- "meta": {
- "current_page": 0,
- "page_size": 0,
- "total_page": 0
}, - "items": [
- {
- "merchant_supplied_item_id": "string",
- "item_availability": "ACTIVE",
- "balance_on_hand": 0,
- "last_sold_datetime": "string",
- "price_info": {
- "base_price": 0,
- "sale_price": 0,
- "tax_rate": 0,
- "bottle_fee_deposit": 0
}, - "location": {
- "aisle": "string",
- "zone": "string",
- "shelf": "string",
- "side": "string",
- "additional_details": "string",
- "coordinates": {
- "x": 0,
- "y": 0
}
}, - "item_special_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string",
- "start_date": "string",
- "end_date": "string"
}
], - "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "description": "string",
- "availability": "ACTIVE",
- "sort_id": 0,
- "min_num_options": 0,
- "max_num_options": 0,
- "num_free_options": 0,
- "min_option_choice_quantity": 0,
- "max_option_choice_quantity": 0,
- "min_aggregate_options_quantity": 0,
- "max_aggregate_options_quantity": 0,
- "options": [
- {
- "merchant_supplied_item_id": "string",
- "name": "string",
- "availability": "ACTIVE",
- "price_info": {
- "base_price": 0,
- "sale_price": 0,
- "tax_rate": 0,
- "bottle_fee_deposit": 0
}, - "item_extra_option_special_hours": [
- {
- "day_index": "MON",
- "start_time": "string",
- "end_time": "string",
- "start_date": "string",
- "end_date": "string"
}
], - "description": "string",
- "default": true,
- "sort_id": 0,
- "operation_context": [
- "string"
], - "quantity_info": {
- "default_quantity": 0,
- "charge_above": 0
}, - "dish_info": {
- "nutritional_info": {
- "calorific_info": {
- "display_type": null,
- "lower_range": null,
- "higher_range": null
}
}, - "classification_info": {
- "classification_traits": "HAS_SIDE",
- "service_types": [
- null
], - "classification_tags": [
- null
]
}
}, - "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "description": "string",
- "availability": "ACTIVE",
- "sort_id": 0,
- "min_num_options": 0,
- "max_num_options": 0,
- "num_free_options": 0,
- "min_option_choice_quantity": 0,
- "max_option_choice_quantity": 0,
- "min_aggregate_options_quantity": 0,
- "max_aggregate_options_quantity": 0,
- "options": [
- null
]
}
]
}
]
}
], - "product_attribute_overrides": [
- {
- "op": "add",
- "attribute_path": "string",
- "attribute_value": "string"
}
]
}
]
}
job_type | string Enum: "PULL_STORE_ITEMS" "PULL_STORE_ITEMS_WITH_PAGINATION" Use PULL_STORE_ITEMS if you can return all items in one pull call for one store, otherwise use PULL_STORE_ITEMS_WITH_PAGINATION which is paginated version pull. |
object |
{- "job_type": "PULL_STORE_ITEMS",
- "job_parameters": {
- "property1": "string",
- "property2": "string"
}
}