openapi: 3.2.0 info: title: 'DoorDash Checkout API Interface Https: API' x-logo: url: https://doordash-static.s3-us-west-2.amazonaws.com/media/drive/drive-logo.png backgroundColor: '#FFFFFF' altText: Doordash Drive href: https://www.doordash.com/drive/portal/discover version: 0.1.6 contact: name: Drive API Support email: drive-api-support@doordash.com description: 'Last updated: Apr 20, 2021 ### Release Notes #### v0.1.8 (effective Apr 20, 2021) - Clean up Introduction section - Create Order Session - Update Extra.tax_excluded_price to now allow negative values - Update Option.tax_excluded_price to now allow negative values - Add field_errors.code field - Remove unused scheduled_delivery_time field - Get Checkout Page - Remove content body for 400 bad request (incorrect content) #### v0.1.7 (effective Mar 10, 2021) - Added first_name and last_name on…' tags: - name: 'Https:' paths: https://api.doordash.com/drive/v1/checkout: post: summary: Create Order Session description: Create the order session by passing in order details to receive a order_session_id, which is used to open the Checkout Page webview. operationId: CreateCheckoutPost parameters: [] requestBody: content: application/json: schema: required: - consumer - cart - currency - delivery_address - external_store_id type: object properties: cart: $ref: '#/components/schemas/Cart' currency: type: string enum: - USD - AUD - CAD - JPY description: Type of currency of the payment. example: USD consumer: $ref: '#/components/schemas/Consumer' delivery_address: $ref: '#/components/schemas/DeliveryAddress' external_order_id: type: string description: Merchant's unique identifier for the order. example: aer5-ufc9-7865-45ng8-iuywq external_store_id: type: string description: Merchant's unique identifier for a store that this delivery is for. example: '148767394' dropoff_preference: $ref: '#/components/schemas/DropoffPreference' required: true description: Request body for checkout endpoint responses: '200': description: Checkout token returned with the given parameters headers: {} content: application/json: schema: $ref: '#/components/schemas/OrderSessionIdResponse' '400': description: Bad request headers: {} content: application/json: schema: $ref: '#/components/schemas/ValidationFieldErrorResponse' 5XX: description: '- Please retry all 50x response status codes as the error could be transient. We recommend up to 3 retries with some exponential backoff delay between requests. - When providing a time to any of the below APIs (i.e. `scheduled_delivery_time`), the format must be UTC. ' deprecated: false security: - Drive API Key Authentication: [] tags: - 'Https:' https://order.online/embed/v1/checkout/: get: summary: Get Checkout Page description: Get .html page to open in webview operationId: GetCheckoutPage parameters: - name: order_session_id in: query description: UUID of the order session that was created via the Create Checkout call. required: true style: simple explode: false schema: type: string responses: '200': description: HTML of webview headers: {} content: application/html: schema: $ref: '#/components/schemas/CheckoutPageResponse' '400': description: Bad request headers: {} 5XX: description: '- Please retry all 50x response status codes as the error could be transient. We recommend up to 3 retries with some exponential backoff delay between requests. ' deprecated: false security: - Drive API Key Authentication: [] tags: - 'Https:' components: schemas: Item: title: Item description: Item object required: - merchant_supplied_id - quantity - tax_excluded_price - extras type: object properties: merchant_supplied_id: type: string description: Merchant's id for the Item. example: DELUXE_AMERICAN quantity: type: integer format: int32 example: 3 description: Quantity of Item being ordered. tax_excluded_price: type: integer format: int64 example: 899 description: Tax-excluded price of the Item in cents. Must be 0 or greater. special_instructions: type: string example: Please add any sauces to the side. description: Any special instructions for this item, typically submitted by the consumer. extras: $ref: '#/components/schemas/Extras' FieldError: title: FieldError type: object description: Single field that is believed to have caused the error. required: - field properties: code: type: - string - 'null' description: error code that categorizes the issue causing the error example: invalid_monetary_field field: type: string description: Input field that has been believed to have caused the error. example: tax_excluded_price input_value: type: - string - 'null' description: Value of the input field that is causing the error. example: -10 message: type: - string - 'null' description: Any additional messaging around this field causing the error. example: item.tax_excluded_price must be greater than or equal to 0. Make sure this field is non-negative. DropoffPreference: title: null description: Details on how Dasher should dropoff to the consumer; consumer preference for their delivery getting dropped off. type: object properties: option: description: Method of dropoff. type: string enum: - LEAVE_AT_DOOR - HAND_TO_CONSUMER example: LEAVE_AT_DOOR dasher_instructions: description: Any additional instructions for Dasher to follow when dropping off the delivery. type: string example: This is a gated community. Just head over to the gate entrance and on the left there should be a mail package area where you can drop off the order. Thanks! Items: title: An array of Item objects for an order. description: An array of Item objects for an order. There must be at least one item for a valid order. type: array items: $ref: '#/components/schemas/Item' Options: title: null description: An array of Option objects for an order. If there are no Options, set this field to an empty array. type: array items: $ref: '#/components/schemas/Option' Extras: title: An array of Extra objects for an order. description: An array of Extra objects for an order. If there are no Extras, set this field to an empty array. type: array items: $ref: '#/components/schemas/Extra' Option: title: null description: An array of Option objects of an Extra required: - merchant_supplied_id - quantity - tax_excluded_price type: object properties: merchant_supplied_id: type: string description: Merchant's id for the Item Extra Option. example: ADD_KETCHUP quantity: type: integer format: int32 example: 1 description: Quantity of Option being ordered. tax_excluded_price: type: integer format: int64 example: 50 description: Tax-excluded price of the Item Extra Option in cents. extras: $ref: '#/components/schemas/Extras' ValidationFieldErrorResponse: title: ValidationFieldErrorResponse type: - object - 'null' description: The response returned when validation for input field errors are encountered. readOnly: true properties: errors: $ref: '#/components/schemas/ErrorResponse' ErrorResponse: title: ErrorResponse description: Error response captured when attempting to process the request. type: object required: - code - summary - message - field_errors properties: code: type: string description: Error code/category of error encountered. example: INVALID_MONETARY_FIELD summary: type: string description: 1-line summary of error that occurred. example: Tax-excluded price must not be negative. message: type: string description: Any additional information e.g. suggestions on how to resolve error. example: Tax-excluded price must not be negative. Please ensure all prices are 0 or greater (in cents). field_errors: $ref: '#/components/schemas/FieldErrors' Cart: title: The consumer's cart containing their order. description: An object that represents the cart of order items and which menu type / category the order belongs to. required: - category_name - items type: object properties: category_name: type: string description: Category name / menu type e.g. ALLDAY, BREAKFAST, LUNCH, DINNER, etc. example: BREAKFAST items: $ref: '#/components/schemas/Items' OrderSessionIdResponse: title: Order Session ID type: object properties: order_session_id: type: string example: 24ac000c-3934-11eb-adc1-0242ac120002 description: Order Session ID to open checkout in webview Extra: title: Item extra description: Item extra e.g. Choice of Sauce, Choice of toppings, etc. - merchant_supplied_id - quantity - tax_excluded_price - options type: object properties: merchant_supplied_id: type: string description: Merchant's id for the Item Extra. example: BREAKFAST_CONDIMENTS quantity: type: integer format: int32 example: 0 description: Quantity of Extra being ordered. tax_excluded_price: type: integer format: int64 example: 0 description: Tax-excluded price of the Item Extra in cents. options: $ref: '#/components/schemas/Options' FieldErrors: title: Field Errors description: List of field errors detected to have caused the error. type: array items: $ref: '#/components/schemas/FieldError' CheckoutPageResponse: title: Webview HTML description: HTML of checkout screen to be opened in CFA webview type: .html page DeliveryAddress: title: The address where the order needs to be dropped off. description: The address where the order needs to be dropped off. required: - street - city - state - zip_code - country type: object properties: street: type: string description: Street for the delivery address example: 901 Market Street unit: type: - string - 'null' description: Suite, Apartment or Unit number of the address. example: 'Suite #600' city: type: string description: City for the delivery address. example: San Francisco state: type: string description: State for the delivery address. example: California zip_code: type: string description: Zipcode for the address. example: '94105' country: type: string description: Country of the address. example: USA Consumer: title: Consumer description: Consumer information. required: - external_consumer_id - email - phone_number - address - first_name - last_name type: object properties: external_consumer_id: type: string description: Merchant's identifier for consumer. example: '12345678' email: type: string description: The email of the consumer. example: tonyxu22@doordash.com phone_number: type: string description: Phone number of the consumer. example: '+16505555555' address: type: string description: Formatted address string. example: 12345 Oakview Drive, San Francisco, CA 94108 first_name: type: string description: 'Given/first name of the customer creating the delivery; cannot contain ~, `, @, #, $, %, ^, &, *, +, =, ?, ;, [, {, ], }' example: Jane last_name: type: string description: 'Family/last name of the customer creating the delivery; cannot contain ~, `, @, #, $, %, ^, &, *, +, =, ?, ;, [, {, ], }' example: Goodall securitySchemes: Drive_API_Key_Authentication: type: apiKey scheme: bearer in: header name: Authorization description: We will be using stateful token based API keys to authenticate clients, passed in the 'Authorization' header as 'Bearer {API_KEY}'.