Shipper quickstart
Quote, confirm and track a sandbox shipment
Complete sandbox setup first. Install cURL and jq, or use the official TypeScript and Go examples. Use TypeScript SDK 0.4.0 or Go SDK 0.4.4. The SDK example README records installation and recovery instructions.
- Copy the example quote and shipment JSON files. Replace the synthetic addresses with the scenario assigned to you. Keep addresses, quantities, dimensions and accessorials consistent between quote and create. Provide exact freight facts, including per-pallet weight. Do not use an arbitrary lane as a guaranteed serviceability test.
- Set
OWAY_M2M_CLIENT_ID,OWAY_M2M_CLIENT_SECRET,OWAY_API_KEY,OWAY_QUOTE_FILE,OWAY_SHIPMENT_FILE, a uniqueOWAY_IDEMPOTENCY_KEY, and a new privateOWAY_STATE_FILE. The runner persists the exact create body and key for reconciliation; retain this file after any failure. - Authenticate, request a quote, and check for a usable returned quote ID. Carry that ID into creation; never substitute an example ID. An expired or mismatched quote on this create route requires resolving the reported error or requesting a new quote; reference-based tendering has its own repricing contract.
- Create with the idempotency key. Replay the exact body and key once: the returned
orderNumbermust match. A different body with the same key returns 409; an in-progress result requires waiting and reconciling. - Confirm the returned shipment and inspect
orderStatus. Continue only when it isCONFIRMED, not merely because the HTTP response is 200. - Retrieve tracking and the bill of lading. The document response contains
downloadLink,filenameandfileType. Download URLs expire; request a fresh one when needed. POD requires a later completed carrier document workflow and is not a confirmation-time document.
The runnable examples implement these operations in cURL, TypeScript and Go without replacing IDs by hand. They print checkpoints, not credentials or signed document URLs.
Recover without duplicating a shipment
An uncertain create result requires replaying its saved body and key or retrieving the known shipment. Do not restart the entire quote/create workflow with a new key. For confirmation errors, correct the fields reported in violations and retrieve state before retrying confirmation. A 400 invalid_fields is not a transient failure. Coverage or load restrictions on quote/create may return 422; do not treat them as zero-price quotes.
Test the error path in your synthetic scenario: omit a required create field and inspect its validation response, then restore it and use a fresh key. Retain the response reason and request identifier for support without sharing credentials or full customer payloads.
For scheduled pickups, use the current reference's requiredPickupDate semantics and the pickup location's offset. Do not copy a stale date from a guide. The sample fixture omits the date for an as-soon-as-possible request; use a future date supplied by your scenario owner when scheduling is required.
Add webhook notifications
Follow the existing webhook quickstart to receive and verify a signed test event. Subscribe only to supported shipment events, keep the tracking API for reconciliation, and verify a real sandbox lifecycle event separately from the test event.
Updated about 3 hours ago