openapi: 3.2.0 info: title: Drop Shipment Cancellation API version: 1.0.0 contact: name: Fulfillment description: '## Introduction The Drop Ship is used to communicate to the client once an order has been shipped or cancelled from OptiTurn, to close an order within the client''s OMS. ### Post Confirmation: The Drop Shipment Confirmation API is used to post a shipment confirmation for the orders shipped so that the client can close the order on their end. Optoro can POST a shipment confirmation to the client endpoint. ### Post Cancellation: The Drop Shipment Cancellation API is used to post a cancelled order to a client endpoint. An order could be rejected or cancelled in the warehouse, due to the inventory not being found or it being damaged. ### Post Partial Cancellation: The Drop Shipment Partial Cancellation API is used to post a partially cancelled order to a client endpoint. An order item could be cancelled in the warehouse, due to the inventory is not being found or damaged. ## Failure Handling

When Optoro receives a 401 HTTP status, Optoro will request a new Authentication Token from the client''s services and retry the request.

When Optoro receives any other error (as described above and identified by a 4xx (not 401) or 5xx range http status code) Optoro will retry five times with the same message. The retries will happen at an exponential backoff cadence in order not to overload machines. If the failure persists, the message will be stored in a failure queue and Optoro will have a technical contact person reach out to client tech support to report a problem. When the problem has been resolved, Optoro can manually retry failed requests.

For Drop Shipment acknowledgement, all errors are handled the same since this is not in a user facing flow. However, the differentiation of status codes will help Optoro when reporting an issue.

' servers: - url: https://developer.optoro.com tags: - name: Drop Shipment Cancellation paths: /drop_shipment_cancellation: post: summary: POST a Drop Shipment Cancellation operationId: drop_shipment_cancellation description: 'Client endpoint to which Drop Shipment Cancellation data is posted to.
This endpoint along with any authentication mechanisms needed must be communicated to client''s account manager. ' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DropShipmentCancellation' responses: '200': description: Success. Optoro recommends client APIs respond with a JSON-structured object. This is used for debugging purposes only so this guidance is technically optional. content: application/json: schema: type: object properties: message: type: string example: Success '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '422': description: Validation failure content: application/json: schema: $ref: '#/components/schemas/ValidationFailure' '500': $ref: '#/components/responses/InternalServerError' '502': $ref: '#/components/responses/ServerUnavailable' tags: - Drop Shipment Cancellation components: responses: InternalServerError: description: Internal Server Error Unauthorized: description: Not Authorized. A new authentication token will be requested from the client's services and the request will be retried. ServerUnavailable: description: Client Server Unavailable BadRequest: description: Bad Request schemas: ValidationFailure: type: object required: - message - errors properties: message: type: string description: Summary of the error(s). errors: type: array description: Contains one or more error objects. items: type: object required: - field - code description: Describes a single validation failure. properties: field: type: string description: JSON path of the field that failed validation. code: type: string description: Categorization of validation failure. Defaults to 'invalid'. enum: - missing_field - invalid_type - invalid DropShipmentCancellation: type: object description: Drop Shipment Cancellation Data properties: order: type: object properties: id: type: integer description: An object's database primary key. Do not rely on this value! example: 1 client_identifier: type: string description: client_identifier associated with the shipment which is also associated with the order example: 3fda4c37-6830-469f-b343-9d1a482a97fd billing_address: type: object properties: id: type: integer description: An object's database primary key. Do not rely on this value! example: 1 name: type: string description: Name for the address. example: Lacy Macejkovic company: type: string description: Company name for the address. example: Bayer-Abernathy telephone_number: type: string description: Telephone number linked to the address. example: (914) 000-8971 street: type: string description: Street line 1 of the address. example: 315 5th Ave street2: type: string description: Street line 2 of the address. example: Suite 2112 city: type: string description: City of the address. example: Scarsdale state: type: string description: State of the address. example: NY zip_code: type: string description: Zip code of the address. example: '10583' country: type: string description: Country of the address. example: US created_at: type: string format: date-time description: Creation timestamp iso8601 UTC updated_at: type: string format: date-time description: Timestamp of most recent update iso8601 UTC additionalProperties: false shipping_address: type: object properties: id: type: integer description: An object's database primary key. Do not rely on this value! example: 1 name: type: string description: Name for the address. example: James Carter company: type: string description: Company name for the address. example: Carter Industries telephone_number: type: string description: Telephone number linked to the address. example: (206) 555-1208 street: type: string description: Street line 1 of the address. example: 121 Vine Street street2: type: string description: Street line 2 of the address. example: Suite 1200 city: type: string description: City of the address. example: Seattle state: type: string description: State of the address. example: WA zip_code: type: string description: Zip code of the address. example: '98121' country: type: string description: Country of the address. example: US created_at: type: string format: date-time description: Creation timestamp iso8601 UTC updated_at: type: string format: date-time description: Timestamp of most recent update iso8601 UTC additionalProperties: false brand: type: string description: Brand name of client that received the order. example: acme shipping_method: type: string description: 'The shipping method to be used on the order. ' enum: - STANDARD - EXPRESS - OVERNIGHT - FREIGHT - PICK-UP status: type: string description: Status of the order. example: cancelled price_cents: type: integer description: Price paid in cents for the order. example: 10000 tax_cents: type: integer description: Tax paid in cents for the order. example: 1000 processing_fee_cents: type: integer description: Processing fee paid in cents for the order. example: 0 shipping_cost_cents: type: integer description: Shipping cost paid in cents for the order. example: 500 shipping_tax_cents: type: integer description: Shipping tax paid in cents for the order. example: 0 comments: type: string description: Comments regarding the order. example: Sample order instructions expected_delivery_date: type: string format: date description: Expected delivery date of the order. signature_required: type: boolean description: Specifies if a customer signature is required on delivery packing_slip_identifier: type: string description: Packing slip identifier for the order. example: '1497064' reject_reason: type: string description: Reason the order was rejected. example: '' order_items: type: array description: Order Item attributes items: type: object properties: id: type: integer description: An object's database primary key. Do not rely on this value! example: 1 client_identifier: type: string description: The order item identifier for the order item, typically coming from the customer's ecommerce platform or OMS example: 296f0b98-7bc5-4750-8cb9-2e36db1ff766 sku: type: string description: Item SKU or listing identifier. This will always be listing.identifier example: PTBQ121308 brand: type: string description: The brand name of the order item example: test_brand condition: type: string description: The condition code for the order item example: N quantity: type: integer description: The quantity of the order item example: 1 price_cents: type: integer description: The price in cents for the total quantity of the order item example: 10000 tax_cents: type: integer description: The tax in cents for the total quantity of the order item example: 1000 shipping_cost_cents: type: integer description: The shipping cost paid in cents for the order item example: 500 shipping_tax_cents: type: integer description: The shipping tax paid in cents for the order item example: 0 status: type: string description: Status of the order item example: cancelled comments: type: string description: Comments associated with the order item example: '' additionalProperties: false required: - client_identifier - sku - brand - condition - quantity - price_cents - tax_cents - shipping_cost_cents - shipping_tax_cents - status created_at: type: string format: date-time description: Date in ISO 8601 format in UTC updated_at: type: string format: date-time description: Date in ISO 8601 format in UTC additionalProperties: false required: - client_identifier - billing_address - shipping_address - brand - shipping_method - status - price_cents - tax_cents - shipping_cost_cents - shipping_tax_cents - order_items