openapi: 3.2.0 info: title: Drive API Specification Refunds 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://developer.doordash.com/ version: 0.0.3 description: 'Last updated: September 21, 2022 ### Release Notes ### 0.0.3 (internal release) - update RefundResult code selection ### 0.0.2 (internal release) - add unsupported_payment_method and blocked rejected refund result code ### 0.0.1 (internal release) - initial version - added process refunds API' servers: - url: https://openapi.doordash.com variables: {} tags: - name: Refunds paths: /drive/v2/deliveries/{external_delivery_id}/refunds: post: summary: Process a Refund tags: - Refunds description: Process a refund for an order. The API will determine whether the refund should be granted or rejected. operationId: ProcessRefund parameters: - $ref: '#/components/parameters/ExternalDeliveryIdPath' requestBody: content: application/json: schema: $ref: '#/components/schemas/RefundRequest' required: true responses: '200': description: Ok headers: {} content: application/json: schema: $ref: '#/components/schemas/RefundResult' '400': description: Request Validation Failed headers: {} content: application/json: schema: $ref: '#/components/schemas/validation_field_error' '403': description: Operation is not authorized headers: {} content: application/json: schema: $ref: '#/components/schemas/authorization_error' '404': description: Unknown delivery ID headers: {} content: application/json: schema: $ref: '#/components/schemas/unknown_delivery_error' '409': description: Duplicate refund headers: {} content: application/json: schema: $ref: '#/components/schemas/DuplicateRefundResult' '422': description: Refund rejected headers: {} content: application/json: schema: $ref: '#/components/schemas/RejectedRefundResult' '500': description: Internal service failure, please try again later content: application/json: schema: $ref: '#/components/schemas/server_fault' deprecated: false components: parameters: ExternalDeliveryIdPath: name: external_delivery_id in: path description: Unique (per developer) ID of the delivery. required: true style: simple explode: false schema: type: string pattern: /[a-zA-Z0-9-._~]+/ description: Unique ID generated by the caller for the delivery. example: D-1763 schemas: unknown_delivery_error: x-error: true type: object description: External delivery ID was not found. required: - code - message - external_delivery_id properties: code: type: string enum: - unknown_delivery_id message: type: string example: External delivery ID was not found external_delivery_id: $ref: '#/components/schemas/ExternalDeliveryId' RefundReason: type: string description: The reason for the refund. enum: - cancelled_order - delivered_late - delivered_early - never_delivered - entire_order_wrong - missing_main - missing_side - incorrect_items - poor_delivery_experience RejectedRefundResult: title: Rejected Refund Result description: Details of the rejected refund. type: object allOf: - $ref: '#/components/schemas/BaseRefundResult' - type: object properties: code: type: string description: Static code for the refund decision. enum: - rejected - refund_limit_passed - could_not_determine - unsupported_payment_method - blocked required: - code RefundResult: title: Refund Result description: Details of the processed refund request. type: object allOf: - $ref: '#/components/schemas/BaseRefundResult' - type: object properties: code: type: string description: Static code for the refund decision. enum: - doordash_cancelled - order_delivered_late - order_delivered_early - dasher_at_fault - doordash_at_fault tip_refund: type: integer description: Tip amount refunded in smallest unit. i.e. For USD, 300 equals $3.00 order_value_refund: type: integer description: Order value amount refunded in smallest unit. i.e. For USD, 1099 equals $10.99 delivery_fee_refund: type: integer description: Delivery fee amount refunded in smallest unit. i.e. For USD, 199 equals $1.99 status: $ref: '#/components/schemas/Status' required: - code - tip_refund - order_value_refund - delivery_fee_refund - status Status: type: string description: Overall result of what happened with the processed refund. enum: - partial_refund - full_refund ExternalDeliveryId: type: string pattern: /[a-zA-Z0-9-._~]+/ description: Unique ID generated by the caller for the delivery. example: D-1763 RefundRequest: title: Refund Request description: Details of a refund request. type: object properties: refund_reason: $ref: '#/components/schemas/RefundReason' required: - refund_reason validation_field_error: x-error: true title: ValidationFieldError type: object description: One or more request values couldn't be validated. required: - code - message - field_errors properties: code: type: string enum: - validation_error message: type: string description: One or more request values couldn't be validated. example: One or more request values couldn't be validated. field_errors: type: array description: The list of fields whose values couldn't be validated. See more [error examples](https://developer.doordash.com/en-US/docs/drive/reference/errors) items: $ref: '#/components/schemas/FieldError' readOnly: true components: schemas: FieldError: title: FieldError type: object description: A field whose value couldn't be validated. required: - field - error properties: field: type: string description: Name of the field whose value couldn't be validated. example: pickup_phone_number error: type: string description: The error that was encountered when validating the field's value. example: Invalid phone number format authorization_error: x-error: true type: object description: 'Authorization error: the credentials provided with the request don''t work for the requested operation' required: - code - message properties: code: type: string enum: - authorization_error default: authorization_error message: type: string example: 'Authorization error: the credentials provided with the request don''t work for the requested operation' default: 'Authorization error: the credentials provided with the request don''t work for the requested operation' server_fault: x-error: true type: object description: Internal service failure, please try again later. required: - code - message properties: code: type: string enum: - service_fault default: service_fault message: type: string example: Internal service failure, please try again later. default: Internal service failure, please try again later. BaseRefundResult: title: Refund Result Base description: Common fields in all refund results. type: object properties: refund_reason: $ref: '#/components/schemas/RefundReason' message: type: string description: Human readable string for the explanation of the refund decision. required: - refund_reason - message FieldError: title: FieldError type: object description: A field whose value couldn't be validated. required: - field - error properties: field: type: string description: Name of the field whose value couldn't be validated. example: pickup_phone_number error: type: string description: The error that was encountered when validating the field's value. example: Invalid phone number format DuplicateRefundResult: title: Duplicate Refund Result description: Details of the duplicate refund. type: object allOf: - $ref: '#/components/schemas/BaseRefundResult' - type: object properties: code: type: string description: Static code for the refund decision. enum: - already_refunded required: - code