openapi: 3.2.0
info:
title: Outbound Asn API
description: 'The Outbound ASN API allows clients to be notified when a shipment is leaving the Optoro WMS.
This allows clients to notify other systems so that the inventory can be received at the destination.
For very large shipments or pallets multiple ASNs may be sent. Your systems should expect to receive multiple messages for a single carton. Each message will have a unique asn number though.
## 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 Outbound ASN 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.
'
version: 1.0.0
tags:
- name: Outbound Asn
paths:
/outbound_asn:
post:
summary: Outbound ASN Event
operationId: outbound_asns
description: 'Client endpoint to which Outbound ASN 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:
required:
- from
- to
- asn_number
- channel
- shipment_identifier
- ship_date
- status
- details_type
- cartons
type: object
properties:
from:
description: The location this ASN is being sent from.
type: object
properties:
identifier:
type: string
description: 'Identifier for the from location.
When from.type is warehouse:
- If an External Identifier is configured for the warehouse, this will surface that identifier.
- If not, this will default to the internal OT warehouse ID.
'
example: '16'
type:
type: string
description: Type of the from location options include [warehouse, store]. This will typically be “warehouse”.
example: warehouse
to:
description: The location this ASN is being sent to.
type: object
properties:
identifier:
type: string
description: 'Identifier for the to location.
- When stock transferring, this value is the stock transfer identifier configured in warehouse settings
- For freight shipments, this value is the external warehouse identifier configured for the warehouse.
- For vendor shipments, this value is a number signifying the internal OptiTurn vendor ID
'
example: '07'
type:
type: string
description: Type of the from location options include [warehouse, store]. This will typically be “warehouse”.
example: warehouse
address:
$ref: '#/components/schemas/address'
asn_number:
type: string
description: 'A number generated by Optiturn uniquely identifying this ASN. The regex for this value is: /[A-Za-z0-9-_]{1,255}/.
Sometimes Outbound ASNs are split into multiple messages depending on the size of the shipment. In this case each asn_number will be appended by an incremental number, for example: “_1, _2, etc”.'
example: '1498456_7417412'
channel:
type: string
description: The channel which the inventory is being fulfilled for - e.g. RTV, RTS, Outlet.
example: active_ret
shipment_identifier:
type: string
description: An identifier for this shipment, representing the Order Number, RA number, or other reference for that shipment.
example: WS3710296-213344
tracking_number:
type: string
description: The tracking number or PRO number for containers in the shipment. If there are multiple different PRO numbers we only pass the first one scanned. There is no character limit on this attribute, Optoro will pass what is scanned. For stock transfers this will always be null.
example: 1ZA0000000
carrier:
type: string
description: The carrier for the shipment. For stock transfers this will always be null.
example: UPS GROUND
carrier_payment_type:
type: string
description: 'How the carrier will be paid for this shipment, one of: “prepaid” or “collect”. For stock transfers this will always be null.'
example: collect
ship_date:
type: string
description: An iso8601 formatted date string representing when the ASN was or will be shipped (YYYY-MM-DDT00:00:00) in UTC. This value can be updated using the update endpoint (below).
example: '2023-08-28T04:49:50.693Z'
status:
type: string
description: 'Allowed values: “pending”, “shipped”, “delivered”, “canceled”.'
example: shipped
details_type:
type: string
description: This will always be “unit”.
example: unit
cartons:
$ref: '#/components/schemas/cartons'
bol_number:
type: string
description: The BOL number on the freight shipment.
example: '21'
timestamp:
type: string
description: iso8601 formatted date string (YYYY-MM-DDT00:00:00) in UTC
example: '2023-08-29T03:41:16.848Z'
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':
description: Bad Request
'401':
description: Not Authorized. A new Authentication Token from the client’s services and retry the request.
'422':
description: Validation Failure
content:
application/json:
schema:
type: object
required:
- message
- errors
properties:
message:
type: string
description: Summary of the error(s).
errors:
type: array
description: Containes 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
'500':
description: Internal Server Error
'502':
description: Client Server Unavailable
tags:
- Outbound Asn
components:
schemas:
reference:
type: object
description: Reference to a Stock Transfer Order, Return Authorization, RMA, Forward Order or Returns Portal Order which can be used to reconcile against. See below for fields.
required:
- type
- identifier
properties:
type:
type: string
description: 'Reference type, allowed values are: StockTransferOrder, RA, RMA, ForwardOrder or ReturnsPortalOrder.'
example: RA
identifier:
type: string
description: 'Reference identifier - for example: the RMA number or RA Number associated with this shipment. This is a pass through from the inbound ASN.'
example: '573001000000'
alternate_identifier:
type: string
description: Secondary reference identifier.
example: '742769019332'
details:
type: array
description: The sku or unit lines expected in this carton. See below for details fields.
items:
required:
- line_identifier
- program_identifier
- unit_identifier
- sku
- quantity
- condition
type: object
properties:
line_identifier:
type: string
description: identifier for this line, unique within this ASN.
example: '1'
program_identifier:
type: string
description: Identifies which program the unit was received into. The value will be provided by Optoro during implementation.
example: 16_rma
unit_identifier:
type: string
description: The Optiturn LP for this unit.
example: A0393197881
client_unit_identifier:
type: string
description: Client unique Identifier
example: B04847382
inbound_received_asn:
type: string
description: Inbound ASN Number associated with the unit at receiving
example: d470a87c-4f63-4f0e-bc76-4683247bc434
sku:
type: string
description: The SKU for this item
example: '768983020002'
upc:
type: string
description: The UPC for this item
example: '500097771079'
quantity:
type: integer
description: Always 1 for now, present to match up with standard ASN fields, but all Optiturn generated ASNs will be unit level.
example: 1
vendor_identifier:
type: string
description: The identifier for this unit’s vendor or supplier.
example: Bradtke and Streich
serial_number:
type: string
description: Serial number for this unit
example: '11'
condition:
type: string
description: Condition determined by Optiturn driven warehouse processes. One of N,A,R,B,TT,C,X
enum:
- N
- A
- R
- B
- TT
- C
- X
example: TT
eligibility_flags:
type: array
description: These are the eligibility flags passed on the inbound ASN and configured in OptiTurn
example:
- '64'
merchant:
type: string
description: Merchant name for the unit
example: POLO RALPH LAUREN
cartons:
type: array
description: Each object (carton) below represents a single box or pallet which has been shipped.
items:
required:
- details
type: object
properties:
identifier:
type: string
description: The scannable identifier for this carton.
example: T00028546
reference:
$ref: '#/components/schemas/reference'
details:
$ref: '#/components/schemas/details'
sorting_template_name:
type: string
description: Name of the last assigned directed sorting template to this carton
example: Disposable Items
address:
type: object
description: The address this shipment is going to. See below for fields.
required:
- name
- street
- state
- city
- zip
properties:
name:
type: string
description: The address to name.
example: Bliss Diamond
company:
type: string
description: The address company line (under name)
example: Acme
street:
type: string
description: The street address.
example: 6001 N Dr South
street2:
type: string
description: An optional second line for the street address, for suite or other similar additions.
example: 60 N Dr North
city:
type: string
description: The city for this address.
example: LIBERTYVILLE
state:
type: string
description: The state for this address.
example: OH
zip:
type: string
description: The zip code for this address.
example: '43125'