openapi: 3.2.0 info: title: Doordash Menu Endpoints API version: 1.0.0 x-logo: url: https://cdn.doordash.com/static/img/merchant/logo-red@3x.png backgroundColor: '#FFFFFF' altText: Doordash Marketplace href: https://developer.doordash.com/ description: 'Operations tagged Menu Endpoints across 2 of this provider''s published API definitions: doordash-marketplace-legacy-openapi.yml, doordash-marketplace-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://pointofsale.doordash.com - url: https://openapi.doordash.com/marketplace tags: - name: Menu Endpoints x-displayName: Menu Endpoints description: Endpoints for updating and creating menus paths: /api/v1/menus: post: tags: - Menu Endpoints summary: Create Menu operationId: menuCreate security: - Authorization: [] parameters: - $ref: '#/components/parameters/UserAgent' - $ref: '#/components/parameters/Authorization' requestBody: content: application/json: schema: $ref: '#/components/schemas/MenuCreateUpdateRequest' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/MenuCreateUpdateResponse' '400': description: Bad Request '403': description: Forbidden '404': description: Not Found '422': description: Request Entity Too Large '429': description: Request is rate limited '500': description: Internal Server Error x-codegen-request-body-name: body servers: - url: https://pointofsale.doordash.com /api/v1/menus/{id}: patch: tags: - Menu Endpoints summary: Update Menu operationId: menuUpdate security: - Authorization: [] parameters: - $ref: '#/components/parameters/MenuId' - $ref: '#/components/parameters/UserAgent' - $ref: '#/components/parameters/Authorization' requestBody: content: application/json: schema: $ref: '#/components/schemas/MenuCreateUpdateRequest' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/MenuCreateUpdateResponse' '400': description: Bad Request '403': description: Forbidden '404': description: Not Found '422': description: Request Entity Too Large '429': description: Request is rate limited '500': description: Internal Server Error x-codegen-request-body-name: body servers: - url: https://pointofsale.doordash.com components: schemas: DishInfo: type: object properties: nutritional_info: $ref: '#/components/schemas/NutritionalInfo' classification_info: $ref: '#/components/schemas/ClassificationInfo' ItemExtra: type: object required: - name properties: name: type: string description: the given name of this instance merchant_supplied_id: type: string description: ID as it's stored in your system active: type: boolean default: true sort_id: type: integer min_num_options: type: integer max_num_options: type: integer num_free_options: type: integer min_option_choice_quantity: type: integer max_option_choice_quantity: type: integer min_aggregate_options_quantity: type: integer max_aggregate_options_quantity: type: integer options: type: array items: $ref: '#/components/schemas/ItemExtraOption' NestedL2ItemExtraOption: type: object required: - name - price properties: name: type: string description: the given name of this instance description: type: string merchant_supplied_id: type: string description: ID as it's stored in your system active: type: boolean default: true price: type: integer base_price: type: integer default: type: boolean sort_id: type: integer tax_rate: type: string tax_category: type: string item_extra_option_special_hours: type: array items: $ref: '#/components/schemas/ItemSpecialHour' operation_context: type: array items: type: string quantity_info: type: object $ref: '#/components/schemas/QuantityInfo' dish_info: type: object $ref: '#/components/schemas/DishInfo' NutritionalInfo: type: object properties: calorific_info: $ref: '#/components/schemas/CalorificInfo' Store: type: object required: - merchant_supplied_id - provider_type properties: merchant_supplied_id: type: string example: 1dfa934a-190c-43a9-b2e0-449e5b8cccde provider_type: type: string example: positouch ClassificationInfo: type: object properties: has_side: type: boolean is_hot: type: boolean is_entree: type: boolean has_alcoholic_items: type: boolean service_types: type: array items: type: string classification_tags: type: array items: type: string enum: - TAG_KEY_DIETARY_VEGETARIAN - TAG_KEY_DIETARY_VEGAN - TAG_KEY_DIETARY_GLUTEN_FREE ItemExtraOption: type: object required: - name - price properties: name: type: string description: the given name of this instance merchant_supplied_id: type: string description: ID as it's stored in your system active: type: boolean default: true price: type: integer base_price: type: integer default: type: boolean sort_id: type: integer tax_rate: type: string tax_category: type: string item_extra_option_special_hours: type: array items: $ref: '#/components/schemas/ItemSpecialHour' operation_context: type: array description: Not yet available items: type: string quantity_info: type: object $ref: '#/components/schemas/QuantityInfo' dish_info: type: object $ref: '#/components/schemas/DishInfo' extras: type: array items: $ref: '#/components/schemas/NestedItemExtra' MenuCreateUpdateRequest: type: object required: - store - open_hours - special_hours properties: reference: type: string store: type: object $ref: '#/components/schemas/Store' open_hours: type: array items: $ref: '#/components/schemas/StoreOpenHour' special_hours: type: array items: $ref: '#/components/schemas/StoreSpecialHour' menu: type: object $ref: '#/components/schemas/Menu' QuantityInfo: type: object properties: default_quantity: type: integer charge_above: type: integer Item: type: object required: - name - merchant_supplied_id - price properties: name: type: string description: the given name of this instance description: type: string merchant_supplied_id: type: string description: ID as it's stored in your system active: type: boolean default: true is_alcohol: type: boolean is_bike_friendly: type: boolean sort_id: type: integer price: type: integer base_price: type: integer item_special_hours: type: array items: $ref: '#/components/schemas/ItemSpecialHour' extras: type: array items: $ref: '#/components/schemas/ItemExtra' tax_rate: type: string tax_category: type: string original_image_url: type: string description: Item image URL in JPG|JPEG|PNG format, min resolution (1600w x 800h), aspect ratio 16:9 and max size 2MB. Initial image ingestion will go through approval process operation_context: type: array description: Not yet available items: type: string dish_info: type: object $ref: '#/components/schemas/DishInfo' NestedItemExtraOption: type: object required: - name - price properties: name: type: string description: the given name of this instance description: type: string merchant_supplied_id: type: string description: ID as it's stored in your system active: type: boolean default: true price: type: integer base_price: type: integer default: type: boolean sort_id: type: integer tax_rate: type: string tax_category: type: string item_extra_option_special_hours: type: array items: $ref: '#/components/schemas/ItemSpecialHour' operation_context: type: array description: Not yet available items: type: string quantity_info: type: object $ref: '#/components/schemas/QuantityInfo' dish_info: type: object $ref: '#/components/schemas/DishInfo' extras: type: array items: $ref: '#/components/schemas/NestedL2ItemExtra' CalorificInfo: type: object properties: display_type: type: string lower_range: type: integer higher_range: type: integer NestedItemExtra: type: object required: - name properties: name: type: string description: the given name of this instance description: type: string merchant_supplied_id: type: string description: ID as it's stored in your system active: type: boolean default: true sort_id: type: integer min_num_options: type: integer max_num_options: type: integer num_free_options: type: integer min_option_choice_quantity: type: integer max_option_choice_quantity: type: integer min_aggregate_options_quantity: type: integer max_aggregate_options_quantity: type: integer options: type: array items: $ref: '#/components/schemas/NestedItemExtraOption' StoreSpecialHour: type: object properties: date: type: string example: '2021-12-11' closed: type: boolean description: Indicates if store is closed or opened at this special hour example: true start_time: type: string description: Start time in format HH:MM:SS example: '13:00:00' end_time: type: string description: End time in format HH:MM:SS example: '18:00:00' NestedL2ItemExtra: type: object required: - name properties: name: type: string description: the given name of this instance description: type: string merchant_supplied_id: type: string description: ID as it's stored in your system active: type: boolean default: true sort_id: type: integer min_num_options: type: integer max_num_options: type: integer num_free_options: type: integer min_option_choice_quantity: type: integer max_option_choice_quantity: type: integer min_aggregate_options_quantity: type: integer max_aggregate_options_quantity: type: integer options: type: array items: $ref: '#/components/schemas/NestedL2ItemExtraOption' ItemSpecialHour: type: object properties: day_index: $ref: '#/components/schemas/DayIndex' start_time: type: string description: Start time in format HH:MM:SS example: '13:00:00' end_time: type: string description: End time in format HH:MM:SS example: '18:00:00' start_date: type: string end_date: type: string Menu: type: object required: - name properties: name: description: the given name of this instance type: string subtitle: type: string merchant_supplied_id: description: ID as it's stored in your system type: string active: type: boolean experience: description: (do not use this field for marketplace integration) optional field used only for Voice experience type: string enum: - voice categories: type: array items: $ref: '#/components/schemas/MenuCategory' MenuCreateUpdateResponse: type: object properties: reference: type: UUID description: menu job reference status: type: string description: JobStatus.IN_PROGRESS StoreOpenHour: type: object properties: day_index: type: string enum: - MON - TUE - WED - THU - FRI - SAT - SUN example: MON start_time: type: string description: Start time in format HH:MM:SS example: '13:00:00' end_time: type: string description: End time in format HH:MM:SS example: '18:00:00' DayIndex: type: string enum: - MON - TUE - WED - THU - FRI - SAT - SUN example: MON MenuCategory: type: object required: - name properties: name: type: string description: the given name of this instance subtitle: type: string merchant_supplied_id: type: string description: ID as it's stored in your system active: type: boolean default: true sort_id: type: integer items: type: array items: $ref: '#/components/schemas/Item' Item_2: type: object required: - name - merchant_supplied_id - price properties: name: type: string description: the given name of this instance description: type: string merchant_supplied_id: type: string description: ID as it's stored in your system active: type: boolean default: true is_alcohol: type: boolean is_bike_friendly: type: boolean sort_id: type: integer price: type: integer base_price: type: integer item_special_hours: type: array items: $ref: '#/components/schemas/ItemSpecialHour' extras: type: array items: $ref: '#/components/schemas/ItemExtra' tax_rate: type: string tax_category: type: string original_image_url: type: string description: Item image URL in JPG|JPEG|PNG format, min resolution (1400w x 800h), aspect ratio 16:9 and max size 2MB. Initial image ingestion will go through approval process operation_context: type: array description: Not yet available items: type: string dish_info: type: object $ref: '#/components/schemas/DishInfo' MenuCreateUpdateResponse_2: type: object properties: reference: type: UUID description: menu job reference ID status: type: string description: JobStatus.IN_PROGRESS parameters: UserAgent: name: user_agent in: header description: Your company identity. Format is `[name]/[version]`. like `Sicom/1.0` style: simple explode: false schema: type: string Authorization: name: authorization in: header description: The access token. Format is `[type] [credentials]`. like `Bearer $101$gkeikcha3` style: simple explode: false schema: type: string MenuId: in: path name: id required: true schema: type: string description: A Menu UUID securitySchemes: Authorization: type: apiKey name: Authorization in: header x-refined-from: - doordash-marketplace-legacy-openapi.yml - doordash-marketplace-openapi.yml