openapi: 3.1.0 info: title: DoorDash Drive Classic 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/ externalDocs: description: DoorDash Drive Classic API Documentation url: https://developer.doordash.com/en-US/docs/drive_classic/overview/about_drive_classic/ servers: - url: https://openapi.doordash.com/drive/v1 description: Production Server tags: - name: Businesses description: >- Manage business entities that represent legal entities or owners. - name: Deliveries description: >- Create, retrieve, update, cancel, and estimate deliveries using the classic API endpoints. - name: Stores description: >- Manage store locations associated with businesses. security: - bearerAuth: [] paths: /estimates: post: operationId: createDeliveryEstimate summary: Create a delivery estimate description: >- Requests time and fee estimates for a delivery. Can also be used to check if an area is serviced by DoorDash. Time values must be provided in UTC ISO-8601 format. tags: - Deliveries requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EstimateRequest' responses: '200': description: Delivery estimate created successfully content: application/json: schema: $ref: '#/components/schemas/Estimate' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' /deliveries: post: operationId: createDelivery summary: Create a delivery description: >- Creates a new delivery request. DoorDash will assign a Dasher to fulfill the delivery. Time values must be provided in UTC format. The API recommends up to 3 retries with exponential backoff. tags: - Deliveries requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClassicDeliveryRequest' responses: '200': description: Delivery created successfully content: application/json: schema: $ref: '#/components/schemas/ClassicDelivery' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' /deliveries/{external_delivery_id}: get: operationId: getDelivery summary: Get delivery details description: >- Retrieves the current details and status of a delivery using the external delivery ID provided during creation. tags: - Deliveries parameters: - $ref: '#/components/parameters/ExternalDeliveryId' responses: '200': description: Delivery details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ClassicDelivery' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Delivery not found content: application/json: schema: $ref: '#/components/schemas/Error' patch: operationId: updateDelivery summary: Update a delivery description: >- Updates specified attributes of an existing delivery. Updates may be restricted based on the current delivery status. tags: - Deliveries parameters: - $ref: '#/components/parameters/ExternalDeliveryId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClassicDeliveryUpdateRequest' responses: '200': description: Delivery updated successfully content: application/json: schema: $ref: '#/components/schemas/ClassicDelivery' '400': description: Invalid update parameters content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Delivery not found content: application/json: schema: $ref: '#/components/schemas/Error' /deliveries/{external_delivery_id}/cancel: put: operationId: cancelDelivery summary: Cancel a delivery description: >- Cancels an active delivery. Cancellation restrictions apply based on the current delivery status. tags: - Deliveries parameters: - $ref: '#/components/parameters/ExternalDeliveryId' responses: '200': description: Delivery cancelled successfully content: application/json: schema: $ref: '#/components/schemas/ClassicDelivery' '400': description: Delivery cannot be cancelled in current state content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Delivery not found content: application/json: schema: $ref: '#/components/schemas/Error' /businesses: get: operationId: listBusinesses summary: List businesses description: >- Lists all businesses owned by the authenticated developer account. tags: - Businesses responses: '200': description: List of businesses retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/Business' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' post: operationId: createBusiness summary: Create a business description: >- Creates a new Drive business entity representing a legal entity or owner on the DoorDash platform. tags: - Businesses requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BusinessRequest' responses: '200': description: Business created successfully content: application/json: schema: $ref: '#/components/schemas/Business' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' /businesses/{external_business_id}: get: operationId: getBusiness summary: Get business details description: >- Retrieves the details of a specific business by its external ID. tags: - Businesses parameters: - $ref: '#/components/parameters/ExternalBusinessId' responses: '200': description: Business details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/Business' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Business not found content: application/json: schema: $ref: '#/components/schemas/Error' patch: operationId: updateBusiness summary: Update a business description: >- Updates the attributes of an existing business entity. tags: - Businesses parameters: - $ref: '#/components/parameters/ExternalBusinessId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BusinessRequest' responses: '200': description: Business updated successfully content: application/json: schema: $ref: '#/components/schemas/Business' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Business not found content: application/json: schema: $ref: '#/components/schemas/Error' /businesses/{external_business_id}/stores: post: operationId: createStore summary: Create a store description: >- Creates a new store location associated with a business. tags: - Stores parameters: - $ref: '#/components/parameters/ExternalBusinessId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StoreRequest' responses: '200': description: Store created successfully content: application/json: schema: $ref: '#/components/schemas/Store' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' /businesses/{external_business_id}/stores/{external_store_id}: get: operationId: getStore summary: Get store details description: >- Retrieves the details of a specific store within a business. tags: - Stores parameters: - $ref: '#/components/parameters/ExternalBusinessId' - $ref: '#/components/parameters/ExternalStoreId' responses: '200': description: Store details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/Store' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Store or business not found content: application/json: schema: $ref: '#/components/schemas/Error' patch: operationId: updateStore summary: Update a store description: >- Updates the attributes of an existing store location. tags: - Stores parameters: - $ref: '#/components/parameters/ExternalBusinessId' - $ref: '#/components/parameters/ExternalStoreId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StoreRequest' responses: '200': description: Store updated successfully content: application/json: schema: $ref: '#/components/schemas/Store' '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Store or business not found content: application/json: schema: $ref: '#/components/schemas/Error' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: >- JWT token signed with your DoorDash developer credentials. parameters: ExternalDeliveryId: name: external_delivery_id in: path required: true description: >- The unique external delivery ID provided when creating the delivery. schema: type: string ExternalBusinessId: name: external_business_id in: path required: true description: >- The unique external identifier for the business. schema: type: string ExternalStoreId: name: external_store_id in: path required: true description: >- The unique external identifier for the store. schema: type: string schemas: EstimateRequest: type: object required: - pickup_address - dropoff_address properties: pickup_address: type: string description: >- The full street address for the pickup location. dropoff_address: type: string description: >- The full street address for the dropoff location. pickup_time: type: string format: date-time description: >- The requested pickup time in UTC ISO-8601 format. order_value: type: integer description: >- The total value of the order in cents. Estimate: type: object properties: fee: type: integer description: >- The estimated delivery fee in cents. currency: type: string description: >- The currency code for the fee amount. pickup_time: type: string format: date-time description: >- The estimated pickup time. dropoff_time: type: string format: date-time description: >- The estimated dropoff time. delivery_duration: type: integer description: >- The estimated delivery duration in seconds. ClassicDeliveryRequest: type: object required: - external_delivery_id - pickup_address - dropoff_address properties: external_delivery_id: type: string description: >- A unique identifier for this delivery. pickup_address: type: string description: >- The full street address for the pickup location. pickup_business_name: type: string description: >- The business name at the pickup location. pickup_phone_number: type: string description: >- The phone number at the pickup location. pickup_instructions: type: string description: >- Special instructions for the Dasher at pickup. dropoff_address: type: string description: >- The full street address for the dropoff location. dropoff_business_name: type: string description: >- The business name at the dropoff location. dropoff_phone_number: type: string description: >- The phone number at the dropoff location. dropoff_instructions: type: string description: >- Special instructions for the Dasher at dropoff. dropoff_contact_given_name: type: string description: >- The first name of the dropoff contact. dropoff_contact_family_name: type: string description: >- The last name of the dropoff contact. order_value: type: integer description: >- The total value of the order in cents. tip: type: integer description: >- The tip amount in cents. pickup_time: type: string format: date-time description: >- The requested pickup time in UTC. dropoff_time: type: string format: date-time description: >- The requested dropoff time in UTC. contains_alcohol: type: boolean description: >- Whether the order contains alcohol. external_business_id: type: string description: >- The external business ID to associate with this delivery. external_store_id: type: string description: >- The external store ID to associate with this delivery. ClassicDeliveryUpdateRequest: type: object properties: tip: type: integer description: >- Updated tip amount in cents. dropoff_instructions: type: string description: >- Updated dropoff instructions. dropoff_phone_number: type: string description: >- Updated dropoff phone number. ClassicDelivery: type: object properties: external_delivery_id: type: string description: >- The unique external delivery ID. delivery_status: type: string description: >- The current status of the delivery. enum: - created - confirmed - enroute_to_pickup - arrived_at_pickup - picked_up - enroute_to_dropoff - arrived_at_dropoff - delivered - cancelled - returned fee: type: integer description: >- The delivery fee in cents. currency: type: string description: >- The currency code. tip: type: integer description: >- The tip amount in cents. pickup_address: type: string description: >- The pickup address. dropoff_address: type: string description: >- The dropoff address. pickup_time_estimated: type: string format: date-time description: >- The estimated pickup time. pickup_time_actual: type: string format: date-time description: >- The actual pickup time. dropoff_time_estimated: type: string format: date-time description: >- The estimated dropoff time. dropoff_time_actual: type: string format: date-time description: >- The actual dropoff time. dasher_id: type: integer description: >- The assigned Dasher's ID. dasher_name: type: string description: >- The assigned Dasher's first name. tracking_url: type: string format: uri description: >- A URL for tracking the delivery. created_at: type: string format: date-time description: >- When the delivery was created. updated_at: type: string format: date-time description: >- When the delivery was last updated. Business: type: object properties: external_business_id: type: string description: >- The unique external identifier for the business. name: type: string description: >- The name of the business. description: type: string description: >- A description of the business. BusinessRequest: type: object required: - external_business_id - name properties: external_business_id: type: string description: >- A unique external identifier for the business. name: type: string description: >- The name of the business. description: type: string description: >- A description of the business. Store: type: object properties: external_business_id: type: string description: >- The external business ID this store belongs to. external_store_id: type: string description: >- The unique external identifier for the store. name: type: string description: >- The name of the store. phone_number: type: string description: >- The phone number for the store. address: type: string description: >- The full street address of the store. StoreRequest: type: object required: - external_store_id - name - address properties: external_store_id: type: string description: >- A unique external identifier for the store. name: type: string description: >- The name of the store. phone_number: type: string description: >- The phone number for the store. address: type: string description: >- The full street address of the store. Error: type: object properties: message: type: string description: >- A human-readable error message. code: type: string description: >- A machine-readable error code. field_errors: type: array description: >- A list of field-level validation errors. items: type: object properties: field: type: string description: >- The field with the error. error: type: string description: >- The error message.