doordash Menus API

Create, update, and manage menus for stores on the DoorDash marketplace.

Documentation

Specifications

Code Examples

Other Resources

OpenAPI Specification

doordash-menus-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: DoorDash Drive Classic Addresses Menus API
  description: The DoorDash Drive Classic API is the legacy version of the Drive API, designed for large enterprises and middleware providers who require extensive configuration and customizability for their delivery integrations. It provides endpoints for managing businesses, stores, and deliveries through DoorDash's logistics platform. While still supported, DoorDash recommends new integrations use the newer Drive API (v2) instead.
  version: '1.0'
  contact:
    name: DoorDash Developer Support
    url: https://developer.doordash.com/en-US/
  termsOfService: https://www.doordash.com/terms/
servers:
- url: https://openapi.doordash.com/drive/v1
  description: Production Server
security:
- bearerAuth: []
tags:
- name: Menus
  description: Create, update, and manage menus for stores on the DoorDash marketplace.
paths:
  /menus:
    post:
      operationId: createMenu
      summary: DoorDash Create a Menu
      description: Uploads a complete menu for a store. Menu creation is processed asynchronously. A successful response indicates the request was received. A webhook notification is sent when processing completes or fails.
      tags:
      - Menus
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MenuRequest'
            examples:
              CreateMenuRequestExample:
                summary: Default createMenu request
                x-microcks-default: true
                value:
                  store_id: D-12345
                  categories:
                  - id: {}
                    name: {}
                    description: {}
                    sort_id: {}
                    items: {}
      responses:
        '200':
          description: Menu creation request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MenuResponse'
              examples:
                CreateMenu200Example:
                  summary: Default createMenu 200 response
                  x-microcks-default: true
                  value:
                    menu_id: D-12345
                    status: received
        '400':
          description: Invalid menu data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                CreateMenu400Example:
                  summary: Default createMenu 400 response
                  x-microcks-default: true
                  value:
                    message: example
                    code: ABC123
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                CreateMenu401Example:
                  summary: Default createMenu 401 response
                  x-microcks-default: true
                  value:
                    message: example
                    code: ABC123
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /menus/{menu_id}:
    patch:
      operationId: updateMenu
      summary: DoorDash Update a Menu
      description: Updates an existing menu. Uses the same validation as menu creation. Processing is asynchronous with webhook notification upon completion.
      tags:
      - Menus
      parameters:
      - $ref: '#/components/parameters/MenuId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MenuRequest'
            examples:
              UpdateMenuRequestExample:
                summary: Default updateMenu request
                x-microcks-default: true
                value:
                  store_id: D-12345
                  categories:
                  - id: {}
                    name: {}
                    description: {}
                    sort_id: {}
                    items: {}
      responses:
        '200':
          description: Menu update request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MenuResponse'
              examples:
                UpdateMenu200Example:
                  summary: Default updateMenu 200 response
                  x-microcks-default: true
                  value:
                    menu_id: D-12345
                    status: received
        '400':
          description: Invalid menu data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                UpdateMenu400Example:
                  summary: Default updateMenu 400 response
                  x-microcks-default: true
                  value:
                    message: example
                    code: ABC123
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                UpdateMenu401Example:
                  summary: Default updateMenu 401 response
                  x-microcks-default: true
                  value:
                    message: example
                    code: ABC123
        '404':
          description: Menu not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                UpdateMenu404Example:
                  summary: Default updateMenu 404 response
                  x-microcks-default: true
                  value:
                    message: example
                    code: ABC123
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    MenuOption:
      type: object
      required:
      - id
      - name
      - price
      properties:
        id:
          type: string
          description: The unique identifier for this option.
          example: D-12345
        name:
          type: string
          description: The display name of the option.
          example: Acme Pickup Store
        price:
          type: integer
          description: The additional price for this option in cents.
          example: 42
        is_active:
          type: boolean
          description: Whether the option is currently available.
          example: true
    MenuItem:
      type: object
      required:
      - id
      - name
      - price
      properties:
        id:
          type: string
          description: The merchant-supplied item identifier.
          example: D-12345
        name:
          type: string
          description: The display name of the item.
          example: Acme Pickup Store
        description:
          type: string
          description: A description of the item.
          example: Leave at the front desk.
        price:
          type: integer
          description: The item price in cents.
          example: 42
        image_url:
          type: string
          format: uri
          description: A URL to an image of the item.
          example: https://example.com/path/abc123
        is_active:
          type: boolean
          description: Whether the item is currently available for ordering.
          example: true
        sort_id:
          type: integer
          description: The sort order for this item within its category.
          example: 42
        option_groups:
          type: array
          description: Option groups (modifiers) for this item.
          items:
            $ref: '#/components/schemas/OptionGroup'
    Error:
      type: object
      properties:
        message:
          type: string
          description: A human-readable error message.
          example: example
        code:
          type: string
          description: A machine-readable error code.
          example: ABC123
    OptionGroup:
      type: object
      required:
      - id
      - name
      - options
      properties:
        id:
          type: string
          description: The unique identifier for this option group.
          example: D-12345
        name:
          type: string
          description: The display name of the option group.
          example: Acme Pickup Store
        min_selections:
          type: integer
          description: The minimum number of options that must be selected.
          minimum: 0
          example: 0
        max_selections:
          type: integer
          description: The maximum number of options that can be selected.
          minimum: 1
          example: 1
        options:
          type: array
          description: The available options in this group.
          items:
            $ref: '#/components/schemas/MenuOption'
    MenuRequest:
      type: object
      required:
      - store_id
      - categories
      properties:
        store_id:
          type: string
          description: The merchant-supplied store identifier.
          example: D-12345
        categories:
          type: array
          description: The menu categories containing items.
          items:
            $ref: '#/components/schemas/MenuCategory'
    MenuCategory:
      type: object
      required:
      - id
      - name
      - items
      properties:
        id:
          type: string
          description: The unique identifier for this category.
          example: D-12345
        name:
          type: string
          description: The display name of the category.
          example: Acme Pickup Store
        description:
          type: string
          description: A description of the category.
          example: Leave at the front desk.
        sort_id:
          type: integer
          description: The sort order for this category.
          example: 42
        items:
          type: array
          description: The items in this category.
          items:
            $ref: '#/components/schemas/MenuItem'
    MenuResponse:
      type: object
      properties:
        menu_id:
          type: string
          description: The unique identifier for the menu request.
          example: D-12345
        status:
          type: string
          description: The processing status of the menu request.
          enum:
          - received
          - processing
          - completed
          - failed
          example: received
  parameters:
    MenuId:
      name: menu_id
      in: path
      required: true
      description: The unique identifier for the menu.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token signed with your DoorDash developer credentials.
externalDocs:
  description: DoorDash Drive Classic API Documentation
  url: https://developer.doordash.com/en-US/docs/drive_classic/overview/about_drive_classic/