@oway/sdk 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -12
- package/dist/index.d.mts +2880 -878
- package/dist/index.d.ts +2880 -878
- package/dist/index.js +141 -189
- package/dist/index.mjs +141 -189
- package/package.json +5 -1
package/dist/index.d.ts
CHANGED
|
@@ -79,6 +79,145 @@ interface paths {
|
|
|
79
79
|
patch?: never;
|
|
80
80
|
trace?: never;
|
|
81
81
|
};
|
|
82
|
+
"/v1/carrier/shipments/{identifier}/pickup": {
|
|
83
|
+
parameters: {
|
|
84
|
+
query?: never;
|
|
85
|
+
header?: never;
|
|
86
|
+
path?: never;
|
|
87
|
+
cookie?: never;
|
|
88
|
+
};
|
|
89
|
+
get?: never;
|
|
90
|
+
/**
|
|
91
|
+
* Confirm shipment pickup
|
|
92
|
+
* @description Confirm that the shipment has been picked up. Transitions the order to IN_TRANSIT status.
|
|
93
|
+
*
|
|
94
|
+
* **Required fields:** `pickupTime` is required. All other fields (location, coordinates, signedBy, notes) are optional but recommended.
|
|
95
|
+
*
|
|
96
|
+
* **State requirement:** The shipment must be in ACCEPTED status.
|
|
97
|
+
*/
|
|
98
|
+
put: operations["confirmPickup"];
|
|
99
|
+
post?: never;
|
|
100
|
+
delete?: never;
|
|
101
|
+
options?: never;
|
|
102
|
+
head?: never;
|
|
103
|
+
patch?: never;
|
|
104
|
+
trace?: never;
|
|
105
|
+
};
|
|
106
|
+
"/v1/carrier/shipments/{identifier}/deliver": {
|
|
107
|
+
parameters: {
|
|
108
|
+
query?: never;
|
|
109
|
+
header?: never;
|
|
110
|
+
path?: never;
|
|
111
|
+
cookie?: never;
|
|
112
|
+
};
|
|
113
|
+
get?: never;
|
|
114
|
+
/**
|
|
115
|
+
* Confirm shipment delivery
|
|
116
|
+
* @description Confirm that the shipment has been delivered. Transitions the order to DELIVERED status and initiates carrier payout.
|
|
117
|
+
*
|
|
118
|
+
* **Required fields:** `deliveryTime` is required. Proof of delivery fields (`signedBy`, `signatureImageUrl`, `proofOfDeliveryUrl`) are optional but recommended.
|
|
119
|
+
*
|
|
120
|
+
* **State requirement:** The shipment must be in ACCEPTED or PICKED_UP status.
|
|
121
|
+
*/
|
|
122
|
+
put: operations["confirmDelivery"];
|
|
123
|
+
post?: never;
|
|
124
|
+
delete?: never;
|
|
125
|
+
options?: never;
|
|
126
|
+
head?: never;
|
|
127
|
+
patch?: never;
|
|
128
|
+
trace?: never;
|
|
129
|
+
};
|
|
130
|
+
"/v1/carrier/offers/{identifier}/reject": {
|
|
131
|
+
parameters: {
|
|
132
|
+
query?: never;
|
|
133
|
+
header?: never;
|
|
134
|
+
path?: never;
|
|
135
|
+
cookie?: never;
|
|
136
|
+
};
|
|
137
|
+
get?: never;
|
|
138
|
+
/**
|
|
139
|
+
* Reject an offer
|
|
140
|
+
* @description Reject a pending offer with a reason.
|
|
141
|
+
*
|
|
142
|
+
* **Required fields:** `reason` (enum) is required. `reasonText` is optional but recommended for context.
|
|
143
|
+
*
|
|
144
|
+
* **Reason values:** `capacity_unavailable`, `outside_service_area`, `rate_not_acceptable`, `timeline_not_feasible`, `other`
|
|
145
|
+
*
|
|
146
|
+
* **State requirement:** The offer must be in PENDING status.
|
|
147
|
+
*/
|
|
148
|
+
put: operations["rejectOffer"];
|
|
149
|
+
post?: never;
|
|
150
|
+
delete?: never;
|
|
151
|
+
options?: never;
|
|
152
|
+
head?: never;
|
|
153
|
+
patch?: never;
|
|
154
|
+
trace?: never;
|
|
155
|
+
};
|
|
156
|
+
"/v1/carrier/offers/{identifier}/accept": {
|
|
157
|
+
parameters: {
|
|
158
|
+
query?: never;
|
|
159
|
+
header?: never;
|
|
160
|
+
path?: never;
|
|
161
|
+
cookie?: never;
|
|
162
|
+
};
|
|
163
|
+
get?: never;
|
|
164
|
+
/**
|
|
165
|
+
* Accept an offer
|
|
166
|
+
* @description Accept a pending offer. Once accepted, the offer becomes a shipment and is accessible via `/shipments` endpoints.
|
|
167
|
+
*
|
|
168
|
+
* **Optional fields:** All request body fields are optional. You can provide driver details and a carrier reference number now, or update them later.
|
|
169
|
+
*
|
|
170
|
+
* **State requirement:** The offer must be in PENDING status. Returns 409 if the offer has already been accepted, rejected, or expired.
|
|
171
|
+
*/
|
|
172
|
+
put: operations["acceptOffer"];
|
|
173
|
+
post?: never;
|
|
174
|
+
delete?: never;
|
|
175
|
+
options?: never;
|
|
176
|
+
head?: never;
|
|
177
|
+
patch?: never;
|
|
178
|
+
trace?: never;
|
|
179
|
+
};
|
|
180
|
+
"/v1/carrier/bundles/{bundleId}/reject": {
|
|
181
|
+
parameters: {
|
|
182
|
+
query?: never;
|
|
183
|
+
header?: never;
|
|
184
|
+
path?: never;
|
|
185
|
+
cookie?: never;
|
|
186
|
+
};
|
|
187
|
+
get?: never;
|
|
188
|
+
/** Reject a bundle */
|
|
189
|
+
put: operations["rejectBundle"];
|
|
190
|
+
post?: never;
|
|
191
|
+
delete?: never;
|
|
192
|
+
options?: never;
|
|
193
|
+
head?: never;
|
|
194
|
+
patch?: never;
|
|
195
|
+
trace?: never;
|
|
196
|
+
};
|
|
197
|
+
"/v1/carrier/bundles/{bundleId}/accept": {
|
|
198
|
+
parameters: {
|
|
199
|
+
query?: never;
|
|
200
|
+
header?: never;
|
|
201
|
+
path?: never;
|
|
202
|
+
cookie?: never;
|
|
203
|
+
};
|
|
204
|
+
get?: never;
|
|
205
|
+
/**
|
|
206
|
+
* Accept a bundle
|
|
207
|
+
* @description Accept a bundle of offers. You can optionally exclude specific offers from the bundle using `offerIdsToExclude`.
|
|
208
|
+
*
|
|
209
|
+
* Carrier tracking data (reference number, driver info) provided in the request body is applied to all accepted offers in the bundle.
|
|
210
|
+
*
|
|
211
|
+
* **State requirement:** The bundle must be in OPEN status.
|
|
212
|
+
*/
|
|
213
|
+
put: operations["acceptBundle"];
|
|
214
|
+
post?: never;
|
|
215
|
+
delete?: never;
|
|
216
|
+
options?: never;
|
|
217
|
+
head?: never;
|
|
218
|
+
patch?: never;
|
|
219
|
+
trace?: never;
|
|
220
|
+
};
|
|
82
221
|
"/v1/shipper/shipment": {
|
|
83
222
|
parameters: {
|
|
84
223
|
query?: never;
|
|
@@ -129,7 +268,7 @@ interface paths {
|
|
|
129
268
|
patch?: never;
|
|
130
269
|
trace?: never;
|
|
131
270
|
};
|
|
132
|
-
"/v1/carrier/{
|
|
271
|
+
"/v1/carrier/shipments/{identifier}/upload": {
|
|
133
272
|
parameters: {
|
|
134
273
|
query?: never;
|
|
135
274
|
header?: never;
|
|
@@ -139,17 +278,48 @@ interface paths {
|
|
|
139
278
|
get?: never;
|
|
140
279
|
put?: never;
|
|
141
280
|
/**
|
|
142
|
-
*
|
|
143
|
-
* @description
|
|
281
|
+
* Request upload URL for signature or proof of delivery
|
|
282
|
+
* @description Returns a pre-signed URL for uploading a file directly to storage. Use HTTP PUT to upload the file to the returned URL with the specified content type.
|
|
283
|
+
*
|
|
284
|
+
* **Document types:** `SIGNATURE` (signature image), `PROOF_OF_DELIVERY` (POD document)
|
|
285
|
+
*
|
|
286
|
+
* **Content types:** `image/png`, `image/jpeg`, `application/pdf`
|
|
287
|
+
*
|
|
288
|
+
* **Upload flow:**
|
|
289
|
+
* 1. Call this endpoint to get a pre-signed URL
|
|
290
|
+
* 2. PUT your file to the returned `uploadUrl` with `Content-Type` header matching `contentType`
|
|
291
|
+
* 3. URL expires in 15 minutes
|
|
144
292
|
*/
|
|
145
|
-
post: operations["
|
|
293
|
+
post: operations["requestUploadUrl"];
|
|
294
|
+
delete?: never;
|
|
295
|
+
options?: never;
|
|
296
|
+
head?: never;
|
|
297
|
+
patch?: never;
|
|
298
|
+
trace?: never;
|
|
299
|
+
};
|
|
300
|
+
"/v1/carrier/shipments/{identifier}/location": {
|
|
301
|
+
parameters: {
|
|
302
|
+
query?: never;
|
|
303
|
+
header?: never;
|
|
304
|
+
path?: never;
|
|
305
|
+
cookie?: never;
|
|
306
|
+
};
|
|
307
|
+
get?: never;
|
|
308
|
+
put?: never;
|
|
309
|
+
/**
|
|
310
|
+
* Submit GPS location for a shipment
|
|
311
|
+
* @description Submit a GPS location update tied to a specific shipment.
|
|
312
|
+
*
|
|
313
|
+
* **State requirement:** The shipment must be in ACCEPTED or PICKED_UP status.
|
|
314
|
+
*/
|
|
315
|
+
post: operations["submitLocation"];
|
|
146
316
|
delete?: never;
|
|
147
317
|
options?: never;
|
|
148
318
|
head?: never;
|
|
149
319
|
patch?: never;
|
|
150
320
|
trace?: never;
|
|
151
321
|
};
|
|
152
|
-
"/v1/carrier/{
|
|
322
|
+
"/v1/carrier/shipments/{identifier}/exception": {
|
|
153
323
|
parameters: {
|
|
154
324
|
query?: never;
|
|
155
325
|
header?: never;
|
|
@@ -159,10 +329,32 @@ interface paths {
|
|
|
159
329
|
get?: never;
|
|
160
330
|
put?: never;
|
|
161
331
|
/**
|
|
162
|
-
*
|
|
163
|
-
* @description
|
|
332
|
+
* Report a shipment exception or delay
|
|
333
|
+
* @description Report an exception such as weather delay, vehicle breakdown, or address issue.
|
|
334
|
+
*
|
|
335
|
+
* **State requirement:** The shipment must be in ACCEPTED or PICKED_UP status.
|
|
336
|
+
*/
|
|
337
|
+
post: operations["reportException"];
|
|
338
|
+
delete?: never;
|
|
339
|
+
options?: never;
|
|
340
|
+
head?: never;
|
|
341
|
+
patch?: never;
|
|
342
|
+
trace?: never;
|
|
343
|
+
};
|
|
344
|
+
"/v1/carrier/coverage/trips": {
|
|
345
|
+
parameters: {
|
|
346
|
+
query?: never;
|
|
347
|
+
header?: never;
|
|
348
|
+
path?: never;
|
|
349
|
+
cookie?: never;
|
|
350
|
+
};
|
|
351
|
+
get?: never;
|
|
352
|
+
put?: never;
|
|
353
|
+
/**
|
|
354
|
+
* Submit trip data
|
|
355
|
+
* @description Submit trip data for carrier vehicles. Each trip must include vehicle ID, trip number, and legs with start/end coordinates and arrival windows.
|
|
164
356
|
*/
|
|
165
|
-
post: operations["
|
|
357
|
+
post: operations["addTrips"];
|
|
166
358
|
delete?: never;
|
|
167
359
|
options?: never;
|
|
168
360
|
head?: never;
|
|
@@ -273,7 +465,7 @@ interface paths {
|
|
|
273
465
|
};
|
|
274
466
|
/**
|
|
275
467
|
* Get a shipment document by order number
|
|
276
|
-
* @description Retrieves a download link for a shipment document using the order number (PRO number). Supported document types: BILL_OF_LADING, INVOICE, SHIPPING_LABEL.
|
|
468
|
+
* @description Retrieves a download link for a shipment document using the order number (PRO number). Supported document types: BILL_OF_LADING, INVOICE, SHIPPING_LABEL, POD.
|
|
277
469
|
*/
|
|
278
470
|
get: operations["getDocument"];
|
|
279
471
|
put?: never;
|
|
@@ -304,7 +496,113 @@ interface paths {
|
|
|
304
496
|
patch?: never;
|
|
305
497
|
trace?: never;
|
|
306
498
|
};
|
|
307
|
-
"/v1/carrier/
|
|
499
|
+
"/v1/carrier/shipments": {
|
|
500
|
+
parameters: {
|
|
501
|
+
query?: never;
|
|
502
|
+
header?: never;
|
|
503
|
+
path?: never;
|
|
504
|
+
cookie?: never;
|
|
505
|
+
};
|
|
506
|
+
/**
|
|
507
|
+
* List shipments
|
|
508
|
+
* @description Retrieves active and completed shipments (accepted offers) for this carrier. Filter by time range.
|
|
509
|
+
*/
|
|
510
|
+
get: operations["getShipments"];
|
|
511
|
+
put?: never;
|
|
512
|
+
post?: never;
|
|
513
|
+
delete?: never;
|
|
514
|
+
options?: never;
|
|
515
|
+
head?: never;
|
|
516
|
+
patch?: never;
|
|
517
|
+
trace?: never;
|
|
518
|
+
};
|
|
519
|
+
"/v1/carrier/shipments/{identifier}": {
|
|
520
|
+
parameters: {
|
|
521
|
+
query?: never;
|
|
522
|
+
header?: never;
|
|
523
|
+
path?: never;
|
|
524
|
+
cookie?: never;
|
|
525
|
+
};
|
|
526
|
+
/**
|
|
527
|
+
* Get shipment by identifier
|
|
528
|
+
* @description Retrieves shipment details. The identifier can be an offerId, orderNumber, or carrierReference.
|
|
529
|
+
*/
|
|
530
|
+
get: operations["getShipment_1"];
|
|
531
|
+
put?: never;
|
|
532
|
+
post?: never;
|
|
533
|
+
delete?: never;
|
|
534
|
+
options?: never;
|
|
535
|
+
head?: never;
|
|
536
|
+
patch?: never;
|
|
537
|
+
trace?: never;
|
|
538
|
+
};
|
|
539
|
+
"/v1/carrier/shipments/{identifier}/tracking": {
|
|
540
|
+
parameters: {
|
|
541
|
+
query?: never;
|
|
542
|
+
header?: never;
|
|
543
|
+
path?: never;
|
|
544
|
+
cookie?: never;
|
|
545
|
+
};
|
|
546
|
+
/**
|
|
547
|
+
* Get shipment tracking history
|
|
548
|
+
* @description Retrieves GPS location history for a specific shipment.
|
|
549
|
+
*/
|
|
550
|
+
get: operations["getShipmentTracking"];
|
|
551
|
+
put?: never;
|
|
552
|
+
post?: never;
|
|
553
|
+
delete?: never;
|
|
554
|
+
options?: never;
|
|
555
|
+
head?: never;
|
|
556
|
+
patch?: never;
|
|
557
|
+
trace?: never;
|
|
558
|
+
};
|
|
559
|
+
"/v1/carrier/shipments/{identifier}/document/{documentType}": {
|
|
560
|
+
parameters: {
|
|
561
|
+
query?: never;
|
|
562
|
+
header?: never;
|
|
563
|
+
path?: never;
|
|
564
|
+
cookie?: never;
|
|
565
|
+
};
|
|
566
|
+
/**
|
|
567
|
+
* Get shipment document
|
|
568
|
+
* @description Retrieves a document for a shipment. Returns a pre-signed download URL.
|
|
569
|
+
*
|
|
570
|
+
* **Supported document types:**
|
|
571
|
+
* - `BILL_OF_LADING` — Bill of lading (driver version)
|
|
572
|
+
* - `SHIPPING_LABEL` — Shipping label
|
|
573
|
+
*/
|
|
574
|
+
get: operations["getShipmentDocument"];
|
|
575
|
+
put?: never;
|
|
576
|
+
post?: never;
|
|
577
|
+
delete?: never;
|
|
578
|
+
options?: never;
|
|
579
|
+
head?: never;
|
|
580
|
+
patch?: never;
|
|
581
|
+
trace?: never;
|
|
582
|
+
};
|
|
583
|
+
"/v1/carrier/offers": {
|
|
584
|
+
parameters: {
|
|
585
|
+
query?: never;
|
|
586
|
+
header?: never;
|
|
587
|
+
path?: never;
|
|
588
|
+
cookie?: never;
|
|
589
|
+
};
|
|
590
|
+
/**
|
|
591
|
+
* List offers
|
|
592
|
+
* @description Retrieves pending offers for this carrier. These are offers that have not yet been accepted or rejected.
|
|
593
|
+
*
|
|
594
|
+
* **Note:** Accepted offers appear under `/shipments` instead.
|
|
595
|
+
*/
|
|
596
|
+
get: operations["getOffers"];
|
|
597
|
+
put?: never;
|
|
598
|
+
post?: never;
|
|
599
|
+
delete?: never;
|
|
600
|
+
options?: never;
|
|
601
|
+
head?: never;
|
|
602
|
+
patch?: never;
|
|
603
|
+
trace?: never;
|
|
604
|
+
};
|
|
605
|
+
"/v1/carrier/offers/{identifier}": {
|
|
308
606
|
parameters: {
|
|
309
607
|
query?: never;
|
|
310
608
|
header?: never;
|
|
@@ -312,10 +610,10 @@ interface paths {
|
|
|
312
610
|
cookie?: never;
|
|
313
611
|
};
|
|
314
612
|
/**
|
|
315
|
-
* Get
|
|
316
|
-
* @description Retrieves
|
|
613
|
+
* Get offer by identifier
|
|
614
|
+
* @description Retrieves offer details. The identifier can be an offerId, orderNumber, or carrierReference.
|
|
317
615
|
*/
|
|
318
|
-
get: operations["
|
|
616
|
+
get: operations["getOffer"];
|
|
319
617
|
put?: never;
|
|
320
618
|
post?: never;
|
|
321
619
|
delete?: never;
|
|
@@ -324,7 +622,7 @@ interface paths {
|
|
|
324
622
|
patch?: never;
|
|
325
623
|
trace?: never;
|
|
326
624
|
};
|
|
327
|
-
"/v1/carrier/
|
|
625
|
+
"/v1/carrier/bundles": {
|
|
328
626
|
parameters: {
|
|
329
627
|
query?: never;
|
|
330
628
|
header?: never;
|
|
@@ -332,10 +630,29 @@ interface paths {
|
|
|
332
630
|
cookie?: never;
|
|
333
631
|
};
|
|
334
632
|
/**
|
|
335
|
-
*
|
|
336
|
-
* @description Retrieves
|
|
633
|
+
* List bundles for this carrier
|
|
634
|
+
* @description Retrieves bundles for this carrier. A bundle is a group of related offers presented together.
|
|
635
|
+
*
|
|
636
|
+
* **Bundle statuses:** OPEN (awaiting response), ACCEPTED, DECLINED, SUBSET_ACCEPTED (some offers accepted), EXPIRED
|
|
337
637
|
*/
|
|
338
|
-
get: operations["
|
|
638
|
+
get: operations["getBundles"];
|
|
639
|
+
put?: never;
|
|
640
|
+
post?: never;
|
|
641
|
+
delete?: never;
|
|
642
|
+
options?: never;
|
|
643
|
+
head?: never;
|
|
644
|
+
patch?: never;
|
|
645
|
+
trace?: never;
|
|
646
|
+
};
|
|
647
|
+
"/v1/carrier/bundles/{bundleId}": {
|
|
648
|
+
parameters: {
|
|
649
|
+
query?: never;
|
|
650
|
+
header?: never;
|
|
651
|
+
path?: never;
|
|
652
|
+
cookie?: never;
|
|
653
|
+
};
|
|
654
|
+
/** Get a single bundle by ID */
|
|
655
|
+
get: operations["getBundle"];
|
|
339
656
|
put?: never;
|
|
340
657
|
post?: never;
|
|
341
658
|
delete?: never;
|
|
@@ -347,21 +664,65 @@ interface paths {
|
|
|
347
664
|
}
|
|
348
665
|
interface components {
|
|
349
666
|
schemas: {
|
|
350
|
-
/** @description
|
|
351
|
-
|
|
667
|
+
/** @description RFC 9457 Problem Details error response */
|
|
668
|
+
ProblemDetail: {
|
|
352
669
|
/**
|
|
353
|
-
* @description
|
|
354
|
-
* @example
|
|
670
|
+
* @description A URI reference that identifies the problem type
|
|
671
|
+
* @example https://api.oway.io/errors/location-not-serviceable
|
|
355
672
|
*/
|
|
356
|
-
|
|
673
|
+
type?: string;
|
|
357
674
|
/**
|
|
358
|
-
* @description
|
|
359
|
-
* @example
|
|
675
|
+
* @description A short, human-readable summary of the problem type
|
|
676
|
+
* @example Bad Request
|
|
360
677
|
*/
|
|
361
|
-
|
|
678
|
+
title?: string;
|
|
362
679
|
/**
|
|
363
|
-
*
|
|
364
|
-
* @
|
|
680
|
+
* Format: int32
|
|
681
|
+
* @description The HTTP status code
|
|
682
|
+
* @example 400
|
|
683
|
+
*/
|
|
684
|
+
status?: number;
|
|
685
|
+
/**
|
|
686
|
+
* @description A human-readable explanation specific to this occurrence of the problem
|
|
687
|
+
* @example pickupAddress.zipCode must be a 5-digit ZIP code
|
|
688
|
+
*/
|
|
689
|
+
detail?: string;
|
|
690
|
+
/**
|
|
691
|
+
* @description A machine-readable reason code for programmatic handling
|
|
692
|
+
* @example pickup_not_covered
|
|
693
|
+
*/
|
|
694
|
+
reason?: string;
|
|
695
|
+
/** @description Per-field validation failures when a request is rejected for one or more invalid fields. Present only on validation-style errors. */
|
|
696
|
+
violations?: components["schemas"]["Violation"][];
|
|
697
|
+
};
|
|
698
|
+
/** @description A single field-level validation failure. */
|
|
699
|
+
Violation: {
|
|
700
|
+
/**
|
|
701
|
+
* @description Field path that failed validation
|
|
702
|
+
* @example orderComponents[0].dimensions
|
|
703
|
+
*/
|
|
704
|
+
field?: string;
|
|
705
|
+
/**
|
|
706
|
+
* @description Human-readable reason the field is invalid
|
|
707
|
+
* @example Component dimensions of 77x71x86 are invalid (pallets must be less than 95x95x96, and either length or width may exceed 60 but not both)
|
|
708
|
+
*/
|
|
709
|
+
reason?: string;
|
|
710
|
+
};
|
|
711
|
+
/** @description Shipment/Order details */
|
|
712
|
+
Shipment: {
|
|
713
|
+
/**
|
|
714
|
+
* @description Unique identifier for the order
|
|
715
|
+
* @example 67b6c5fcfbf1be6b24127646
|
|
716
|
+
*/
|
|
717
|
+
id?: string;
|
|
718
|
+
/**
|
|
719
|
+
* @description Company ID that owns this order
|
|
720
|
+
* @example 67c0dfa95bff090747660465
|
|
721
|
+
*/
|
|
722
|
+
companyId?: string;
|
|
723
|
+
/**
|
|
724
|
+
* @description User ID who created this order
|
|
725
|
+
* @example 679410f5b074882a64b9ea7f
|
|
365
726
|
*/
|
|
366
727
|
userId?: string;
|
|
367
728
|
/**
|
|
@@ -370,7 +731,7 @@ interface components {
|
|
|
370
731
|
*/
|
|
371
732
|
orderNumber?: string;
|
|
372
733
|
/**
|
|
373
|
-
* @description Current status
|
|
734
|
+
* @description Current shipment status in the order lifecycle
|
|
374
735
|
* @example CONFIRMED
|
|
375
736
|
* @enum {string}
|
|
376
737
|
*/
|
|
@@ -394,8 +755,72 @@ interface components {
|
|
|
394
755
|
*/
|
|
395
756
|
updatedAt?: string;
|
|
396
757
|
};
|
|
758
|
+
/** @description GPS coordinates for a shipment event */
|
|
759
|
+
EventCoordinates: {
|
|
760
|
+
/**
|
|
761
|
+
* Format: double
|
|
762
|
+
* @description Latitude in decimal degrees
|
|
763
|
+
* @example 33.7701
|
|
764
|
+
*/
|
|
765
|
+
latitude?: number;
|
|
766
|
+
/**
|
|
767
|
+
* Format: double
|
|
768
|
+
* @description Longitude in decimal degrees
|
|
769
|
+
* @example -118.1937
|
|
770
|
+
*/
|
|
771
|
+
longitude?: number;
|
|
772
|
+
};
|
|
773
|
+
/** @description Location where a shipment event occurred */
|
|
774
|
+
EventLocation: {
|
|
775
|
+
/**
|
|
776
|
+
* @description Primary street address
|
|
777
|
+
* @example 1531 Junipero Avenue
|
|
778
|
+
*/
|
|
779
|
+
address1?: string;
|
|
780
|
+
/**
|
|
781
|
+
* @description Secondary address line (suite, unit, etc.)
|
|
782
|
+
* @example Dock 5
|
|
783
|
+
*/
|
|
784
|
+
address2?: string;
|
|
785
|
+
/**
|
|
786
|
+
* @description City name
|
|
787
|
+
* @example Long Beach
|
|
788
|
+
*/
|
|
789
|
+
city?: string;
|
|
790
|
+
/**
|
|
791
|
+
* @description Two-letter state abbreviation
|
|
792
|
+
* @example CA
|
|
793
|
+
*/
|
|
794
|
+
state?: string;
|
|
795
|
+
/**
|
|
796
|
+
* @description 5-digit ZIP code
|
|
797
|
+
* @example 90804
|
|
798
|
+
*/
|
|
799
|
+
zip_code?: string;
|
|
800
|
+
/**
|
|
801
|
+
* @description Country code
|
|
802
|
+
* @example US
|
|
803
|
+
*/
|
|
804
|
+
country?: string;
|
|
805
|
+
};
|
|
806
|
+
/** @description Request body for confirming shipment pickup */
|
|
807
|
+
PickupConfirmationRequest: {
|
|
808
|
+
/**
|
|
809
|
+
* Format: date-time
|
|
810
|
+
* @description Time the shipment was picked up
|
|
811
|
+
*/
|
|
812
|
+
pickup_time: string;
|
|
813
|
+
location?: components["schemas"]["EventLocation"];
|
|
814
|
+
coordinates?: components["schemas"]["EventCoordinates"];
|
|
815
|
+
/** @description Name of the driver who performed the pickup */
|
|
816
|
+
driver_name?: string;
|
|
817
|
+
/** @description Name of the person who signed at pickup */
|
|
818
|
+
signed_by?: string;
|
|
819
|
+
/** @description Additional notes about the pickup */
|
|
820
|
+
notes?: string;
|
|
821
|
+
};
|
|
397
822
|
/** @description Address information for pickup or delivery locations */
|
|
398
|
-
|
|
823
|
+
CarrierAddress: {
|
|
399
824
|
/**
|
|
400
825
|
* @description Name of the location or business
|
|
401
826
|
* @example Fairgrounds Distribution Center
|
|
@@ -425,27 +850,27 @@ interface components {
|
|
|
425
850
|
* @description 5-digit ZIP code
|
|
426
851
|
* @example 90804
|
|
427
852
|
*/
|
|
428
|
-
|
|
853
|
+
zip_code: string;
|
|
429
854
|
/**
|
|
430
855
|
* @description Contact phone number in E.164 format
|
|
431
856
|
* @example +18087857650
|
|
432
857
|
*/
|
|
433
|
-
|
|
858
|
+
phone_number: string;
|
|
434
859
|
/**
|
|
435
860
|
* @description Name of the contact person at this location
|
|
436
861
|
* @example Mike Johnson
|
|
437
862
|
*/
|
|
438
|
-
|
|
863
|
+
contact_person: string;
|
|
439
864
|
/**
|
|
440
865
|
* @description Opening time for the location in 24-hour format (HH:mm). Defaults to 10:00 if not provided.
|
|
441
866
|
* @example 10:00
|
|
442
867
|
*/
|
|
443
|
-
|
|
868
|
+
open_time?: string;
|
|
444
869
|
/**
|
|
445
870
|
* @description Closing time for the location in 24-hour format (HH:mm). Defaults to 16:00 if not provided.
|
|
446
871
|
* @example 16:00
|
|
447
872
|
*/
|
|
448
|
-
|
|
873
|
+
close_time?: string;
|
|
449
874
|
/**
|
|
450
875
|
* @description Additional notes or instructions for the driver
|
|
451
876
|
* @example Dock 3, enter from back of building
|
|
@@ -455,694 +880,2202 @@ interface components {
|
|
|
455
880
|
* @description Whether a liftgate is required at this location
|
|
456
881
|
* @example false
|
|
457
882
|
*/
|
|
458
|
-
|
|
883
|
+
liftgate_required?: boolean;
|
|
459
884
|
/**
|
|
460
885
|
* @description Whether this is a limited access location (residential, construction site, etc.)
|
|
461
886
|
* @example false
|
|
462
887
|
*/
|
|
463
|
-
|
|
888
|
+
limited_access?: boolean;
|
|
464
889
|
/**
|
|
465
890
|
* @description Whether an appointment is required for pickup/delivery
|
|
466
891
|
* @example true
|
|
467
892
|
*/
|
|
468
|
-
|
|
469
|
-
};
|
|
470
|
-
/** @description Request to create a new shipment */
|
|
471
|
-
CreateShipmentRequest: {
|
|
472
|
-
/**
|
|
473
|
-
* @description Optional ID of a previously generated quote.
|
|
474
|
-
* @example 507f1f77bcf86cd799439013
|
|
475
|
-
*/
|
|
476
|
-
quoteId?: string;
|
|
477
|
-
pickupAddress: components["schemas"]["Address"];
|
|
478
|
-
deliveryAddress: components["schemas"]["Address"];
|
|
479
|
-
/** @description List of cargo components in the shipment */
|
|
480
|
-
orderComponents: components["schemas"]["OrderComponent"][];
|
|
481
|
-
/**
|
|
482
|
-
* @description Description of the shipment contents
|
|
483
|
-
* @example Electronics - fragile
|
|
484
|
-
*/
|
|
485
|
-
description: string;
|
|
486
|
-
/**
|
|
487
|
-
* @description Purchase order number for reference
|
|
488
|
-
* @example PO-2024-12345
|
|
489
|
-
*/
|
|
490
|
-
poNumber?: string;
|
|
491
|
-
/**
|
|
492
|
-
* @description Additional reference number
|
|
493
|
-
* @example REF-ABC-123
|
|
494
|
-
*/
|
|
495
|
-
refNumber?: string;
|
|
496
|
-
/**
|
|
497
|
-
* Format: date-time
|
|
498
|
-
* @description Required pickup date (ISO 8601 format)
|
|
499
|
-
* @example 2024-12-24T08:00:00Z
|
|
500
|
-
*/
|
|
501
|
-
requiredPickupDate?: string;
|
|
502
|
-
/**
|
|
503
|
-
* Format: date-time
|
|
504
|
-
* @description Required delivery by date (ISO 8601 format)
|
|
505
|
-
* @example 2024-12-26T17:00:00Z
|
|
506
|
-
*/
|
|
507
|
-
requiredDeliveryBy?: string;
|
|
893
|
+
appointment_required?: boolean;
|
|
508
894
|
};
|
|
509
|
-
/** @description
|
|
510
|
-
|
|
895
|
+
/** @description Individual pallet/component details */
|
|
896
|
+
CarrierComponent: {
|
|
511
897
|
/**
|
|
512
898
|
* Format: int32
|
|
513
899
|
* @description Number of pallets in this component
|
|
514
|
-
* @example
|
|
900
|
+
* @example 1
|
|
515
901
|
*/
|
|
516
|
-
|
|
902
|
+
pallet_count?: number;
|
|
517
903
|
/**
|
|
518
|
-
* Format:
|
|
519
|
-
* @description Weight
|
|
520
|
-
* @example
|
|
904
|
+
* Format: float
|
|
905
|
+
* @description Weight in pounds for this component
|
|
906
|
+
* @example 600
|
|
521
907
|
*/
|
|
522
|
-
|
|
908
|
+
pounds_weight?: number;
|
|
523
909
|
/**
|
|
524
|
-
* @description Pallet dimensions
|
|
910
|
+
* @description Pallet dimensions [length, width, height] in inches
|
|
525
911
|
* @example [
|
|
526
912
|
* 48,
|
|
527
913
|
* 40,
|
|
528
|
-
*
|
|
914
|
+
* 60
|
|
529
915
|
* ]
|
|
530
916
|
*/
|
|
531
|
-
|
|
532
|
-
};
|
|
533
|
-
/** @description Request to generate a shipping quote. Quotes are valid for 2 days from creation. */
|
|
534
|
-
QuoteRequest: {
|
|
535
|
-
pickupAddress: components["schemas"]["Address"];
|
|
536
|
-
deliveryAddress: components["schemas"]["Address"];
|
|
537
|
-
/** @description List of pallets or freight pieces. */
|
|
538
|
-
orderComponents: components["schemas"]["OrderComponent"][];
|
|
539
|
-
};
|
|
540
|
-
/** @description Response containing a shipping quote */
|
|
541
|
-
QuoteResponse: {
|
|
542
|
-
/**
|
|
543
|
-
* @description Unique quote identifier
|
|
544
|
-
* @example 507f1f77bcf86cd799439013
|
|
545
|
-
*/
|
|
546
|
-
id?: string;
|
|
547
|
-
/**
|
|
548
|
-
* Format: int32
|
|
549
|
-
* @description Total quoted price in cents (USD)
|
|
550
|
-
* @example 125000
|
|
551
|
-
*/
|
|
552
|
-
quotedPriceInCents?: number;
|
|
917
|
+
pallet_dimensions?: number[];
|
|
553
918
|
/**
|
|
554
|
-
*
|
|
555
|
-
* @
|
|
556
|
-
* @example 2024-12-20T15:30:00Z
|
|
919
|
+
* @description Freight class code
|
|
920
|
+
* @example 70
|
|
557
921
|
*/
|
|
558
|
-
|
|
559
|
-
};
|
|
560
|
-
Trip: {
|
|
561
|
-
id?: string;
|
|
562
|
-
carrierId?: string;
|
|
563
|
-
vehicleId?: string;
|
|
564
|
-
tripNo?: string;
|
|
565
|
-
legs?: components["schemas"]["TripLeg"][];
|
|
566
|
-
/** Format: date-time */
|
|
567
|
-
createdAt?: string;
|
|
568
|
-
/** Format: date-time */
|
|
569
|
-
updatedAt?: string;
|
|
922
|
+
freight_class?: string;
|
|
570
923
|
};
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
startLat?: number;
|
|
574
|
-
/** Format: double */
|
|
575
|
-
startLong?: number;
|
|
576
|
-
/** Format: date-time */
|
|
577
|
-
startTime?: string;
|
|
578
|
-
/** Format: double */
|
|
579
|
-
endLat?: number;
|
|
580
|
-
/** Format: double */
|
|
581
|
-
endLong?: number;
|
|
582
|
-
/** Format: date-time */
|
|
583
|
-
arrivalWindowStart?: string;
|
|
584
|
-
/** Format: date-time */
|
|
585
|
-
arrivalWindowEnd?: string;
|
|
586
|
-
availableForOffers?: boolean;
|
|
587
|
-
/** Format: int32 */
|
|
588
|
-
estDriveTimeMinutes?: number;
|
|
589
|
-
/** Format: int32 */
|
|
590
|
-
stopNumber?: number;
|
|
591
|
-
};
|
|
592
|
-
/** @description GPS location data point for a vehicle */
|
|
593
|
-
GpsData: {
|
|
594
|
-
/**
|
|
595
|
-
* @description Unique identifier for the vehicle
|
|
596
|
-
* @example TRUCK-001
|
|
597
|
-
*/
|
|
598
|
-
vehicleId: string;
|
|
599
|
-
/**
|
|
600
|
-
* Format: date-time
|
|
601
|
-
* @description Timestamp of the GPS reading (ISO 8601 format). Must not be in the future.
|
|
602
|
-
* @example 2025-02-20T17:33:15Z
|
|
603
|
-
*/
|
|
604
|
-
timestamp: string;
|
|
605
|
-
/**
|
|
606
|
-
* Format: double
|
|
607
|
-
* @description Latitude coordinate
|
|
608
|
-
* @example 33.787363
|
|
609
|
-
*/
|
|
610
|
-
latitude: number;
|
|
611
|
-
/**
|
|
612
|
-
* Format: double
|
|
613
|
-
* @description Longitude coordinate
|
|
614
|
-
* @example -118.163715
|
|
615
|
-
*/
|
|
616
|
-
longitude: number;
|
|
617
|
-
/**
|
|
618
|
-
* Format: int32
|
|
619
|
-
* @description Heading in degrees (0-359, where 0 is North)
|
|
620
|
-
* @example 270
|
|
621
|
-
*/
|
|
622
|
-
heading: number;
|
|
924
|
+
/** @description Carrier shipment details (post-acceptance) */
|
|
925
|
+
CarrierShipment: {
|
|
623
926
|
/**
|
|
624
|
-
*
|
|
625
|
-
* @
|
|
626
|
-
* @example 65
|
|
927
|
+
* @description Unique offer identifier
|
|
928
|
+
* @example 507f1f77bcf86cd799439012
|
|
627
929
|
*/
|
|
628
|
-
|
|
629
|
-
};
|
|
630
|
-
/** @description Token request containing client credentials */
|
|
631
|
-
TokenRequest: {
|
|
930
|
+
id?: string;
|
|
632
931
|
/**
|
|
633
|
-
* @description
|
|
634
|
-
* @
|
|
932
|
+
* @description Current status of the carrier offer
|
|
933
|
+
* @enum {string}
|
|
635
934
|
*/
|
|
636
|
-
|
|
935
|
+
status?: "PENDING" | "ACCEPTED" | "PICKED_UP" | "DELIVERED" | "REJECTED" | "EXPIRED" | "CANCELLED";
|
|
637
936
|
/**
|
|
638
|
-
* @description
|
|
639
|
-
* @example
|
|
937
|
+
* @description Carrier's own tracking reference number
|
|
938
|
+
* @example CARRIER-TRK-789
|
|
640
939
|
*/
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
940
|
+
carrier_reference?: string;
|
|
941
|
+
/** @description Reason for rejection (populated when status is REJECTED) */
|
|
942
|
+
rejection_reason?: string;
|
|
943
|
+
/** @description Free-text explanation for rejection */
|
|
944
|
+
rejection_reason_text?: string;
|
|
945
|
+
order?: components["schemas"]["Order"];
|
|
946
|
+
pickup?: components["schemas"]["CarrierAddress"];
|
|
947
|
+
delivery?: components["schemas"]["CarrierAddress"];
|
|
948
|
+
tracking?: components["schemas"]["CarrierTracking"];
|
|
949
|
+
payout?: components["schemas"]["Payout"];
|
|
950
|
+
assigned_driver?: components["schemas"]["Driver"];
|
|
951
|
+
pickup_confirmation?: components["schemas"]["PickupConfirmation"];
|
|
952
|
+
delivery_confirmation?: components["schemas"]["DeliveryConfirmation"];
|
|
645
953
|
/**
|
|
646
|
-
* @description
|
|
647
|
-
* @example
|
|
954
|
+
* @description PIN code for pickup verification
|
|
955
|
+
* @example 1234
|
|
648
956
|
*/
|
|
649
|
-
|
|
957
|
+
pickup_pin?: string;
|
|
650
958
|
/**
|
|
651
|
-
* @description
|
|
652
|
-
* @example
|
|
959
|
+
* @description PIN code for delivery verification
|
|
960
|
+
* @example 5678
|
|
653
961
|
*/
|
|
654
|
-
|
|
655
|
-
};
|
|
656
|
-
/** @description Successful token response */
|
|
657
|
-
TokenResponse: {
|
|
962
|
+
delivery_pin?: string;
|
|
658
963
|
/**
|
|
659
|
-
*
|
|
660
|
-
* @
|
|
964
|
+
* Format: date-time
|
|
965
|
+
* @description Offer expiration time — must accept or reject before this time
|
|
966
|
+
* @example 2026-01-15T12:00:00Z
|
|
661
967
|
*/
|
|
662
|
-
|
|
968
|
+
deadline?: string;
|
|
663
969
|
/**
|
|
664
|
-
*
|
|
665
|
-
* @
|
|
970
|
+
* Format: date-time
|
|
971
|
+
* @description When this offer was created
|
|
972
|
+
* @example 2026-01-15T08:00:00Z
|
|
666
973
|
*/
|
|
667
|
-
|
|
974
|
+
created_at?: string;
|
|
668
975
|
/**
|
|
669
|
-
* Format:
|
|
670
|
-
* @description
|
|
671
|
-
* @example
|
|
976
|
+
* Format: date-time
|
|
977
|
+
* @description When this offer was last updated
|
|
978
|
+
* @example 2026-01-15T10:30:00Z
|
|
672
979
|
*/
|
|
673
|
-
|
|
980
|
+
updated_at?: string;
|
|
674
981
|
};
|
|
675
982
|
/** @description Shipment tracking information */
|
|
676
|
-
|
|
677
|
-
/**
|
|
678
|
-
* @description Unique identifier for the order
|
|
679
|
-
* @example 507f1f77bcf86cd799439011
|
|
680
|
-
*/
|
|
681
|
-
id?: string;
|
|
983
|
+
CarrierTracking: {
|
|
682
984
|
/**
|
|
683
985
|
* @description Human-readable PRO number for the shipment (5-character alphanumeric)
|
|
684
986
|
* @example ZKYQ5
|
|
685
987
|
*/
|
|
686
|
-
|
|
988
|
+
order_number?: string;
|
|
687
989
|
/**
|
|
688
|
-
* @description Current status
|
|
990
|
+
* @description Current shipment status in the order lifecycle
|
|
689
991
|
* @example PICKED_UP
|
|
690
992
|
* @enum {string}
|
|
691
993
|
*/
|
|
692
|
-
|
|
994
|
+
order_status?: "INITIALIZED" | "CONFIRMED" | "ACCEPTED" | "ASSIGNED" | "PICKED_UP" | "IN_TRANSIT" | "DELIVERED" | "CANCELLED";
|
|
693
995
|
/**
|
|
694
996
|
* Format: date-time
|
|
695
997
|
* @description Actual pickup date/time (ISO 8601 format)
|
|
696
998
|
* @example 2024-12-23T10:30:00Z
|
|
697
999
|
*/
|
|
698
|
-
|
|
1000
|
+
actual_pickup_date?: string;
|
|
699
1001
|
/**
|
|
700
1002
|
* Format: date-time
|
|
701
1003
|
* @description Actual delivery date/time (ISO 8601 format)
|
|
702
1004
|
* @example 2024-12-25T14:00:00Z
|
|
703
1005
|
*/
|
|
704
|
-
|
|
1006
|
+
actual_delivery_date?: string;
|
|
705
1007
|
/**
|
|
706
1008
|
* Format: date-time
|
|
707
1009
|
* @description Estimated pickup date/time (ISO 8601 format)
|
|
708
1010
|
* @example 2024-12-23T09:00:00Z
|
|
709
1011
|
*/
|
|
710
|
-
|
|
1012
|
+
estimated_pickup_date?: string;
|
|
711
1013
|
/**
|
|
712
1014
|
* Format: date-time
|
|
713
1015
|
* @description Estimated delivery date/time (ISO 8601 format)
|
|
714
1016
|
* @example 2024-12-25T12:00:00Z
|
|
715
1017
|
*/
|
|
716
|
-
|
|
1018
|
+
estimated_delivery_date?: string;
|
|
717
1019
|
};
|
|
718
|
-
/** @description
|
|
719
|
-
|
|
1020
|
+
/** @description Carrier-reported delivery confirmation details */
|
|
1021
|
+
DeliveryConfirmation: {
|
|
720
1022
|
/**
|
|
721
|
-
*
|
|
722
|
-
* @
|
|
1023
|
+
* Format: date-time
|
|
1024
|
+
* @description Actual delivery time
|
|
1025
|
+
* @example 2026-01-15T14:30:00Z
|
|
723
1026
|
*/
|
|
724
|
-
|
|
1027
|
+
delivery_time?: string;
|
|
725
1028
|
/**
|
|
726
|
-
* @description
|
|
727
|
-
* @example
|
|
1029
|
+
* @description Formatted delivery address
|
|
1030
|
+
* @example 456 Market St, Oakland, CA 94607
|
|
728
1031
|
*/
|
|
729
|
-
|
|
1032
|
+
address?: string;
|
|
730
1033
|
/**
|
|
731
|
-
* Format:
|
|
732
|
-
* @description
|
|
733
|
-
* @example
|
|
1034
|
+
* Format: double
|
|
1035
|
+
* @description GPS latitude at delivery
|
|
1036
|
+
* @example 37.7749
|
|
734
1037
|
*/
|
|
735
|
-
|
|
736
|
-
};
|
|
737
|
-
/** @description A line item on an invoice */
|
|
738
|
-
InvoiceLineItem: {
|
|
1038
|
+
latitude?: number;
|
|
739
1039
|
/**
|
|
740
|
-
*
|
|
741
|
-
* @
|
|
1040
|
+
* Format: double
|
|
1041
|
+
* @description GPS longitude at delivery
|
|
1042
|
+
* @example -122.4194
|
|
742
1043
|
*/
|
|
743
|
-
|
|
1044
|
+
longitude?: number;
|
|
744
1045
|
/**
|
|
745
|
-
* @description
|
|
746
|
-
* @example
|
|
1046
|
+
* @description Name of person who received the shipment
|
|
1047
|
+
* @example Recipient Name
|
|
747
1048
|
*/
|
|
748
|
-
|
|
1049
|
+
signed_by?: string;
|
|
749
1050
|
/**
|
|
750
|
-
*
|
|
751
|
-
* @
|
|
752
|
-
* @example 500
|
|
1051
|
+
* @description URL to signature image
|
|
1052
|
+
* @example https://storage.oway.io/signatures/sig-12345.png
|
|
753
1053
|
*/
|
|
754
|
-
|
|
1054
|
+
signature_image_url?: string;
|
|
755
1055
|
/**
|
|
756
|
-
*
|
|
757
|
-
* @
|
|
758
|
-
* @example 2
|
|
1056
|
+
* @description URL to proof of delivery document
|
|
1057
|
+
* @example https://storage.oway.io/pod/pod-12345.pdf
|
|
759
1058
|
*/
|
|
760
|
-
|
|
1059
|
+
proof_of_delivery_url?: string;
|
|
761
1060
|
/**
|
|
762
|
-
* @description
|
|
763
|
-
* @example
|
|
1061
|
+
* @description Additional notes about the delivery
|
|
1062
|
+
* @example Delivered to front desk
|
|
764
1063
|
*/
|
|
765
|
-
|
|
766
|
-
};
|
|
767
|
-
/** @description Itemized invoice for a delivered shipment */
|
|
768
|
-
InvoiceResponse: {
|
|
1064
|
+
notes?: string;
|
|
769
1065
|
/**
|
|
770
|
-
*
|
|
771
|
-
* @
|
|
1066
|
+
* Format: date-time
|
|
1067
|
+
* @description When this confirmation was recorded
|
|
1068
|
+
* @example 2026-01-15T14:35:00Z
|
|
772
1069
|
*/
|
|
773
|
-
|
|
1070
|
+
recorded_at?: string;
|
|
1071
|
+
};
|
|
1072
|
+
/** @description Assigned driver information */
|
|
1073
|
+
Driver: {
|
|
774
1074
|
/**
|
|
775
|
-
* @description
|
|
776
|
-
* @example
|
|
1075
|
+
* @description Driver's full name
|
|
1076
|
+
* @example John Smith
|
|
777
1077
|
*/
|
|
778
|
-
|
|
1078
|
+
name?: string;
|
|
779
1079
|
/**
|
|
780
|
-
*
|
|
781
|
-
* @
|
|
782
|
-
* @example 2024-12-20T15:30:00Z
|
|
1080
|
+
* @description Driver's phone number in E.164 format (e.g., +15551234567)
|
|
1081
|
+
* @example +15551234567
|
|
783
1082
|
*/
|
|
784
|
-
|
|
1083
|
+
phone?: string;
|
|
785
1084
|
/**
|
|
786
|
-
*
|
|
787
|
-
* @
|
|
788
|
-
* @example 2024-12-18T09:00:00Z
|
|
1085
|
+
* @description Vehicle identifier assigned to this shipment
|
|
1086
|
+
* @example TRUCK-42
|
|
789
1087
|
*/
|
|
790
|
-
|
|
1088
|
+
vehicle_id?: string;
|
|
1089
|
+
};
|
|
1090
|
+
/** @description Order details visible to the carrier */
|
|
1091
|
+
Order: {
|
|
791
1092
|
/**
|
|
792
|
-
*
|
|
793
|
-
* @
|
|
794
|
-
* @example 2024-12-20T15:30:00Z
|
|
1093
|
+
* @description Human-readable PRO number for the shipment (5-character alphanumeric)
|
|
1094
|
+
* @example Y73Q0
|
|
795
1095
|
*/
|
|
796
|
-
|
|
1096
|
+
order_number?: string;
|
|
797
1097
|
/**
|
|
798
|
-
* @description
|
|
799
|
-
* @example
|
|
1098
|
+
* @description Current shipment status in the order lifecycle
|
|
1099
|
+
* @example CONFIRMED
|
|
1100
|
+
* @enum {string}
|
|
800
1101
|
*/
|
|
801
|
-
|
|
1102
|
+
order_status?: "INITIALIZED" | "CONFIRMED" | "ACCEPTED" | "ASSIGNED" | "PICKED_UP" | "IN_TRANSIT" | "DELIVERED" | "CANCELLED";
|
|
802
1103
|
/**
|
|
803
|
-
* @description
|
|
804
|
-
* @example
|
|
1104
|
+
* @description Cargo description
|
|
1105
|
+
* @example Electronics - 2 pallets shrink-wrapped
|
|
805
1106
|
*/
|
|
806
|
-
|
|
807
|
-
/** @description Line items representing the shipped goods */
|
|
808
|
-
lineItems?: components["schemas"]["InvoiceLineItem"][];
|
|
809
|
-
/** @description Itemized charges and fees */
|
|
810
|
-
charges?: components["schemas"]["InvoiceCharge"][];
|
|
1107
|
+
description?: string;
|
|
811
1108
|
/**
|
|
812
1109
|
* Format: int32
|
|
813
|
-
* @description Total of
|
|
814
|
-
* @example
|
|
1110
|
+
* @description Total number of pallets
|
|
1111
|
+
* @example 2
|
|
815
1112
|
*/
|
|
816
|
-
|
|
1113
|
+
total_pallet_count?: number;
|
|
817
1114
|
/**
|
|
818
|
-
* Format:
|
|
819
|
-
* @description Total weight
|
|
820
|
-
* @example
|
|
1115
|
+
* Format: float
|
|
1116
|
+
* @description Total weight in pounds
|
|
1117
|
+
* @example 1200
|
|
821
1118
|
*/
|
|
822
|
-
|
|
1119
|
+
total_pounds_weight?: number;
|
|
1120
|
+
/**
|
|
1121
|
+
* @description Shipper's purchase order number
|
|
1122
|
+
* @example PO-2026-4521
|
|
1123
|
+
*/
|
|
1124
|
+
po_number?: string;
|
|
1125
|
+
/**
|
|
1126
|
+
* @description Shipper's reference number
|
|
1127
|
+
* @example REF-8834
|
|
1128
|
+
*/
|
|
1129
|
+
ref_number?: string;
|
|
1130
|
+
/** @description Individual pallet/component details */
|
|
1131
|
+
components?: components["schemas"]["CarrierComponent"][];
|
|
1132
|
+
/**
|
|
1133
|
+
* Format: date-time
|
|
1134
|
+
* @description When the order was created
|
|
1135
|
+
* @example 2026-01-15T08:00:00Z
|
|
1136
|
+
*/
|
|
1137
|
+
created_at?: string;
|
|
1138
|
+
/**
|
|
1139
|
+
* Format: date-time
|
|
1140
|
+
* @description When the order was last updated
|
|
1141
|
+
* @example 2026-01-15T10:30:00Z
|
|
1142
|
+
*/
|
|
1143
|
+
updated_at?: string;
|
|
1144
|
+
};
|
|
1145
|
+
/** @description Carrier payout information */
|
|
1146
|
+
Payout: {
|
|
823
1147
|
/**
|
|
824
1148
|
* Format: int32
|
|
825
|
-
* @description Total
|
|
826
|
-
* @example
|
|
1149
|
+
* @description Total payout amount in cents (USD). Includes base payout plus all additional charges.
|
|
1150
|
+
* @example 125000
|
|
827
1151
|
*/
|
|
828
|
-
|
|
829
|
-
shipper?: components["schemas"]["Address"];
|
|
830
|
-
consignee?: components["schemas"]["Address"];
|
|
831
|
-
billTo?: components["schemas"]["Address"];
|
|
1152
|
+
total_in_cents?: number;
|
|
832
1153
|
};
|
|
833
|
-
/** @description
|
|
834
|
-
|
|
1154
|
+
/** @description Carrier-reported pickup confirmation details */
|
|
1155
|
+
PickupConfirmation: {
|
|
835
1156
|
/**
|
|
836
|
-
*
|
|
837
|
-
* @
|
|
1157
|
+
* Format: date-time
|
|
1158
|
+
* @description Actual pickup time
|
|
1159
|
+
* @example 2026-01-15T10:30:00Z
|
|
838
1160
|
*/
|
|
839
|
-
|
|
1161
|
+
pickup_time?: string;
|
|
840
1162
|
/**
|
|
841
|
-
* @description
|
|
842
|
-
* @example
|
|
1163
|
+
* @description Formatted pickup address
|
|
1164
|
+
* @example 123 Main St, San Francisco, CA 94102
|
|
843
1165
|
*/
|
|
844
|
-
|
|
1166
|
+
address?: string;
|
|
845
1167
|
/**
|
|
846
|
-
*
|
|
847
|
-
* @
|
|
1168
|
+
* Format: double
|
|
1169
|
+
* @description GPS latitude at pickup
|
|
1170
|
+
* @example 37.7749
|
|
848
1171
|
*/
|
|
849
|
-
|
|
850
|
-
};
|
|
851
|
-
/** @description Carrier API configuration response */
|
|
852
|
-
CarrierApiConfigResponse: {
|
|
1172
|
+
latitude?: number;
|
|
853
1173
|
/**
|
|
854
|
-
*
|
|
855
|
-
* @
|
|
1174
|
+
* Format: double
|
|
1175
|
+
* @description GPS longitude at pickup
|
|
1176
|
+
* @example -122.4194
|
|
856
1177
|
*/
|
|
857
|
-
|
|
1178
|
+
longitude?: number;
|
|
858
1179
|
/**
|
|
859
|
-
* @description
|
|
860
|
-
* @example
|
|
1180
|
+
* @description Name of driver who picked up
|
|
1181
|
+
* @example John Smith
|
|
1182
|
+
*/
|
|
1183
|
+
driver_name?: string;
|
|
1184
|
+
/**
|
|
1185
|
+
* @description Name of person who handed over the shipment
|
|
1186
|
+
* @example Jane Doe
|
|
861
1187
|
*/
|
|
862
|
-
|
|
1188
|
+
signed_by?: string;
|
|
863
1189
|
/**
|
|
864
|
-
* @description
|
|
865
|
-
* @example
|
|
1190
|
+
* @description Additional notes about the pickup
|
|
1191
|
+
* @example Picked up from dock 3
|
|
1192
|
+
*/
|
|
1193
|
+
notes?: string;
|
|
1194
|
+
/**
|
|
1195
|
+
* Format: date-time
|
|
1196
|
+
* @description When this confirmation was recorded
|
|
1197
|
+
* @example 2026-01-15T10:35:00Z
|
|
866
1198
|
*/
|
|
867
|
-
|
|
868
|
-
/** @description List of available API endpoints for this carrier */
|
|
869
|
-
availableEndpoints?: string[];
|
|
1199
|
+
recorded_at?: string;
|
|
870
1200
|
};
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
/**
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
/**
|
|
897
|
-
|
|
898
|
-
/** Format: float */
|
|
899
|
-
poundsWeight?: number;
|
|
900
|
-
palletDimensions?: number[];
|
|
901
|
-
freightClass?: string;
|
|
1201
|
+
/** @description Request body for confirming shipment delivery */
|
|
1202
|
+
DeliveryConfirmationRequest: {
|
|
1203
|
+
/**
|
|
1204
|
+
* Format: date-time
|
|
1205
|
+
* @description Time the shipment was delivered
|
|
1206
|
+
*/
|
|
1207
|
+
delivery_time: string;
|
|
1208
|
+
location?: components["schemas"]["EventLocation"];
|
|
1209
|
+
coordinates?: components["schemas"]["EventCoordinates"];
|
|
1210
|
+
/** @description Name of the person who signed for the delivery */
|
|
1211
|
+
signed_by?: string;
|
|
1212
|
+
/** @description URL to the signature image */
|
|
1213
|
+
signature_image_url?: string;
|
|
1214
|
+
/** @description URL to the proof of delivery document */
|
|
1215
|
+
proof_of_delivery_url?: string;
|
|
1216
|
+
/** @description Additional notes about the delivery */
|
|
1217
|
+
notes?: string;
|
|
1218
|
+
};
|
|
1219
|
+
/** @description Request body for rejecting an offer */
|
|
1220
|
+
RejectOfferRequest: {
|
|
1221
|
+
/**
|
|
1222
|
+
* @description Reason for rejecting the offer
|
|
1223
|
+
* @enum {string}
|
|
1224
|
+
*/
|
|
1225
|
+
reason: "capacity_unavailable" | "outside_service_area" | "rate_not_acceptable" | "timeline_not_feasible" | "other";
|
|
1226
|
+
/** @description Additional free-text explanation for the rejection */
|
|
1227
|
+
reason_text?: string;
|
|
902
1228
|
};
|
|
903
|
-
|
|
1229
|
+
/** @description Carrier offer details */
|
|
1230
|
+
Offer: {
|
|
1231
|
+
/**
|
|
1232
|
+
* @description Unique offer identifier
|
|
1233
|
+
* @example 507f1f77bcf86cd799439012
|
|
1234
|
+
*/
|
|
904
1235
|
id?: string;
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
1236
|
+
/**
|
|
1237
|
+
* @description Current status of the carrier offer
|
|
1238
|
+
* @enum {string}
|
|
1239
|
+
*/
|
|
1240
|
+
status?: "PENDING" | "ACCEPTED" | "PICKED_UP" | "DELIVERED" | "REJECTED" | "EXPIRED" | "CANCELLED";
|
|
1241
|
+
/**
|
|
1242
|
+
* @description Carrier's own tracking reference number
|
|
1243
|
+
* @example CARRIER-TRK-789
|
|
1244
|
+
*/
|
|
1245
|
+
carrier_reference?: string;
|
|
1246
|
+
/** @description Reason for rejection (populated when status is REJECTED) */
|
|
1247
|
+
rejection_reason?: string;
|
|
1248
|
+
/** @description Free-text explanation for rejection */
|
|
1249
|
+
rejection_reason_text?: string;
|
|
1250
|
+
order?: components["schemas"]["Order"];
|
|
1251
|
+
pickup?: components["schemas"]["CarrierAddress"];
|
|
1252
|
+
delivery?: components["schemas"]["CarrierAddress"];
|
|
1253
|
+
tracking?: components["schemas"]["CarrierTracking"];
|
|
1254
|
+
payout?: components["schemas"]["Payout"];
|
|
1255
|
+
assigned_driver?: components["schemas"]["Driver"];
|
|
1256
|
+
pickup_confirmation?: components["schemas"]["PickupConfirmation"];
|
|
1257
|
+
delivery_confirmation?: components["schemas"]["DeliveryConfirmation"];
|
|
1258
|
+
/**
|
|
1259
|
+
* @description PIN code for pickup verification
|
|
1260
|
+
* @example 1234
|
|
1261
|
+
*/
|
|
1262
|
+
pickup_pin?: string;
|
|
1263
|
+
/**
|
|
1264
|
+
* @description PIN code for delivery verification
|
|
1265
|
+
* @example 5678
|
|
1266
|
+
*/
|
|
1267
|
+
delivery_pin?: string;
|
|
1268
|
+
/**
|
|
1269
|
+
* Format: date-time
|
|
1270
|
+
* @description Offer expiration time — must accept or reject before this time
|
|
1271
|
+
* @example 2026-01-15T12:00:00Z
|
|
1272
|
+
*/
|
|
908
1273
|
deadline?: string;
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
deliveryPin?: string;
|
|
922
|
-
contacted?: boolean;
|
|
923
|
-
communicationExpired?: boolean;
|
|
924
|
-
emailThreadId?: string;
|
|
925
|
-
/** Format: int32 */
|
|
926
|
-
manualCentsPayoutOverride?: number;
|
|
927
|
-
additionalPayoutsInCents?: {
|
|
928
|
-
[key: string]: number;
|
|
929
|
-
};
|
|
930
|
-
/** Format: int32 */
|
|
931
|
-
totalPayoutInCents?: number;
|
|
932
|
-
realTimeVehicleLocationSnapshots?: components["schemas"]["VehicleLocationSnapshot"][];
|
|
933
|
-
tripFragmentMatches?: components["schemas"]["TripFragmentMatch"][];
|
|
934
|
-
/** Format: date-time */
|
|
935
|
-
createdAt?: string;
|
|
936
|
-
/** Format: date-time */
|
|
937
|
-
updatedAt?: string;
|
|
938
|
-
orderData?: components["schemas"]["Order"];
|
|
939
|
-
pickupAddressData?: components["schemas"]["Address"];
|
|
940
|
-
dropoffAddressData?: components["schemas"]["Address"];
|
|
941
|
-
orderAccessorials?: components["schemas"]["OrderAccessorials"];
|
|
1274
|
+
/**
|
|
1275
|
+
* Format: date-time
|
|
1276
|
+
* @description When this offer was created
|
|
1277
|
+
* @example 2026-01-15T08:00:00Z
|
|
1278
|
+
*/
|
|
1279
|
+
created_at?: string;
|
|
1280
|
+
/**
|
|
1281
|
+
* Format: date-time
|
|
1282
|
+
* @description When this offer was last updated
|
|
1283
|
+
* @example 2026-01-15T10:30:00Z
|
|
1284
|
+
*/
|
|
1285
|
+
updated_at?: string;
|
|
942
1286
|
};
|
|
943
|
-
|
|
1287
|
+
/** @description Request body for accepting an offer */
|
|
1288
|
+
AcceptOfferRequest: {
|
|
1289
|
+
/**
|
|
1290
|
+
* Format: date-time
|
|
1291
|
+
* @description Estimated time of pickup
|
|
1292
|
+
* @example 2026-01-16T14:00:00Z
|
|
1293
|
+
*/
|
|
1294
|
+
estimated_pickup_time?: string;
|
|
1295
|
+
/**
|
|
1296
|
+
* @description Carrier's internal reference number for this shipment
|
|
1297
|
+
* @example CARRIER-TRK-789
|
|
1298
|
+
*/
|
|
1299
|
+
carrier_reference?: string;
|
|
1300
|
+
/**
|
|
1301
|
+
* @description Name of the assigned driver
|
|
1302
|
+
* @example John Smith
|
|
1303
|
+
*/
|
|
1304
|
+
driver_name?: string;
|
|
1305
|
+
/**
|
|
1306
|
+
* @description Phone number of the assigned driver
|
|
1307
|
+
* @example +15551234567
|
|
1308
|
+
*/
|
|
1309
|
+
driver_phone?: string;
|
|
1310
|
+
/**
|
|
1311
|
+
* @description Identifier of the vehicle assigned to this shipment
|
|
1312
|
+
* @example TRUCK-42
|
|
1313
|
+
*/
|
|
1314
|
+
vehicle_id?: string;
|
|
1315
|
+
};
|
|
1316
|
+
/** @description A bundle of offers presented to a carrier */
|
|
1317
|
+
Bundle: {
|
|
1318
|
+
/**
|
|
1319
|
+
* @description Unique bundle identifier
|
|
1320
|
+
* @example 507f1f77bcf86cd799439012
|
|
1321
|
+
*/
|
|
944
1322
|
id?: string;
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
/**
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
paidAt?: string;
|
|
965
|
-
paidBy?: string;
|
|
966
|
-
paymentMethod?: string;
|
|
967
|
-
paymentNotes?: string;
|
|
968
|
-
confirmed?: boolean;
|
|
969
|
-
state?: string;
|
|
970
|
-
/** @enum {string} */
|
|
971
|
-
cancellationReason?: "unspecified" | "customer_cancellation" | "shipment_entry_error" | "low_coverage" | "unacceptable_margin" | "expired" | "carrier_exception" | "shipper_exception";
|
|
972
|
-
orderComponents?: components["schemas"]["ComponentDetails"][];
|
|
973
|
-
poNumber?: string;
|
|
974
|
-
refNumber?: string;
|
|
975
|
-
emailThreadId?: string;
|
|
976
|
-
/** Format: date-time */
|
|
977
|
-
decidedAt?: string;
|
|
978
|
-
/** Format: date-time */
|
|
979
|
-
paymentDueAt?: string;
|
|
980
|
-
/** Format: date-time */
|
|
981
|
-
createdAt?: string;
|
|
982
|
-
/** Format: date-time */
|
|
983
|
-
updatedAt?: string;
|
|
984
|
-
searchMatches?: components["schemas"]["SearchMatch"][];
|
|
985
|
-
/** Format: double */
|
|
986
|
-
avgPoundsPerCubicFoot?: number;
|
|
987
|
-
/** Format: double */
|
|
988
|
-
totalCubicFeet?: number;
|
|
989
|
-
orderPreConfirmation?: boolean;
|
|
990
|
-
/** Format: int32 */
|
|
991
|
-
totalPriceInCents?: number;
|
|
992
|
-
/** Format: int32 */
|
|
993
|
-
totalPriceInCentsWithoutBrokerCharges?: number;
|
|
1323
|
+
/**
|
|
1324
|
+
* @description Current bundle status
|
|
1325
|
+
* @enum {string}
|
|
1326
|
+
*/
|
|
1327
|
+
status?: "OPEN" | "EXPIRED" | "DECLINED" | "SUBSET_ACCEPTED" | "ACCEPTED";
|
|
1328
|
+
/** @description List of offers in this bundle with full details */
|
|
1329
|
+
offers?: components["schemas"]["Offer"][];
|
|
1330
|
+
/**
|
|
1331
|
+
* Format: date-time
|
|
1332
|
+
* @description When this bundle was created
|
|
1333
|
+
* @example 2026-01-15T08:00:00Z
|
|
1334
|
+
*/
|
|
1335
|
+
created_at?: string;
|
|
1336
|
+
/**
|
|
1337
|
+
* Format: date-time
|
|
1338
|
+
* @description When this bundle was last updated
|
|
1339
|
+
* @example 2026-01-15T10:30:00Z
|
|
1340
|
+
*/
|
|
1341
|
+
updated_at?: string;
|
|
994
1342
|
};
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1343
|
+
/** @description Request body for accepting a bundle, optionally excluding specific offers */
|
|
1344
|
+
AcceptBundleRequest: {
|
|
1345
|
+
/**
|
|
1346
|
+
* @description List of offer IDs to exclude from the bundle acceptance
|
|
1347
|
+
* @example [
|
|
1348
|
+
* "507f1f77bcf86cd799439011"
|
|
1349
|
+
* ]
|
|
1350
|
+
*/
|
|
1351
|
+
offer_ids_to_exclude?: string[];
|
|
1352
|
+
/**
|
|
1353
|
+
* @description Carrier's internal reference number for this bundle
|
|
1354
|
+
* @example CARRIER-BATCH-001
|
|
1355
|
+
*/
|
|
1356
|
+
carrier_reference?: string;
|
|
1357
|
+
/**
|
|
1358
|
+
* @description Name of the assigned driver
|
|
1359
|
+
* @example John Smith
|
|
1360
|
+
*/
|
|
1361
|
+
driver_name?: string;
|
|
1362
|
+
/**
|
|
1363
|
+
* @description Phone number of the assigned driver
|
|
1364
|
+
* @example +1-555-0100
|
|
1365
|
+
*/
|
|
1366
|
+
driver_phone?: string;
|
|
1367
|
+
/**
|
|
1368
|
+
* @description Identifier of the vehicle assigned to this bundle
|
|
1369
|
+
* @example TRUCK-42
|
|
1370
|
+
*/
|
|
1371
|
+
vehicle_id?: string;
|
|
1000
1372
|
};
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
/**
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
/**
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1373
|
+
/** @description Address information for pickup or delivery locations */
|
|
1374
|
+
Address: {
|
|
1375
|
+
/**
|
|
1376
|
+
* @description Name of the location or business
|
|
1377
|
+
* @example Fairgrounds Distribution Center
|
|
1378
|
+
*/
|
|
1379
|
+
name: string;
|
|
1380
|
+
/**
|
|
1381
|
+
* @description Primary street address
|
|
1382
|
+
* @example 1531 Junipero Avenue
|
|
1383
|
+
*/
|
|
1384
|
+
address1: string;
|
|
1385
|
+
/**
|
|
1386
|
+
* @description Secondary address line (suite, unit, etc.)
|
|
1387
|
+
* @example Dock 5
|
|
1388
|
+
*/
|
|
1389
|
+
address2?: string;
|
|
1390
|
+
/**
|
|
1391
|
+
* @description City name
|
|
1392
|
+
* @example Long Beach
|
|
1393
|
+
*/
|
|
1394
|
+
city: string;
|
|
1395
|
+
/**
|
|
1396
|
+
* @description Two-letter state abbreviation
|
|
1397
|
+
* @example CA
|
|
1398
|
+
*/
|
|
1399
|
+
state: string;
|
|
1400
|
+
/**
|
|
1401
|
+
* @description 5-digit ZIP code
|
|
1402
|
+
* @example 90804
|
|
1403
|
+
*/
|
|
1404
|
+
zipCode: string;
|
|
1405
|
+
/**
|
|
1406
|
+
* @description Contact phone number in E.164 format
|
|
1407
|
+
* @example +18087857650
|
|
1408
|
+
*/
|
|
1409
|
+
phoneNumber: string;
|
|
1410
|
+
/**
|
|
1411
|
+
* @description Name of the contact person at this location
|
|
1412
|
+
* @example Mike Johnson
|
|
1413
|
+
*/
|
|
1414
|
+
contactPerson: string;
|
|
1415
|
+
/**
|
|
1416
|
+
* @description Opening time for the location in 24-hour format (HH:mm). Defaults to 10:00 if not provided.
|
|
1417
|
+
* @example 10:00
|
|
1418
|
+
*/
|
|
1419
|
+
openTime?: string;
|
|
1420
|
+
/**
|
|
1421
|
+
* @description Closing time for the location in 24-hour format (HH:mm). Defaults to 16:00 if not provided.
|
|
1422
|
+
* @example 16:00
|
|
1423
|
+
*/
|
|
1424
|
+
closeTime?: string;
|
|
1425
|
+
/**
|
|
1426
|
+
* @description Additional notes or instructions for the driver
|
|
1427
|
+
* @example Dock 3, enter from back of building
|
|
1428
|
+
*/
|
|
1429
|
+
notes?: string;
|
|
1430
|
+
/**
|
|
1431
|
+
* @description Whether a liftgate is required at this location
|
|
1432
|
+
* @example false
|
|
1433
|
+
*/
|
|
1434
|
+
liftgateRequired?: boolean;
|
|
1435
|
+
/**
|
|
1436
|
+
* @description Whether this is a limited access location (residential, construction site, etc.)
|
|
1437
|
+
* @example false
|
|
1438
|
+
*/
|
|
1439
|
+
limitedAccess?: boolean;
|
|
1440
|
+
/**
|
|
1441
|
+
* @description Whether an appointment is required for pickup/delivery
|
|
1442
|
+
* @example true
|
|
1443
|
+
*/
|
|
1444
|
+
appointmentRequired?: boolean;
|
|
1445
|
+
/**
|
|
1446
|
+
* @description Whether a call-ahead notification is required before pickup/delivery. When true, the carrier will call the contact person before arriving at the location.
|
|
1447
|
+
* @example true
|
|
1448
|
+
*/
|
|
1449
|
+
callAheadRequired?: boolean;
|
|
1048
1450
|
};
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
/**
|
|
1059
|
-
|
|
1060
|
-
/**
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1451
|
+
/** @description Request to create a new shipment */
|
|
1452
|
+
CreateShipmentRequest: {
|
|
1453
|
+
/**
|
|
1454
|
+
* @description Optional ID of a previously generated quote.
|
|
1455
|
+
* @example 507f1f77bcf86cd799439013
|
|
1456
|
+
*/
|
|
1457
|
+
quoteId?: string;
|
|
1458
|
+
pickupAddress: components["schemas"]["Address"];
|
|
1459
|
+
deliveryAddress: components["schemas"]["Address"];
|
|
1460
|
+
/** @description List of cargo components in the shipment */
|
|
1461
|
+
orderComponents: components["schemas"]["OrderComponent"][];
|
|
1462
|
+
/**
|
|
1463
|
+
* @description Description of the shipment contents
|
|
1464
|
+
* @example Electronics - fragile
|
|
1465
|
+
*/
|
|
1466
|
+
description: string;
|
|
1467
|
+
/**
|
|
1468
|
+
* @description Purchase order number for reference
|
|
1469
|
+
* @example PO-2024-12345
|
|
1470
|
+
*/
|
|
1471
|
+
poNumber?: string;
|
|
1472
|
+
/**
|
|
1473
|
+
* @description Additional reference number
|
|
1474
|
+
* @example REF-ABC-123
|
|
1475
|
+
*/
|
|
1476
|
+
refNumber?: string;
|
|
1477
|
+
/**
|
|
1478
|
+
* Format: date-time
|
|
1479
|
+
* @description Required pickup date (ISO 8601 format)
|
|
1480
|
+
* @example 2024-12-24T08:00:00Z
|
|
1481
|
+
*/
|
|
1482
|
+
requiredPickupDate?: string;
|
|
1483
|
+
/**
|
|
1484
|
+
* Format: date-time
|
|
1485
|
+
* @description Required delivery by date (ISO 8601 format)
|
|
1486
|
+
* @example 2024-12-26T17:00:00Z
|
|
1487
|
+
*/
|
|
1488
|
+
requiredDeliveryBy?: string;
|
|
1489
|
+
};
|
|
1490
|
+
/** @description Pallet dimensions in inches. All fields optional: if any are omitted the entire dimensions object is treated as missing and the API default of 40 x 48 x 60 in. (length x width x height) is applied. */
|
|
1491
|
+
Dimensions: {
|
|
1492
|
+
/**
|
|
1493
|
+
* Format: int32
|
|
1494
|
+
* @description Length in inches
|
|
1495
|
+
* @example 48
|
|
1496
|
+
*/
|
|
1497
|
+
length?: number;
|
|
1498
|
+
/**
|
|
1499
|
+
* Format: int32
|
|
1500
|
+
* @description Width in inches
|
|
1501
|
+
* @example 48
|
|
1502
|
+
*/
|
|
1503
|
+
width?: number;
|
|
1504
|
+
/**
|
|
1505
|
+
* Format: int32
|
|
1506
|
+
* @description Height in inches
|
|
1507
|
+
* @example 72
|
|
1508
|
+
*/
|
|
1509
|
+
height?: number;
|
|
1510
|
+
};
|
|
1511
|
+
/** @description A cargo component (pallet group) in a shipment */
|
|
1512
|
+
OrderComponent: {
|
|
1513
|
+
/**
|
|
1514
|
+
* Format: int32
|
|
1515
|
+
* @description Number of pallets in this component
|
|
1516
|
+
* @example 2
|
|
1517
|
+
*/
|
|
1518
|
+
palletCount: number;
|
|
1519
|
+
/**
|
|
1520
|
+
* Format: int32
|
|
1521
|
+
* @description Weight per pallet in pounds
|
|
1522
|
+
* @example 500
|
|
1523
|
+
*/
|
|
1524
|
+
poundsWeight: number;
|
|
1525
|
+
/**
|
|
1526
|
+
* @deprecated
|
|
1527
|
+
* @description Pallet dimensions as [height, length, width] in inches. Deprecated: prefer the 'dimensions' object. Optional: if both 'palletDimensions' and 'dimensions' are omitted, the API defaults to 40 x 48 x 60 in. (length x width x height).
|
|
1528
|
+
* @example [
|
|
1529
|
+
* 72,
|
|
1530
|
+
* 48,
|
|
1531
|
+
* 48
|
|
1532
|
+
* ]
|
|
1533
|
+
*/
|
|
1534
|
+
palletDimensions?: number[];
|
|
1535
|
+
dimensions?: components["schemas"]["Dimensions"];
|
|
1536
|
+
};
|
|
1537
|
+
/** @description Request to generate a shipping quote. Quotes are valid for 2 days from creation. */
|
|
1538
|
+
QuoteRequest: {
|
|
1539
|
+
pickupAddress: components["schemas"]["Address"];
|
|
1540
|
+
deliveryAddress: components["schemas"]["Address"];
|
|
1541
|
+
/** @description List of pallets or freight pieces. */
|
|
1542
|
+
orderComponents: components["schemas"]["OrderComponent"][];
|
|
1543
|
+
/**
|
|
1544
|
+
* Format: date-time
|
|
1545
|
+
* @description Required pickup date (ISO 8601).
|
|
1546
|
+
* @example 2026-04-01T08:00:00Z
|
|
1547
|
+
*/
|
|
1548
|
+
requiredPickupDate?: string;
|
|
1549
|
+
};
|
|
1550
|
+
/** @description Response containing a shipping quote */
|
|
1551
|
+
QuoteResponse: {
|
|
1552
|
+
/**
|
|
1553
|
+
* @description Unique quote identifier
|
|
1554
|
+
* @example 507f1f77bcf86cd799439013
|
|
1555
|
+
*/
|
|
1556
|
+
id?: string;
|
|
1557
|
+
/**
|
|
1558
|
+
* Format: int32
|
|
1559
|
+
* @description Total quoted price in cents (USD)
|
|
1560
|
+
* @example 125000
|
|
1561
|
+
*/
|
|
1562
|
+
quotedPriceInCents?: number;
|
|
1563
|
+
/**
|
|
1564
|
+
* Format: date-time
|
|
1565
|
+
* @description When this quote expires (ISO 8601 format). Quotes are valid for 2 days.
|
|
1566
|
+
* @example 2024-12-20T15:30:00Z
|
|
1567
|
+
*/
|
|
1568
|
+
quoteExpirationTime?: string;
|
|
1569
|
+
/**
|
|
1570
|
+
* Format: int32
|
|
1571
|
+
* @description Number of business days to deliver the shipment after pickup. Pickup day is excluded; weekends are not counted. May be null when the ETA cannot be computed.
|
|
1572
|
+
* @example 2
|
|
1573
|
+
*/
|
|
1574
|
+
transitDays?: number | null;
|
|
1575
|
+
/**
|
|
1576
|
+
* Format: date-time
|
|
1577
|
+
* @description Estimated delivery date and time (ISO 8601 format, UTC). May be null when the ETA cannot be computed.
|
|
1578
|
+
* @example 2024-12-22T15:30:00Z
|
|
1579
|
+
*/
|
|
1580
|
+
estimatedDeliveryDate?: string | null;
|
|
1581
|
+
};
|
|
1582
|
+
/** @description Request a pre-signed URL to upload a file (signature image or proof of delivery) */
|
|
1583
|
+
UploadUrlRequest: {
|
|
1584
|
+
/**
|
|
1585
|
+
* @description Type of document being uploaded
|
|
1586
|
+
* @example SIGNATURE
|
|
1587
|
+
* @enum {string}
|
|
1588
|
+
*/
|
|
1589
|
+
document_type: "SIGNATURE" | "PROOF_OF_DELIVERY";
|
|
1590
|
+
/**
|
|
1591
|
+
* @description Content type of the file
|
|
1592
|
+
* @example image/png
|
|
1593
|
+
* @enum {string}
|
|
1594
|
+
*/
|
|
1595
|
+
content_type: "image/png" | "image/jpeg" | "application/pdf";
|
|
1596
|
+
/**
|
|
1597
|
+
* @description Original filename
|
|
1598
|
+
* @example signature-Y73Q0.png
|
|
1599
|
+
*/
|
|
1600
|
+
file_name?: string;
|
|
1601
|
+
};
|
|
1602
|
+
/** @description Pre-signed URL for uploading a file directly to storage */
|
|
1603
|
+
UploadUrlResponse: {
|
|
1604
|
+
/**
|
|
1605
|
+
* @description Document ID — use this to reference the uploaded file
|
|
1606
|
+
* @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
|
|
1607
|
+
*/
|
|
1608
|
+
document_id?: string;
|
|
1609
|
+
/**
|
|
1610
|
+
* @description Pre-signed PUT URL — upload your file directly to this URL using HTTP PUT with the specified content type
|
|
1611
|
+
* @example https://s3.amazonaws.com/oway-docs/...
|
|
1612
|
+
*/
|
|
1613
|
+
upload_url?: string;
|
|
1614
|
+
/**
|
|
1615
|
+
* @description Content type to use in the PUT request
|
|
1616
|
+
* @example image/png
|
|
1617
|
+
*/
|
|
1618
|
+
content_type?: string;
|
|
1619
|
+
/**
|
|
1620
|
+
* Format: date-time
|
|
1621
|
+
* @description URL expires at this time — upload before then
|
|
1622
|
+
* @example 2026-01-15T11:00:00Z
|
|
1623
|
+
*/
|
|
1624
|
+
expires_at?: string;
|
|
1625
|
+
};
|
|
1626
|
+
/** @description Real-time location update for a shipment in transit */
|
|
1627
|
+
OfferLocationUpdate: {
|
|
1628
|
+
/**
|
|
1629
|
+
* Format: double
|
|
1630
|
+
* @description Latitude in decimal degrees
|
|
1631
|
+
* @example 33.7701
|
|
1632
|
+
*/
|
|
1633
|
+
latitude: number;
|
|
1634
|
+
/**
|
|
1635
|
+
* Format: double
|
|
1636
|
+
* @description Longitude in decimal degrees
|
|
1637
|
+
* @example -118.1937
|
|
1638
|
+
*/
|
|
1639
|
+
longitude: number;
|
|
1640
|
+
/**
|
|
1641
|
+
* Format: int32
|
|
1642
|
+
* @description Heading in degrees (0-359, where 0 is north; -1 for unknown)
|
|
1643
|
+
* @example 270
|
|
1644
|
+
*/
|
|
1645
|
+
heading?: number;
|
|
1646
|
+
/**
|
|
1647
|
+
* Format: int32
|
|
1648
|
+
* @description Speed in miles per hour
|
|
1649
|
+
* @example 65
|
|
1650
|
+
*/
|
|
1651
|
+
speed_mph?: number;
|
|
1652
|
+
/**
|
|
1653
|
+
* Format: date-time
|
|
1654
|
+
* @description Timestamp of this location reading
|
|
1655
|
+
*/
|
|
1656
|
+
timestamp: string;
|
|
1657
|
+
};
|
|
1658
|
+
/** @description Acknowledgment of a location update */
|
|
1659
|
+
LocationAcknowledgment: {
|
|
1660
|
+
/**
|
|
1661
|
+
* @description Whether the location update was recorded
|
|
1662
|
+
* @example true
|
|
1663
|
+
*/
|
|
1664
|
+
recorded?: boolean;
|
|
1665
|
+
/**
|
|
1666
|
+
* @description Human-readable order number
|
|
1667
|
+
* @example Y73Q0
|
|
1668
|
+
*/
|
|
1669
|
+
order_number?: string;
|
|
1670
|
+
};
|
|
1671
|
+
/** @description Request body for reporting a shipment exception */
|
|
1672
|
+
ExceptionReportRequest: {
|
|
1673
|
+
/**
|
|
1674
|
+
* @description Type of exception that occurred
|
|
1675
|
+
* @enum {string}
|
|
1676
|
+
*/
|
|
1677
|
+
exception_type: "no_capacity" | "wrong_equipment" | "load_not_ready" | "failed_pickup" | "truck_breakdown" | "driver_hos_expired" | "damage_upon_receipt" | "damage_in_transit" | "damage_at_delivery" | "weather_delay" | "traffic_delay" | "address_incorrect" | "recipient_unavailable" | "customs_delay" | "delivery_attempted" | "other";
|
|
1678
|
+
/**
|
|
1679
|
+
* Format: date-time
|
|
1680
|
+
* @description Time the exception occurred
|
|
1681
|
+
*/
|
|
1682
|
+
exception_time: string;
|
|
1683
|
+
/** @description Description of the exception */
|
|
1684
|
+
description?: string;
|
|
1685
|
+
/**
|
|
1686
|
+
* Format: date-time
|
|
1687
|
+
* @description Revised estimated delivery time following the exception
|
|
1688
|
+
*/
|
|
1689
|
+
estimated_delivery_time?: string;
|
|
1690
|
+
location?: components["schemas"]["EventLocation"];
|
|
1691
|
+
};
|
|
1692
|
+
/** @description Response after reporting a shipment exception */
|
|
1693
|
+
ExceptionResponse: {
|
|
1694
|
+
/**
|
|
1695
|
+
* @description Human-readable order number
|
|
1696
|
+
* @example Y73Q0
|
|
1697
|
+
*/
|
|
1698
|
+
order_number?: string;
|
|
1699
|
+
/**
|
|
1700
|
+
* @description Whether the exception was successfully recorded
|
|
1701
|
+
* @example true
|
|
1702
|
+
*/
|
|
1703
|
+
exception_recorded?: boolean;
|
|
1704
|
+
/**
|
|
1705
|
+
* @description Whether notifications were sent to relevant parties (reserved for future use)
|
|
1706
|
+
* @example false
|
|
1707
|
+
*/
|
|
1708
|
+
notifications_sent?: boolean;
|
|
1709
|
+
};
|
|
1710
|
+
/** @description A single leg of a trip */
|
|
1711
|
+
CarrierTripLeg: {
|
|
1712
|
+
/**
|
|
1713
|
+
* Format: double
|
|
1714
|
+
* @description Start latitude
|
|
1715
|
+
* @example 33.787363
|
|
1716
|
+
*/
|
|
1717
|
+
start_lat?: number;
|
|
1718
|
+
/**
|
|
1719
|
+
* Format: double
|
|
1720
|
+
* @description Start longitude
|
|
1721
|
+
* @example -118.163715
|
|
1722
|
+
*/
|
|
1723
|
+
start_long?: number;
|
|
1724
|
+
/**
|
|
1725
|
+
* Format: date-time
|
|
1726
|
+
* @description Departure time (ISO 8601 format)
|
|
1727
|
+
* @example 2025-02-20T08:00:00Z
|
|
1728
|
+
*/
|
|
1729
|
+
start_time?: string;
|
|
1730
|
+
/**
|
|
1731
|
+
* Format: double
|
|
1732
|
+
* @description End latitude
|
|
1733
|
+
* @example 34.052235
|
|
1734
|
+
*/
|
|
1735
|
+
end_lat?: number;
|
|
1736
|
+
/**
|
|
1737
|
+
* Format: double
|
|
1738
|
+
* @description End longitude
|
|
1739
|
+
* @example -118.243683
|
|
1740
|
+
*/
|
|
1741
|
+
end_long?: number;
|
|
1742
|
+
/**
|
|
1743
|
+
* Format: date-time
|
|
1744
|
+
* @description Earliest arrival time (ISO 8601 format)
|
|
1745
|
+
* @example 2025-02-20T12:00:00Z
|
|
1746
|
+
*/
|
|
1747
|
+
arrival_window_start?: string;
|
|
1748
|
+
/**
|
|
1749
|
+
* Format: date-time
|
|
1750
|
+
* @description Latest arrival time (ISO 8601 format)
|
|
1751
|
+
* @example 2025-02-20T16:00:00Z
|
|
1752
|
+
*/
|
|
1753
|
+
arrival_window_end?: string;
|
|
1754
|
+
/**
|
|
1755
|
+
* @description Whether the vehicle is available for offers on this leg
|
|
1756
|
+
* @example true
|
|
1757
|
+
*/
|
|
1758
|
+
available_for_offers?: boolean;
|
|
1759
|
+
/**
|
|
1760
|
+
* Format: int32
|
|
1761
|
+
* @description Estimated drive time in minutes
|
|
1762
|
+
* @example 240
|
|
1763
|
+
*/
|
|
1764
|
+
est_drive_time_minutes?: number;
|
|
1765
|
+
/**
|
|
1766
|
+
* Format: int32
|
|
1767
|
+
* @description Stop sequence number (0-based)
|
|
1768
|
+
* @example 0
|
|
1769
|
+
*/
|
|
1770
|
+
stop_number?: number;
|
|
1771
|
+
};
|
|
1772
|
+
/** @description Trip data for a carrier vehicle */
|
|
1773
|
+
CarrierTripRequest: {
|
|
1774
|
+
/**
|
|
1775
|
+
* @description Trip identifier
|
|
1776
|
+
* @example trip-001
|
|
1777
|
+
*/
|
|
1778
|
+
id?: string;
|
|
1779
|
+
/**
|
|
1780
|
+
* @description Carrier identifier
|
|
1781
|
+
* @example carrier-123
|
|
1782
|
+
*/
|
|
1783
|
+
carrier_id?: string;
|
|
1784
|
+
/**
|
|
1785
|
+
* @description Vehicle identifier
|
|
1786
|
+
* @example TRUCK-001
|
|
1787
|
+
*/
|
|
1788
|
+
vehicle_id?: string;
|
|
1789
|
+
/**
|
|
1790
|
+
* @description Trip number
|
|
1791
|
+
* @example TRIP-2026-100
|
|
1792
|
+
*/
|
|
1793
|
+
trip_no?: string;
|
|
1794
|
+
/** @description Ordered list of trip legs */
|
|
1795
|
+
legs?: components["schemas"]["CarrierTripLeg"][];
|
|
1796
|
+
};
|
|
1797
|
+
/** @description Token request containing client credentials */
|
|
1798
|
+
TokenRequest: {
|
|
1799
|
+
/**
|
|
1800
|
+
* @description Client ID provided by Oway
|
|
1801
|
+
* @example abc123def456
|
|
1802
|
+
*/
|
|
1803
|
+
clientId: string;
|
|
1804
|
+
/**
|
|
1805
|
+
* @description Client secret provided by Oway
|
|
1806
|
+
* @example secret_xyz789
|
|
1807
|
+
*/
|
|
1808
|
+
clientSecret: string;
|
|
1809
|
+
};
|
|
1810
|
+
/** @description Error response for token requests */
|
|
1811
|
+
TokenErrorResponse: {
|
|
1812
|
+
/**
|
|
1813
|
+
* @description Error code
|
|
1814
|
+
* @example invalid_client
|
|
1815
|
+
*/
|
|
1816
|
+
error?: string;
|
|
1817
|
+
/**
|
|
1818
|
+
* @description Human-readable error description
|
|
1819
|
+
* @example Invalid client credentials
|
|
1820
|
+
*/
|
|
1821
|
+
errorDescription?: string;
|
|
1822
|
+
};
|
|
1823
|
+
/** @description Successful token response */
|
|
1824
|
+
TokenResponse: {
|
|
1825
|
+
/**
|
|
1826
|
+
* @description The access token to use for API requests
|
|
1827
|
+
* @example eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
|
|
1828
|
+
*/
|
|
1829
|
+
accessToken?: string;
|
|
1830
|
+
/**
|
|
1831
|
+
* @description Token type (always 'Bearer')
|
|
1832
|
+
* @example Bearer
|
|
1833
|
+
*/
|
|
1834
|
+
tokenType?: string;
|
|
1835
|
+
/**
|
|
1836
|
+
* Format: int32
|
|
1837
|
+
* @description Token validity in seconds
|
|
1838
|
+
* @example 86400
|
|
1839
|
+
*/
|
|
1840
|
+
expiresIn?: number;
|
|
1841
|
+
};
|
|
1842
|
+
/** @description Shipment tracking information */
|
|
1843
|
+
Tracking: {
|
|
1844
|
+
/**
|
|
1845
|
+
* @description Unique identifier for the order
|
|
1846
|
+
* @example 507f1f77bcf86cd799439011
|
|
1847
|
+
*/
|
|
1848
|
+
id?: string;
|
|
1849
|
+
/**
|
|
1850
|
+
* @description Human-readable PRO number for the shipment (5-character alphanumeric)
|
|
1851
|
+
* @example ZKYQ5
|
|
1852
|
+
*/
|
|
1853
|
+
orderNumber?: string;
|
|
1854
|
+
/**
|
|
1855
|
+
* @description Current shipment status in the order lifecycle
|
|
1856
|
+
* @example PICKED_UP
|
|
1857
|
+
* @enum {string}
|
|
1858
|
+
*/
|
|
1859
|
+
orderStatus?: "INITIALIZED" | "CONFIRMED" | "ACCEPTED" | "ASSIGNED" | "PICKED_UP" | "IN_TRANSIT" | "DELIVERED" | "CANCELLED";
|
|
1860
|
+
/**
|
|
1861
|
+
* Format: date-time
|
|
1862
|
+
* @description Actual pickup date/time (ISO 8601 format)
|
|
1863
|
+
* @example 2024-12-23T10:30:00Z
|
|
1864
|
+
*/
|
|
1865
|
+
actualPickupDate?: string;
|
|
1866
|
+
/**
|
|
1867
|
+
* Format: date-time
|
|
1868
|
+
* @description Actual delivery date/time (ISO 8601 format)
|
|
1869
|
+
* @example 2024-12-25T14:00:00Z
|
|
1870
|
+
*/
|
|
1871
|
+
actualDeliveryDate?: string;
|
|
1872
|
+
/**
|
|
1873
|
+
* Format: date-time
|
|
1874
|
+
* @description Estimated pickup date/time (ISO 8601 format)
|
|
1875
|
+
* @example 2024-12-23T09:00:00Z
|
|
1876
|
+
*/
|
|
1877
|
+
estimatedPickupDate?: string;
|
|
1878
|
+
/**
|
|
1879
|
+
* Format: date-time
|
|
1880
|
+
* @description Estimated delivery date/time (ISO 8601 format)
|
|
1881
|
+
* @example 2024-12-25T12:00:00Z
|
|
1882
|
+
*/
|
|
1883
|
+
estimatedDeliveryDate?: string;
|
|
1884
|
+
};
|
|
1885
|
+
/** @description A charge on an invoice */
|
|
1886
|
+
InvoiceCharge: {
|
|
1887
|
+
/**
|
|
1888
|
+
* @description Type of charge
|
|
1889
|
+
* @example BASE_FREIGHT
|
|
1890
|
+
*/
|
|
1891
|
+
chargeType?: string;
|
|
1892
|
+
/**
|
|
1893
|
+
* @description Human-readable description of the charge
|
|
1894
|
+
* @example Base Freight
|
|
1895
|
+
*/
|
|
1896
|
+
description?: string;
|
|
1897
|
+
/**
|
|
1898
|
+
* Format: int32
|
|
1899
|
+
* @description Amount in cents (USD)
|
|
1900
|
+
* @example 100000
|
|
1901
|
+
*/
|
|
1902
|
+
amountInCents?: number;
|
|
1903
|
+
};
|
|
1904
|
+
/** @description A line item on an invoice */
|
|
1905
|
+
InvoiceLineItem: {
|
|
1906
|
+
/**
|
|
1907
|
+
* @description Description of the item
|
|
1908
|
+
* @example General Freight
|
|
1909
|
+
*/
|
|
1910
|
+
description?: string;
|
|
1911
|
+
/**
|
|
1912
|
+
* @description Freight class
|
|
1913
|
+
* @example 85
|
|
1914
|
+
*/
|
|
1915
|
+
freightClass?: string;
|
|
1916
|
+
/**
|
|
1917
|
+
* Format: int32
|
|
1918
|
+
* @description Weight in pounds
|
|
1919
|
+
* @example 500
|
|
1920
|
+
*/
|
|
1921
|
+
weight?: number;
|
|
1922
|
+
/**
|
|
1923
|
+
* Format: int32
|
|
1924
|
+
* @description Number of pieces/pallets
|
|
1925
|
+
* @example 2
|
|
1926
|
+
*/
|
|
1927
|
+
quantity?: number;
|
|
1928
|
+
/**
|
|
1929
|
+
* @description Package type
|
|
1930
|
+
* @example PLT
|
|
1931
|
+
*/
|
|
1932
|
+
packageType?: string;
|
|
1933
|
+
};
|
|
1934
|
+
/** @description Itemized invoice for a delivered shipment */
|
|
1935
|
+
InvoiceResponse: {
|
|
1936
|
+
/**
|
|
1937
|
+
* @description Order ID
|
|
1938
|
+
* @example 67b6c5fcfbf1be6b24127646
|
|
1939
|
+
*/
|
|
1940
|
+
orderId?: string;
|
|
1941
|
+
/**
|
|
1942
|
+
* @description Human-readable order number (PRO number)
|
|
1943
|
+
* @example ZKYQ5
|
|
1944
|
+
*/
|
|
1945
|
+
orderNumber?: string;
|
|
1946
|
+
/**
|
|
1947
|
+
* Format: date-time
|
|
1948
|
+
* @description Invoice date (typically same as delivery date)
|
|
1949
|
+
* @example 2024-12-20T15:30:00Z
|
|
1950
|
+
*/
|
|
1951
|
+
invoiceDate?: string;
|
|
1952
|
+
/**
|
|
1953
|
+
* Format: date-time
|
|
1954
|
+
* @description Ship date (when the shipment was picked up)
|
|
1955
|
+
* @example 2024-12-18T09:00:00Z
|
|
1956
|
+
*/
|
|
1957
|
+
shipDate?: string;
|
|
1958
|
+
/**
|
|
1959
|
+
* Format: date-time
|
|
1960
|
+
* @description Delivery date (when the shipment was delivered)
|
|
1961
|
+
* @example 2024-12-20T15:30:00Z
|
|
1962
|
+
*/
|
|
1963
|
+
deliveryDate?: string;
|
|
1964
|
+
/**
|
|
1965
|
+
* @description Purchase order number (if provided)
|
|
1966
|
+
* @example PO-12345
|
|
1967
|
+
*/
|
|
1968
|
+
poNumber?: string;
|
|
1969
|
+
/**
|
|
1970
|
+
* @description Reference number (BOL number)
|
|
1971
|
+
* @example BOL-67890
|
|
1972
|
+
*/
|
|
1973
|
+
refNumber?: string;
|
|
1974
|
+
/** @description Line items representing the shipped goods */
|
|
1975
|
+
lineItems?: components["schemas"]["InvoiceLineItem"][];
|
|
1976
|
+
/** @description Itemized charges and fees */
|
|
1977
|
+
charges?: components["schemas"]["InvoiceCharge"][];
|
|
1978
|
+
/**
|
|
1979
|
+
* Format: int32
|
|
1980
|
+
* @description Total of all charges in cents (USD)
|
|
1981
|
+
* @example 125000
|
|
1982
|
+
*/
|
|
1983
|
+
totalChargesInCents?: number;
|
|
1984
|
+
/**
|
|
1985
|
+
* Format: int32
|
|
1986
|
+
* @description Total weight of the shipment in pounds
|
|
1987
|
+
* @example 1500
|
|
1988
|
+
*/
|
|
1989
|
+
totalWeight?: number;
|
|
1990
|
+
/**
|
|
1991
|
+
* Format: int32
|
|
1992
|
+
* @description Total number of pieces/pallets
|
|
1993
|
+
* @example 4
|
|
1994
|
+
*/
|
|
1995
|
+
totalPieces?: number;
|
|
1996
|
+
shipper?: components["schemas"]["Address"];
|
|
1997
|
+
consignee?: components["schemas"]["Address"];
|
|
1998
|
+
billTo?: components["schemas"]["Address"];
|
|
1999
|
+
};
|
|
2000
|
+
/** @description Response containing a document download link */
|
|
2001
|
+
DocumentResponse: {
|
|
2002
|
+
/**
|
|
2003
|
+
* @description Name of the document file
|
|
2004
|
+
* @example bol-ZKYQ5.pdf
|
|
2005
|
+
*/
|
|
2006
|
+
filename?: string;
|
|
2007
|
+
/**
|
|
2008
|
+
* @description MIME type of the document
|
|
2009
|
+
* @example application/pdf
|
|
2010
|
+
*/
|
|
2011
|
+
fileType?: string;
|
|
2012
|
+
/**
|
|
2013
|
+
* @description Pre-signed download URL (valid for limited time)
|
|
2014
|
+
* @example https://s3.amazonaws.com/...
|
|
2015
|
+
*/
|
|
2016
|
+
downloadLink?: string;
|
|
2017
|
+
};
|
|
2018
|
+
/** @description A single GPS tracking data point */
|
|
2019
|
+
TrackingPoint: {
|
|
2020
|
+
/**
|
|
2021
|
+
* Format: double
|
|
2022
|
+
* @description GPS latitude
|
|
2023
|
+
* @example 37.7749
|
|
2024
|
+
*/
|
|
2025
|
+
latitude?: number;
|
|
2026
|
+
/**
|
|
2027
|
+
* Format: double
|
|
2028
|
+
* @description GPS longitude
|
|
2029
|
+
* @example -122.4194
|
|
2030
|
+
*/
|
|
2031
|
+
longitude?: number;
|
|
2032
|
+
/**
|
|
2033
|
+
* Format: int32
|
|
2034
|
+
* @description Heading in degrees (0=North, 90=East, 180=South, 270=West)
|
|
2035
|
+
* @example 180
|
|
2036
|
+
*/
|
|
2037
|
+
heading?: number;
|
|
2038
|
+
/**
|
|
2039
|
+
* Format: int32
|
|
2040
|
+
* @description Speed in miles per hour
|
|
2041
|
+
* @example 65
|
|
2042
|
+
*/
|
|
2043
|
+
speed_mph?: number;
|
|
2044
|
+
/**
|
|
2045
|
+
* Format: date-time
|
|
2046
|
+
* @description When this position was recorded
|
|
2047
|
+
* @example 2026-01-15T10:30:00Z
|
|
2048
|
+
*/
|
|
2049
|
+
timestamp?: string;
|
|
2050
|
+
};
|
|
2051
|
+
/** @description Tracking history for a shipment */
|
|
2052
|
+
TrackingResponse: {
|
|
2053
|
+
/**
|
|
2054
|
+
* @description Human-readable order number
|
|
2055
|
+
* @example Y73Q0
|
|
2056
|
+
*/
|
|
2057
|
+
order_number?: string;
|
|
2058
|
+
/** @description Ordered list of GPS tracking points from pickup to current/delivery */
|
|
2059
|
+
points?: components["schemas"]["TrackingPoint"][];
|
|
2060
|
+
/**
|
|
2061
|
+
* Format: date-time
|
|
2062
|
+
* @description Timestamp of the most recent tracking point
|
|
2063
|
+
* @example 2026-01-15T14:30:00Z
|
|
2064
|
+
*/
|
|
2065
|
+
last_updated?: string;
|
|
2066
|
+
};
|
|
2067
|
+
/** @description Document download information */
|
|
2068
|
+
CarrierDocumentResponse: {
|
|
2069
|
+
/**
|
|
2070
|
+
* @description Name of the document file
|
|
2071
|
+
* @example bol-ZKYQ5.pdf
|
|
2072
|
+
*/
|
|
2073
|
+
filename?: string;
|
|
2074
|
+
/**
|
|
2075
|
+
* @description MIME type of the document
|
|
2076
|
+
* @example application/pdf
|
|
2077
|
+
*/
|
|
2078
|
+
file_type?: string;
|
|
2079
|
+
/**
|
|
2080
|
+
* @description Pre-signed download URL (valid for limited time)
|
|
2081
|
+
* @example https://s3.amazonaws.com/...
|
|
2082
|
+
*/
|
|
2083
|
+
download_link?: string;
|
|
2084
|
+
};
|
|
2085
|
+
};
|
|
2086
|
+
responses: never;
|
|
2087
|
+
parameters: never;
|
|
2088
|
+
requestBodies: never;
|
|
2089
|
+
headers: never;
|
|
2090
|
+
pathItems: never;
|
|
2091
|
+
}
|
|
2092
|
+
interface operations {
|
|
2093
|
+
confirmShipment: {
|
|
2094
|
+
parameters: {
|
|
2095
|
+
query?: never;
|
|
2096
|
+
header?: never;
|
|
2097
|
+
path: {
|
|
2098
|
+
/**
|
|
2099
|
+
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
2100
|
+
* @example ZKYQ5
|
|
2101
|
+
*/
|
|
2102
|
+
orderNumber: string;
|
|
2103
|
+
};
|
|
2104
|
+
cookie?: never;
|
|
2105
|
+
};
|
|
2106
|
+
requestBody?: never;
|
|
2107
|
+
responses: {
|
|
2108
|
+
/** @description Shipment confirmed successfully. Verify the response contains `orderStatus: CONFIRMED` to ensure confirmation succeeded. */
|
|
2109
|
+
200: {
|
|
2110
|
+
headers: {
|
|
2111
|
+
[name: string]: unknown;
|
|
2112
|
+
};
|
|
2113
|
+
content: {
|
|
2114
|
+
"application/json": components["schemas"]["Shipment"];
|
|
2115
|
+
};
|
|
2116
|
+
};
|
|
2117
|
+
/** @description Invalid request: orderNumber is required, order is not in INITIALIZED state, or is missing a quote */
|
|
2118
|
+
400: {
|
|
2119
|
+
headers: {
|
|
2120
|
+
[name: string]: unknown;
|
|
2121
|
+
};
|
|
2122
|
+
content: {
|
|
2123
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2124
|
+
};
|
|
2125
|
+
};
|
|
2126
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
2127
|
+
401: {
|
|
2128
|
+
headers: {
|
|
2129
|
+
[name: string]: unknown;
|
|
2130
|
+
};
|
|
2131
|
+
content: {
|
|
2132
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2133
|
+
};
|
|
2134
|
+
};
|
|
2135
|
+
/** @description Forbidden: missing/invalid API key, or shipment does not belong to your company */
|
|
2136
|
+
403: {
|
|
2137
|
+
headers: {
|
|
2138
|
+
[name: string]: unknown;
|
|
2139
|
+
};
|
|
2140
|
+
content: {
|
|
2141
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2142
|
+
};
|
|
2143
|
+
};
|
|
2144
|
+
/** @description Shipment not found */
|
|
2145
|
+
404: {
|
|
2146
|
+
headers: {
|
|
2147
|
+
[name: string]: unknown;
|
|
2148
|
+
};
|
|
2149
|
+
content: {
|
|
2150
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2151
|
+
};
|
|
2152
|
+
};
|
|
2153
|
+
/** @description Internal server error */
|
|
2154
|
+
500: {
|
|
2155
|
+
headers: {
|
|
2156
|
+
[name: string]: unknown;
|
|
2157
|
+
};
|
|
2158
|
+
content: {
|
|
2159
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2160
|
+
};
|
|
2161
|
+
};
|
|
2162
|
+
};
|
|
2163
|
+
};
|
|
2164
|
+
cancelShipment: {
|
|
2165
|
+
parameters: {
|
|
2166
|
+
query?: never;
|
|
2167
|
+
header?: never;
|
|
2168
|
+
path: {
|
|
2169
|
+
/**
|
|
2170
|
+
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
2171
|
+
* @example ZKYQ5
|
|
2172
|
+
*/
|
|
2173
|
+
orderNumber: string;
|
|
2174
|
+
};
|
|
2175
|
+
cookie?: never;
|
|
2176
|
+
};
|
|
2177
|
+
requestBody?: never;
|
|
2178
|
+
responses: {
|
|
2179
|
+
/** @description Shipment cancelled successfully */
|
|
2180
|
+
200: {
|
|
2181
|
+
headers: {
|
|
2182
|
+
[name: string]: unknown;
|
|
2183
|
+
};
|
|
2184
|
+
content: {
|
|
2185
|
+
"application/json": components["schemas"]["Shipment"];
|
|
2186
|
+
};
|
|
2187
|
+
};
|
|
2188
|
+
/** @description Invalid request: orderNumber is required, or order cannot be cancelled in its current state */
|
|
2189
|
+
400: {
|
|
2190
|
+
headers: {
|
|
2191
|
+
[name: string]: unknown;
|
|
2192
|
+
};
|
|
2193
|
+
content: {
|
|
2194
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2195
|
+
};
|
|
2196
|
+
};
|
|
2197
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
2198
|
+
401: {
|
|
2199
|
+
headers: {
|
|
2200
|
+
[name: string]: unknown;
|
|
2201
|
+
};
|
|
2202
|
+
content: {
|
|
2203
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2204
|
+
};
|
|
2205
|
+
};
|
|
2206
|
+
/** @description Forbidden: missing/invalid API key, or shipment does not belong to your company */
|
|
2207
|
+
403: {
|
|
2208
|
+
headers: {
|
|
2209
|
+
[name: string]: unknown;
|
|
2210
|
+
};
|
|
2211
|
+
content: {
|
|
2212
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2213
|
+
};
|
|
2214
|
+
};
|
|
2215
|
+
/** @description Shipment not found */
|
|
2216
|
+
404: {
|
|
2217
|
+
headers: {
|
|
2218
|
+
[name: string]: unknown;
|
|
2219
|
+
};
|
|
2220
|
+
content: {
|
|
2221
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2222
|
+
};
|
|
2223
|
+
};
|
|
2224
|
+
/** @description Internal server error */
|
|
2225
|
+
500: {
|
|
2226
|
+
headers: {
|
|
2227
|
+
[name: string]: unknown;
|
|
2228
|
+
};
|
|
2229
|
+
content: {
|
|
2230
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2231
|
+
};
|
|
2232
|
+
};
|
|
2233
|
+
};
|
|
2234
|
+
};
|
|
2235
|
+
confirmPickup: {
|
|
2236
|
+
parameters: {
|
|
2237
|
+
query?: never;
|
|
2238
|
+
header?: never;
|
|
2239
|
+
path: {
|
|
2240
|
+
/**
|
|
2241
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
2242
|
+
* @example Y73Q0
|
|
2243
|
+
*/
|
|
2244
|
+
identifier: string;
|
|
2245
|
+
};
|
|
2246
|
+
cookie?: never;
|
|
2247
|
+
};
|
|
2248
|
+
requestBody: {
|
|
2249
|
+
content: {
|
|
2250
|
+
"application/json": components["schemas"]["PickupConfirmationRequest"];
|
|
2251
|
+
};
|
|
2252
|
+
};
|
|
2253
|
+
responses: {
|
|
2254
|
+
/** @description Pickup confirmed, order status updated to PICKED_UP */
|
|
2255
|
+
200: {
|
|
2256
|
+
headers: {
|
|
2257
|
+
[name: string]: unknown;
|
|
2258
|
+
};
|
|
2259
|
+
content: {
|
|
2260
|
+
"application/json": components["schemas"]["CarrierShipment"];
|
|
2261
|
+
};
|
|
2262
|
+
};
|
|
2263
|
+
/** @description Invalid request: pickupTime is required */
|
|
2264
|
+
400: {
|
|
2265
|
+
headers: {
|
|
2266
|
+
[name: string]: unknown;
|
|
2267
|
+
};
|
|
2268
|
+
content: {
|
|
2269
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2270
|
+
};
|
|
2271
|
+
};
|
|
2272
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
2273
|
+
401: {
|
|
2274
|
+
headers: {
|
|
2275
|
+
[name: string]: unknown;
|
|
2276
|
+
};
|
|
2277
|
+
content: {
|
|
2278
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2279
|
+
};
|
|
2280
|
+
};
|
|
2281
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
2282
|
+
403: {
|
|
2283
|
+
headers: {
|
|
2284
|
+
[name: string]: unknown;
|
|
2285
|
+
};
|
|
2286
|
+
content: {
|
|
2287
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2288
|
+
};
|
|
2289
|
+
};
|
|
2290
|
+
/** @description Shipment not found */
|
|
2291
|
+
404: {
|
|
2292
|
+
headers: {
|
|
2293
|
+
[name: string]: unknown;
|
|
2294
|
+
};
|
|
2295
|
+
content: {
|
|
2296
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2297
|
+
};
|
|
2298
|
+
};
|
|
2299
|
+
/** @description Shipment not in valid state for pickup confirmation */
|
|
2300
|
+
409: {
|
|
2301
|
+
headers: {
|
|
2302
|
+
[name: string]: unknown;
|
|
2303
|
+
};
|
|
2304
|
+
content: {
|
|
2305
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2306
|
+
};
|
|
2307
|
+
};
|
|
2308
|
+
/** @description Internal server error */
|
|
2309
|
+
500: {
|
|
2310
|
+
headers: {
|
|
2311
|
+
[name: string]: unknown;
|
|
2312
|
+
};
|
|
2313
|
+
content: {
|
|
2314
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2315
|
+
};
|
|
2316
|
+
};
|
|
2317
|
+
};
|
|
2318
|
+
};
|
|
2319
|
+
confirmDelivery: {
|
|
2320
|
+
parameters: {
|
|
2321
|
+
query?: never;
|
|
2322
|
+
header?: never;
|
|
2323
|
+
path: {
|
|
2324
|
+
/**
|
|
2325
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
2326
|
+
* @example Y73Q0
|
|
2327
|
+
*/
|
|
2328
|
+
identifier: string;
|
|
2329
|
+
};
|
|
2330
|
+
cookie?: never;
|
|
2331
|
+
};
|
|
2332
|
+
requestBody: {
|
|
2333
|
+
content: {
|
|
2334
|
+
"application/json": components["schemas"]["DeliveryConfirmationRequest"];
|
|
2335
|
+
};
|
|
2336
|
+
};
|
|
2337
|
+
responses: {
|
|
2338
|
+
/** @description Delivery confirmed, order status updated to DELIVERED */
|
|
2339
|
+
200: {
|
|
2340
|
+
headers: {
|
|
2341
|
+
[name: string]: unknown;
|
|
2342
|
+
};
|
|
2343
|
+
content: {
|
|
2344
|
+
"application/json": components["schemas"]["CarrierShipment"];
|
|
2345
|
+
};
|
|
2346
|
+
};
|
|
2347
|
+
/** @description Invalid request: deliveryTime is required */
|
|
2348
|
+
400: {
|
|
2349
|
+
headers: {
|
|
2350
|
+
[name: string]: unknown;
|
|
2351
|
+
};
|
|
2352
|
+
content: {
|
|
2353
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2354
|
+
};
|
|
2355
|
+
};
|
|
2356
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
2357
|
+
401: {
|
|
2358
|
+
headers: {
|
|
2359
|
+
[name: string]: unknown;
|
|
2360
|
+
};
|
|
2361
|
+
content: {
|
|
2362
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2363
|
+
};
|
|
2364
|
+
};
|
|
2365
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
2366
|
+
403: {
|
|
2367
|
+
headers: {
|
|
2368
|
+
[name: string]: unknown;
|
|
2369
|
+
};
|
|
2370
|
+
content: {
|
|
2371
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2372
|
+
};
|
|
2373
|
+
};
|
|
2374
|
+
/** @description Shipment not found */
|
|
2375
|
+
404: {
|
|
2376
|
+
headers: {
|
|
2377
|
+
[name: string]: unknown;
|
|
2378
|
+
};
|
|
2379
|
+
content: {
|
|
2380
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2381
|
+
};
|
|
2382
|
+
};
|
|
2383
|
+
/** @description Shipment not in valid state for delivery confirmation */
|
|
2384
|
+
409: {
|
|
2385
|
+
headers: {
|
|
2386
|
+
[name: string]: unknown;
|
|
2387
|
+
};
|
|
2388
|
+
content: {
|
|
2389
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2390
|
+
};
|
|
2391
|
+
};
|
|
2392
|
+
/** @description Internal server error */
|
|
2393
|
+
500: {
|
|
2394
|
+
headers: {
|
|
2395
|
+
[name: string]: unknown;
|
|
2396
|
+
};
|
|
2397
|
+
content: {
|
|
2398
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2399
|
+
};
|
|
2400
|
+
};
|
|
2401
|
+
};
|
|
2402
|
+
};
|
|
2403
|
+
rejectOffer: {
|
|
2404
|
+
parameters: {
|
|
2405
|
+
query?: never;
|
|
2406
|
+
header?: never;
|
|
2407
|
+
path: {
|
|
2408
|
+
/**
|
|
2409
|
+
* @description Offer identifier (offerId, orderNumber, or carrierReference)
|
|
2410
|
+
* @example Y73Q0
|
|
2411
|
+
*/
|
|
2412
|
+
identifier: string;
|
|
2413
|
+
};
|
|
2414
|
+
cookie?: never;
|
|
2415
|
+
};
|
|
2416
|
+
requestBody: {
|
|
2417
|
+
content: {
|
|
2418
|
+
"application/json": components["schemas"]["RejectOfferRequest"];
|
|
2419
|
+
};
|
|
2420
|
+
};
|
|
2421
|
+
responses: {
|
|
2422
|
+
/** @description Offer rejected successfully */
|
|
2423
|
+
200: {
|
|
2424
|
+
headers: {
|
|
2425
|
+
[name: string]: unknown;
|
|
2426
|
+
};
|
|
2427
|
+
content: {
|
|
2428
|
+
"application/json": components["schemas"]["Offer"];
|
|
2429
|
+
};
|
|
2430
|
+
};
|
|
2431
|
+
/** @description Invalid request: reason is required */
|
|
2432
|
+
400: {
|
|
2433
|
+
headers: {
|
|
2434
|
+
[name: string]: unknown;
|
|
2435
|
+
};
|
|
2436
|
+
content: {
|
|
2437
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2438
|
+
};
|
|
2439
|
+
};
|
|
2440
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
2441
|
+
401: {
|
|
2442
|
+
headers: {
|
|
2443
|
+
[name: string]: unknown;
|
|
2444
|
+
};
|
|
2445
|
+
content: {
|
|
2446
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2447
|
+
};
|
|
2448
|
+
};
|
|
2449
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
2450
|
+
403: {
|
|
2451
|
+
headers: {
|
|
2452
|
+
[name: string]: unknown;
|
|
2453
|
+
};
|
|
2454
|
+
content: {
|
|
2455
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2456
|
+
};
|
|
2457
|
+
};
|
|
2458
|
+
/** @description Offer not found */
|
|
2459
|
+
404: {
|
|
2460
|
+
headers: {
|
|
2461
|
+
[name: string]: unknown;
|
|
2462
|
+
};
|
|
2463
|
+
content: {
|
|
2464
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2465
|
+
};
|
|
2466
|
+
};
|
|
2467
|
+
/** @description Offer not in valid state for rejection */
|
|
2468
|
+
409: {
|
|
2469
|
+
headers: {
|
|
2470
|
+
[name: string]: unknown;
|
|
2471
|
+
};
|
|
2472
|
+
content: {
|
|
2473
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2474
|
+
};
|
|
2475
|
+
};
|
|
2476
|
+
/** @description Internal server error */
|
|
2477
|
+
500: {
|
|
2478
|
+
headers: {
|
|
2479
|
+
[name: string]: unknown;
|
|
2480
|
+
};
|
|
2481
|
+
content: {
|
|
2482
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2483
|
+
};
|
|
2484
|
+
};
|
|
2485
|
+
};
|
|
2486
|
+
};
|
|
2487
|
+
acceptOffer: {
|
|
2488
|
+
parameters: {
|
|
2489
|
+
query?: never;
|
|
2490
|
+
header?: never;
|
|
2491
|
+
path: {
|
|
2492
|
+
/**
|
|
2493
|
+
* @description Offer identifier (offerId, orderNumber, or carrierReference)
|
|
2494
|
+
* @example Y73Q0
|
|
2495
|
+
*/
|
|
2496
|
+
identifier: string;
|
|
2497
|
+
};
|
|
2498
|
+
cookie?: never;
|
|
2499
|
+
};
|
|
2500
|
+
requestBody?: {
|
|
2501
|
+
content: {
|
|
2502
|
+
"application/json": components["schemas"]["AcceptOfferRequest"];
|
|
2503
|
+
};
|
|
2504
|
+
};
|
|
2505
|
+
responses: {
|
|
2506
|
+
/** @description Offer accepted successfully */
|
|
2507
|
+
200: {
|
|
2508
|
+
headers: {
|
|
2509
|
+
[name: string]: unknown;
|
|
2510
|
+
};
|
|
2511
|
+
content: {
|
|
2512
|
+
"application/json": components["schemas"]["Offer"];
|
|
2513
|
+
};
|
|
2514
|
+
};
|
|
2515
|
+
/** @description Invalid request */
|
|
2516
|
+
400: {
|
|
2517
|
+
headers: {
|
|
2518
|
+
[name: string]: unknown;
|
|
2519
|
+
};
|
|
2520
|
+
content: {
|
|
2521
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2522
|
+
};
|
|
2523
|
+
};
|
|
2524
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
2525
|
+
401: {
|
|
2526
|
+
headers: {
|
|
2527
|
+
[name: string]: unknown;
|
|
2528
|
+
};
|
|
2529
|
+
content: {
|
|
2530
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2531
|
+
};
|
|
2532
|
+
};
|
|
2533
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
2534
|
+
403: {
|
|
2535
|
+
headers: {
|
|
2536
|
+
[name: string]: unknown;
|
|
2537
|
+
};
|
|
2538
|
+
content: {
|
|
2539
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2540
|
+
};
|
|
2541
|
+
};
|
|
2542
|
+
/** @description Offer not found */
|
|
2543
|
+
404: {
|
|
2544
|
+
headers: {
|
|
2545
|
+
[name: string]: unknown;
|
|
2546
|
+
};
|
|
2547
|
+
content: {
|
|
2548
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2549
|
+
};
|
|
2550
|
+
};
|
|
2551
|
+
/** @description Offer not in valid state for acceptance */
|
|
2552
|
+
409: {
|
|
2553
|
+
headers: {
|
|
2554
|
+
[name: string]: unknown;
|
|
2555
|
+
};
|
|
2556
|
+
content: {
|
|
2557
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2558
|
+
};
|
|
2559
|
+
};
|
|
2560
|
+
/** @description Internal server error */
|
|
2561
|
+
500: {
|
|
2562
|
+
headers: {
|
|
2563
|
+
[name: string]: unknown;
|
|
2564
|
+
};
|
|
2565
|
+
content: {
|
|
2566
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2567
|
+
};
|
|
2568
|
+
};
|
|
2569
|
+
};
|
|
2570
|
+
};
|
|
2571
|
+
rejectBundle: {
|
|
2572
|
+
parameters: {
|
|
2573
|
+
query?: never;
|
|
2574
|
+
header?: never;
|
|
2575
|
+
path: {
|
|
2576
|
+
/**
|
|
2577
|
+
* @description Bundle ID
|
|
2578
|
+
* @example 507f1f77bcf86cd799439012
|
|
2579
|
+
*/
|
|
2580
|
+
bundleId: string;
|
|
2581
|
+
};
|
|
2582
|
+
cookie?: never;
|
|
2583
|
+
};
|
|
2584
|
+
requestBody?: never;
|
|
2585
|
+
responses: {
|
|
2586
|
+
/** @description Bundle rejected successfully */
|
|
2587
|
+
200: {
|
|
2588
|
+
headers: {
|
|
2589
|
+
[name: string]: unknown;
|
|
2590
|
+
};
|
|
2591
|
+
content: {
|
|
2592
|
+
"application/json": components["schemas"]["Bundle"];
|
|
2593
|
+
};
|
|
2594
|
+
};
|
|
2595
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
2596
|
+
401: {
|
|
2597
|
+
headers: {
|
|
2598
|
+
[name: string]: unknown;
|
|
2599
|
+
};
|
|
2600
|
+
content: {
|
|
2601
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2602
|
+
};
|
|
2603
|
+
};
|
|
2604
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
2605
|
+
403: {
|
|
2606
|
+
headers: {
|
|
2607
|
+
[name: string]: unknown;
|
|
2608
|
+
};
|
|
2609
|
+
content: {
|
|
2610
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2611
|
+
};
|
|
2612
|
+
};
|
|
2613
|
+
/** @description Bundle not found */
|
|
2614
|
+
404: {
|
|
2615
|
+
headers: {
|
|
2616
|
+
[name: string]: unknown;
|
|
2617
|
+
};
|
|
2618
|
+
content: {
|
|
2619
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2620
|
+
};
|
|
2621
|
+
};
|
|
2622
|
+
/** @description Bundle not in valid state for rejection */
|
|
2623
|
+
409: {
|
|
2624
|
+
headers: {
|
|
2625
|
+
[name: string]: unknown;
|
|
2626
|
+
};
|
|
2627
|
+
content: {
|
|
2628
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2629
|
+
};
|
|
2630
|
+
};
|
|
2631
|
+
/** @description Internal server error */
|
|
2632
|
+
500: {
|
|
2633
|
+
headers: {
|
|
2634
|
+
[name: string]: unknown;
|
|
2635
|
+
};
|
|
2636
|
+
content: {
|
|
2637
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2638
|
+
};
|
|
2639
|
+
};
|
|
2640
|
+
};
|
|
2641
|
+
};
|
|
2642
|
+
acceptBundle: {
|
|
2643
|
+
parameters: {
|
|
2644
|
+
query?: never;
|
|
2645
|
+
header?: never;
|
|
2646
|
+
path: {
|
|
2647
|
+
/**
|
|
2648
|
+
* @description Bundle ID
|
|
2649
|
+
* @example 507f1f77bcf86cd799439012
|
|
2650
|
+
*/
|
|
2651
|
+
bundleId: string;
|
|
2652
|
+
};
|
|
2653
|
+
cookie?: never;
|
|
2654
|
+
};
|
|
2655
|
+
requestBody?: {
|
|
2656
|
+
content: {
|
|
2657
|
+
"application/json": components["schemas"]["AcceptBundleRequest"];
|
|
2658
|
+
};
|
|
2659
|
+
};
|
|
2660
|
+
responses: {
|
|
2661
|
+
/** @description Bundle accepted successfully */
|
|
2662
|
+
200: {
|
|
2663
|
+
headers: {
|
|
2664
|
+
[name: string]: unknown;
|
|
2665
|
+
};
|
|
2666
|
+
content: {
|
|
2667
|
+
"application/json": components["schemas"]["Bundle"];
|
|
2668
|
+
};
|
|
2669
|
+
};
|
|
2670
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
2671
|
+
401: {
|
|
2672
|
+
headers: {
|
|
2673
|
+
[name: string]: unknown;
|
|
2674
|
+
};
|
|
2675
|
+
content: {
|
|
2676
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2677
|
+
};
|
|
2678
|
+
};
|
|
2679
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
2680
|
+
403: {
|
|
2681
|
+
headers: {
|
|
2682
|
+
[name: string]: unknown;
|
|
2683
|
+
};
|
|
2684
|
+
content: {
|
|
2685
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2686
|
+
};
|
|
2687
|
+
};
|
|
2688
|
+
/** @description Bundle not found */
|
|
2689
|
+
404: {
|
|
2690
|
+
headers: {
|
|
2691
|
+
[name: string]: unknown;
|
|
2692
|
+
};
|
|
2693
|
+
content: {
|
|
2694
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2695
|
+
};
|
|
2696
|
+
};
|
|
2697
|
+
/** @description Bundle not in valid state for acceptance */
|
|
2698
|
+
409: {
|
|
2699
|
+
headers: {
|
|
2700
|
+
[name: string]: unknown;
|
|
2701
|
+
};
|
|
2702
|
+
content: {
|
|
2703
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2704
|
+
};
|
|
2705
|
+
};
|
|
2706
|
+
/** @description Internal server error */
|
|
2707
|
+
500: {
|
|
2708
|
+
headers: {
|
|
2709
|
+
[name: string]: unknown;
|
|
2710
|
+
};
|
|
2711
|
+
content: {
|
|
2712
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2713
|
+
};
|
|
2714
|
+
};
|
|
2715
|
+
};
|
|
2716
|
+
};
|
|
2717
|
+
createShipment: {
|
|
2718
|
+
parameters: {
|
|
2719
|
+
query?: never;
|
|
2720
|
+
header?: never;
|
|
2721
|
+
path?: never;
|
|
2722
|
+
cookie?: never;
|
|
2723
|
+
};
|
|
2724
|
+
requestBody: {
|
|
2725
|
+
content: {
|
|
2726
|
+
"application/json": components["schemas"]["CreateShipmentRequest"];
|
|
2727
|
+
};
|
|
2728
|
+
};
|
|
2729
|
+
responses: {
|
|
2730
|
+
/** @description Shipment created successfully */
|
|
2731
|
+
200: {
|
|
2732
|
+
headers: {
|
|
2733
|
+
[name: string]: unknown;
|
|
2734
|
+
};
|
|
2735
|
+
content: {
|
|
2736
|
+
"application/json": components["schemas"]["Shipment"];
|
|
2737
|
+
};
|
|
2738
|
+
};
|
|
2739
|
+
/** @description Invalid request: validation error, quote mismatch, or expired quote */
|
|
2740
|
+
400: {
|
|
2741
|
+
headers: {
|
|
2742
|
+
[name: string]: unknown;
|
|
2743
|
+
};
|
|
2744
|
+
content: {
|
|
2745
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2746
|
+
};
|
|
2747
|
+
};
|
|
2748
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
2749
|
+
401: {
|
|
2750
|
+
headers: {
|
|
2751
|
+
[name: string]: unknown;
|
|
2752
|
+
};
|
|
2753
|
+
content: {
|
|
2754
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2755
|
+
};
|
|
2756
|
+
};
|
|
2757
|
+
/** @description Forbidden: missing/invalid API key, user not in company, or quote not owned by company */
|
|
2758
|
+
403: {
|
|
2759
|
+
headers: {
|
|
2760
|
+
[name: string]: unknown;
|
|
2761
|
+
};
|
|
2762
|
+
content: {
|
|
2763
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2764
|
+
};
|
|
2765
|
+
};
|
|
2766
|
+
/**
|
|
2767
|
+
* @description Unprocessable Entity. Possible reasons:
|
|
2768
|
+
*
|
|
2769
|
+
* - **Location Not Serviceable** (`reason: no_coverage`) — the lane is not within Oway's active coverage area.
|
|
2770
|
+
* - **Request Not Permitted** (`reason: account_restriction`) — the requested truck type or accessorial is not enabled for your account. Contact your Oway representative to update your available options.
|
|
2771
|
+
* - **Daily Trip Limit Reached** (`reason: daily_trip_limit`) — your account has reached its maximum shipments for the requested pickup date. You can still place orders for other dates.
|
|
2772
|
+
*/
|
|
2773
|
+
422: {
|
|
2774
|
+
headers: {
|
|
2775
|
+
[name: string]: unknown;
|
|
2776
|
+
};
|
|
2777
|
+
content: {
|
|
2778
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2779
|
+
};
|
|
2780
|
+
};
|
|
2781
|
+
/** @description Internal server error */
|
|
2782
|
+
500: {
|
|
2783
|
+
headers: {
|
|
2784
|
+
[name: string]: unknown;
|
|
2785
|
+
};
|
|
2786
|
+
content: {
|
|
2787
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2788
|
+
};
|
|
2789
|
+
};
|
|
2790
|
+
};
|
|
2791
|
+
};
|
|
2792
|
+
requestQuote: {
|
|
2793
|
+
parameters: {
|
|
2794
|
+
query?: never;
|
|
2795
|
+
header?: never;
|
|
2796
|
+
path?: never;
|
|
2797
|
+
cookie?: never;
|
|
2798
|
+
};
|
|
2799
|
+
requestBody: {
|
|
2800
|
+
content: {
|
|
2801
|
+
"application/json": components["schemas"]["QuoteRequest"];
|
|
2802
|
+
};
|
|
2803
|
+
};
|
|
2804
|
+
responses: {
|
|
2805
|
+
/** @description Quote generated successfully */
|
|
2806
|
+
200: {
|
|
2807
|
+
headers: {
|
|
2808
|
+
[name: string]: unknown;
|
|
2809
|
+
};
|
|
2810
|
+
content: {
|
|
2811
|
+
"application/json": components["schemas"]["QuoteResponse"];
|
|
2812
|
+
};
|
|
2813
|
+
};
|
|
2814
|
+
/** @description Invalid request: validation error */
|
|
2815
|
+
400: {
|
|
2816
|
+
headers: {
|
|
2817
|
+
[name: string]: unknown;
|
|
2818
|
+
};
|
|
2819
|
+
content: {
|
|
2820
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2821
|
+
};
|
|
2822
|
+
};
|
|
2823
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
2824
|
+
401: {
|
|
2825
|
+
headers: {
|
|
2826
|
+
[name: string]: unknown;
|
|
2827
|
+
};
|
|
2828
|
+
content: {
|
|
2829
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2830
|
+
};
|
|
2831
|
+
};
|
|
2832
|
+
/** @description Forbidden: missing/invalid API key, or user does not belong to the authorized company */
|
|
2833
|
+
403: {
|
|
2834
|
+
headers: {
|
|
2835
|
+
[name: string]: unknown;
|
|
2836
|
+
};
|
|
2837
|
+
content: {
|
|
2838
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2839
|
+
};
|
|
2840
|
+
};
|
|
2841
|
+
/**
|
|
2842
|
+
* @description Unprocessable Entity. Possible reasons:
|
|
2843
|
+
*
|
|
2844
|
+
* - **Location Not Serviceable** (`reason: no_coverage`) — the lane is not within Oway's active coverage area.
|
|
2845
|
+
* - **Request Not Permitted** (`reason: account_restriction`) — the requested truck type or accessorial is not enabled for your account. Contact your Oway representative to update your available options.
|
|
2846
|
+
* - **Daily Trip Limit Reached** (`reason: daily_trip_limit`) — your account has reached its maximum shipments for the requested pickup date. You can still place orders for other dates.
|
|
2847
|
+
*/
|
|
2848
|
+
422: {
|
|
2849
|
+
headers: {
|
|
2850
|
+
[name: string]: unknown;
|
|
2851
|
+
};
|
|
2852
|
+
content: {
|
|
2853
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2854
|
+
};
|
|
2855
|
+
};
|
|
2856
|
+
/** @description Internal server error */
|
|
2857
|
+
500: {
|
|
2858
|
+
headers: {
|
|
2859
|
+
[name: string]: unknown;
|
|
2860
|
+
};
|
|
2861
|
+
content: {
|
|
2862
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2863
|
+
};
|
|
2864
|
+
};
|
|
2865
|
+
};
|
|
2866
|
+
};
|
|
2867
|
+
requestUploadUrl: {
|
|
2868
|
+
parameters: {
|
|
2869
|
+
query?: never;
|
|
2870
|
+
header?: never;
|
|
2871
|
+
path: {
|
|
2872
|
+
/**
|
|
2873
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
2874
|
+
* @example Y73Q0
|
|
2875
|
+
*/
|
|
2876
|
+
identifier: string;
|
|
2877
|
+
};
|
|
2878
|
+
cookie?: never;
|
|
2879
|
+
};
|
|
2880
|
+
requestBody: {
|
|
2881
|
+
content: {
|
|
2882
|
+
"application/json": components["schemas"]["UploadUrlRequest"];
|
|
2883
|
+
};
|
|
2884
|
+
};
|
|
2885
|
+
responses: {
|
|
2886
|
+
/** @description Upload URL generated */
|
|
2887
|
+
200: {
|
|
2888
|
+
headers: {
|
|
2889
|
+
[name: string]: unknown;
|
|
2890
|
+
};
|
|
2891
|
+
content: {
|
|
2892
|
+
"application/json": components["schemas"]["UploadUrlResponse"];
|
|
2893
|
+
};
|
|
2894
|
+
};
|
|
2895
|
+
/** @description Invalid document type or content type */
|
|
2896
|
+
400: {
|
|
2897
|
+
headers: {
|
|
2898
|
+
[name: string]: unknown;
|
|
2899
|
+
};
|
|
2900
|
+
content: {
|
|
2901
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2902
|
+
};
|
|
2903
|
+
};
|
|
2904
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
2905
|
+
401: {
|
|
2906
|
+
headers: {
|
|
2907
|
+
[name: string]: unknown;
|
|
2908
|
+
};
|
|
2909
|
+
content: {
|
|
2910
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2911
|
+
};
|
|
2912
|
+
};
|
|
2913
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
2914
|
+
403: {
|
|
2915
|
+
headers: {
|
|
2916
|
+
[name: string]: unknown;
|
|
2917
|
+
};
|
|
2918
|
+
content: {
|
|
2919
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2920
|
+
};
|
|
2921
|
+
};
|
|
2922
|
+
/** @description Shipment not found */
|
|
2923
|
+
404: {
|
|
2924
|
+
headers: {
|
|
2925
|
+
[name: string]: unknown;
|
|
2926
|
+
};
|
|
2927
|
+
content: {
|
|
2928
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2929
|
+
};
|
|
2930
|
+
};
|
|
2931
|
+
/** @description Internal server error */
|
|
2932
|
+
500: {
|
|
2933
|
+
headers: {
|
|
2934
|
+
[name: string]: unknown;
|
|
2935
|
+
};
|
|
2936
|
+
content: {
|
|
2937
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2938
|
+
};
|
|
2939
|
+
};
|
|
2940
|
+
};
|
|
2941
|
+
};
|
|
2942
|
+
submitLocation: {
|
|
2943
|
+
parameters: {
|
|
2944
|
+
query?: never;
|
|
2945
|
+
header?: never;
|
|
2946
|
+
path: {
|
|
2947
|
+
/**
|
|
2948
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
2949
|
+
* @example Y73Q0
|
|
2950
|
+
*/
|
|
2951
|
+
identifier: string;
|
|
2952
|
+
};
|
|
2953
|
+
cookie?: never;
|
|
2954
|
+
};
|
|
2955
|
+
requestBody: {
|
|
2956
|
+
content: {
|
|
2957
|
+
"application/json": components["schemas"]["OfferLocationUpdate"];
|
|
2958
|
+
};
|
|
2959
|
+
};
|
|
2960
|
+
responses: {
|
|
2961
|
+
/** @description Location update acknowledged */
|
|
2962
|
+
200: {
|
|
2963
|
+
headers: {
|
|
2964
|
+
[name: string]: unknown;
|
|
2965
|
+
};
|
|
2966
|
+
content: {
|
|
2967
|
+
"application/json": components["schemas"]["LocationAcknowledgment"];
|
|
2968
|
+
};
|
|
2969
|
+
};
|
|
2970
|
+
/** @description Invalid request: latitude, longitude, and timestamp are required */
|
|
2971
|
+
400: {
|
|
2972
|
+
headers: {
|
|
2973
|
+
[name: string]: unknown;
|
|
2974
|
+
};
|
|
2975
|
+
content: {
|
|
2976
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2977
|
+
};
|
|
2978
|
+
};
|
|
2979
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
2980
|
+
401: {
|
|
2981
|
+
headers: {
|
|
2982
|
+
[name: string]: unknown;
|
|
2983
|
+
};
|
|
2984
|
+
content: {
|
|
2985
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2986
|
+
};
|
|
2987
|
+
};
|
|
2988
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
2989
|
+
403: {
|
|
2990
|
+
headers: {
|
|
2991
|
+
[name: string]: unknown;
|
|
2992
|
+
};
|
|
2993
|
+
content: {
|
|
2994
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
2995
|
+
};
|
|
2996
|
+
};
|
|
2997
|
+
/** @description Shipment not found */
|
|
2998
|
+
404: {
|
|
2999
|
+
headers: {
|
|
3000
|
+
[name: string]: unknown;
|
|
3001
|
+
};
|
|
3002
|
+
content: {
|
|
3003
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3004
|
+
};
|
|
3005
|
+
};
|
|
3006
|
+
/** @description Shipment not in valid state for location updates */
|
|
3007
|
+
409: {
|
|
3008
|
+
headers: {
|
|
3009
|
+
[name: string]: unknown;
|
|
3010
|
+
};
|
|
3011
|
+
content: {
|
|
3012
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3013
|
+
};
|
|
3014
|
+
};
|
|
3015
|
+
/** @description Internal server error */
|
|
3016
|
+
500: {
|
|
3017
|
+
headers: {
|
|
3018
|
+
[name: string]: unknown;
|
|
3019
|
+
};
|
|
3020
|
+
content: {
|
|
3021
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3022
|
+
};
|
|
3023
|
+
};
|
|
1088
3024
|
};
|
|
1089
3025
|
};
|
|
1090
|
-
|
|
1091
|
-
parameters: never;
|
|
1092
|
-
requestBodies: never;
|
|
1093
|
-
headers: never;
|
|
1094
|
-
pathItems: never;
|
|
1095
|
-
}
|
|
1096
|
-
interface operations {
|
|
1097
|
-
confirmShipment: {
|
|
3026
|
+
reportException: {
|
|
1098
3027
|
parameters: {
|
|
1099
3028
|
query?: never;
|
|
1100
3029
|
header?: never;
|
|
1101
3030
|
path: {
|
|
1102
3031
|
/**
|
|
1103
|
-
* @description
|
|
1104
|
-
* @example
|
|
3032
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
3033
|
+
* @example Y73Q0
|
|
1105
3034
|
*/
|
|
1106
|
-
|
|
3035
|
+
identifier: string;
|
|
1107
3036
|
};
|
|
1108
3037
|
cookie?: never;
|
|
1109
3038
|
};
|
|
1110
|
-
requestBody
|
|
3039
|
+
requestBody: {
|
|
3040
|
+
content: {
|
|
3041
|
+
"application/json": components["schemas"]["ExceptionReportRequest"];
|
|
3042
|
+
};
|
|
3043
|
+
};
|
|
1111
3044
|
responses: {
|
|
1112
|
-
/** @description
|
|
3045
|
+
/** @description Exception recorded */
|
|
1113
3046
|
200: {
|
|
1114
3047
|
headers: {
|
|
1115
3048
|
[name: string]: unknown;
|
|
1116
3049
|
};
|
|
1117
3050
|
content: {
|
|
1118
|
-
"application/json": components["schemas"]["
|
|
3051
|
+
"application/json": components["schemas"]["ExceptionResponse"];
|
|
1119
3052
|
};
|
|
1120
3053
|
};
|
|
1121
|
-
/** @description Invalid request:
|
|
3054
|
+
/** @description Invalid request: exceptionType and exceptionTime are required */
|
|
1122
3055
|
400: {
|
|
1123
3056
|
headers: {
|
|
1124
3057
|
[name: string]: unknown;
|
|
1125
3058
|
};
|
|
1126
3059
|
content: {
|
|
1127
|
-
"application/json": components["schemas"]["
|
|
3060
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1128
3061
|
};
|
|
1129
3062
|
};
|
|
1130
|
-
/** @description Unauthorized: missing or invalid
|
|
3063
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
1131
3064
|
401: {
|
|
1132
3065
|
headers: {
|
|
1133
3066
|
[name: string]: unknown;
|
|
1134
3067
|
};
|
|
1135
3068
|
content: {
|
|
1136
|
-
"application/json": components["schemas"]["
|
|
3069
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1137
3070
|
};
|
|
1138
3071
|
};
|
|
1139
|
-
/** @description Forbidden: missing/invalid API key
|
|
3072
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
1140
3073
|
403: {
|
|
1141
3074
|
headers: {
|
|
1142
3075
|
[name: string]: unknown;
|
|
1143
3076
|
};
|
|
1144
3077
|
content: {
|
|
1145
|
-
"application/json": components["schemas"]["
|
|
3078
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1146
3079
|
};
|
|
1147
3080
|
};
|
|
1148
3081
|
/** @description Shipment not found */
|
|
@@ -1151,7 +3084,16 @@ interface operations {
|
|
|
1151
3084
|
[name: string]: unknown;
|
|
1152
3085
|
};
|
|
1153
3086
|
content: {
|
|
1154
|
-
"application/json": components["schemas"]["
|
|
3087
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3088
|
+
};
|
|
3089
|
+
};
|
|
3090
|
+
/** @description Shipment not in valid state for exception reporting */
|
|
3091
|
+
409: {
|
|
3092
|
+
headers: {
|
|
3093
|
+
[name: string]: unknown;
|
|
3094
|
+
};
|
|
3095
|
+
content: {
|
|
3096
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1155
3097
|
};
|
|
1156
3098
|
};
|
|
1157
3099
|
/** @description Internal server error */
|
|
@@ -1160,69 +3102,67 @@ interface operations {
|
|
|
1160
3102
|
[name: string]: unknown;
|
|
1161
3103
|
};
|
|
1162
3104
|
content: {
|
|
1163
|
-
"application/json": components["schemas"]["
|
|
3105
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1164
3106
|
};
|
|
1165
3107
|
};
|
|
1166
3108
|
};
|
|
1167
3109
|
};
|
|
1168
|
-
|
|
3110
|
+
addTrips: {
|
|
1169
3111
|
parameters: {
|
|
1170
3112
|
query?: never;
|
|
1171
3113
|
header?: never;
|
|
1172
|
-
path
|
|
1173
|
-
/**
|
|
1174
|
-
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
1175
|
-
* @example ZKYQ5
|
|
1176
|
-
*/
|
|
1177
|
-
orderNumber: string;
|
|
1178
|
-
};
|
|
3114
|
+
path?: never;
|
|
1179
3115
|
cookie?: never;
|
|
1180
3116
|
};
|
|
1181
|
-
requestBody
|
|
3117
|
+
requestBody: {
|
|
3118
|
+
content: {
|
|
3119
|
+
"application/json": components["schemas"]["CarrierTripRequest"][];
|
|
3120
|
+
};
|
|
3121
|
+
};
|
|
1182
3122
|
responses: {
|
|
1183
|
-
/** @description
|
|
3123
|
+
/** @description Trips accepted and processed; returns count of trips added */
|
|
1184
3124
|
200: {
|
|
1185
3125
|
headers: {
|
|
1186
3126
|
[name: string]: unknown;
|
|
1187
3127
|
};
|
|
1188
3128
|
content: {
|
|
1189
|
-
"application/json":
|
|
3129
|
+
"application/json": number;
|
|
1190
3130
|
};
|
|
1191
3131
|
};
|
|
1192
|
-
/** @description Invalid request:
|
|
3132
|
+
/** @description Invalid request: missing required fields or invalid trip data */
|
|
1193
3133
|
400: {
|
|
1194
3134
|
headers: {
|
|
1195
3135
|
[name: string]: unknown;
|
|
1196
3136
|
};
|
|
1197
3137
|
content: {
|
|
1198
|
-
"application/json": components["schemas"]["
|
|
3138
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1199
3139
|
};
|
|
1200
3140
|
};
|
|
1201
|
-
/** @description Unauthorized: missing or invalid
|
|
3141
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
1202
3142
|
401: {
|
|
1203
3143
|
headers: {
|
|
1204
3144
|
[name: string]: unknown;
|
|
1205
3145
|
};
|
|
1206
3146
|
content: {
|
|
1207
|
-
"application/json": components["schemas"]["
|
|
3147
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1208
3148
|
};
|
|
1209
3149
|
};
|
|
1210
|
-
/** @description Forbidden:
|
|
3150
|
+
/** @description Forbidden: API access is not enabled for this carrier */
|
|
1211
3151
|
403: {
|
|
1212
3152
|
headers: {
|
|
1213
3153
|
[name: string]: unknown;
|
|
1214
3154
|
};
|
|
1215
3155
|
content: {
|
|
1216
|
-
"application/json": components["schemas"]["
|
|
3156
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1217
3157
|
};
|
|
1218
3158
|
};
|
|
1219
|
-
/** @description
|
|
3159
|
+
/** @description Carrier not found */
|
|
1220
3160
|
404: {
|
|
1221
3161
|
headers: {
|
|
1222
3162
|
[name: string]: unknown;
|
|
1223
3163
|
};
|
|
1224
3164
|
content: {
|
|
1225
|
-
"application/json": components["schemas"]["
|
|
3165
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1226
3166
|
};
|
|
1227
3167
|
};
|
|
1228
3168
|
/** @description Internal server error */
|
|
@@ -1231,12 +3171,12 @@ interface operations {
|
|
|
1231
3171
|
[name: string]: unknown;
|
|
1232
3172
|
};
|
|
1233
3173
|
content: {
|
|
1234
|
-
"application/json": components["schemas"]["
|
|
3174
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1235
3175
|
};
|
|
1236
3176
|
};
|
|
1237
3177
|
};
|
|
1238
3178
|
};
|
|
1239
|
-
|
|
3179
|
+
getToken: {
|
|
1240
3180
|
parameters: {
|
|
1241
3181
|
query?: never;
|
|
1242
3182
|
header?: never;
|
|
@@ -1245,21 +3185,56 @@ interface operations {
|
|
|
1245
3185
|
};
|
|
1246
3186
|
requestBody: {
|
|
1247
3187
|
content: {
|
|
1248
|
-
"application/json": components["schemas"]["
|
|
3188
|
+
"application/json": components["schemas"]["TokenRequest"];
|
|
1249
3189
|
};
|
|
1250
3190
|
};
|
|
1251
3191
|
responses: {
|
|
1252
|
-
/** @description
|
|
3192
|
+
/** @description Token successfully generated */
|
|
1253
3193
|
200: {
|
|
1254
3194
|
headers: {
|
|
1255
3195
|
[name: string]: unknown;
|
|
1256
3196
|
};
|
|
1257
3197
|
content: {
|
|
1258
|
-
"application/json": components["schemas"]["
|
|
3198
|
+
"application/json": components["schemas"]["TokenResponse"];
|
|
1259
3199
|
};
|
|
1260
3200
|
};
|
|
1261
|
-
/** @description Invalid request:
|
|
3201
|
+
/** @description Invalid request: missing required fields */
|
|
1262
3202
|
400: {
|
|
3203
|
+
headers: {
|
|
3204
|
+
[name: string]: unknown;
|
|
3205
|
+
};
|
|
3206
|
+
content: {
|
|
3207
|
+
"application/json": components["schemas"]["TokenErrorResponse"];
|
|
3208
|
+
};
|
|
3209
|
+
};
|
|
3210
|
+
/** @description Unauthorized: invalid credentials */
|
|
3211
|
+
401: {
|
|
3212
|
+
headers: {
|
|
3213
|
+
[name: string]: unknown;
|
|
3214
|
+
};
|
|
3215
|
+
content: {
|
|
3216
|
+
"application/json": components["schemas"]["TokenErrorResponse"];
|
|
3217
|
+
};
|
|
3218
|
+
};
|
|
3219
|
+
};
|
|
3220
|
+
};
|
|
3221
|
+
getShipment: {
|
|
3222
|
+
parameters: {
|
|
3223
|
+
query?: never;
|
|
3224
|
+
header?: never;
|
|
3225
|
+
path: {
|
|
3226
|
+
/**
|
|
3227
|
+
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
3228
|
+
* @example ZKYQ5
|
|
3229
|
+
*/
|
|
3230
|
+
orderNumber: string;
|
|
3231
|
+
};
|
|
3232
|
+
cookie?: never;
|
|
3233
|
+
};
|
|
3234
|
+
requestBody?: never;
|
|
3235
|
+
responses: {
|
|
3236
|
+
/** @description Shipment retrieved successfully */
|
|
3237
|
+
200: {
|
|
1263
3238
|
headers: {
|
|
1264
3239
|
[name: string]: unknown;
|
|
1265
3240
|
};
|
|
@@ -1267,64 +3242,75 @@ interface operations {
|
|
|
1267
3242
|
"application/json": components["schemas"]["Shipment"];
|
|
1268
3243
|
};
|
|
1269
3244
|
};
|
|
3245
|
+
/** @description Invalid request: orderNumber is required */
|
|
3246
|
+
400: {
|
|
3247
|
+
headers: {
|
|
3248
|
+
[name: string]: unknown;
|
|
3249
|
+
};
|
|
3250
|
+
content: {
|
|
3251
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3252
|
+
};
|
|
3253
|
+
};
|
|
1270
3254
|
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
1271
3255
|
401: {
|
|
1272
3256
|
headers: {
|
|
1273
3257
|
[name: string]: unknown;
|
|
1274
3258
|
};
|
|
1275
3259
|
content: {
|
|
1276
|
-
"application/json": components["schemas"]["
|
|
3260
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1277
3261
|
};
|
|
1278
3262
|
};
|
|
1279
|
-
/** @description Forbidden: missing/invalid API key,
|
|
3263
|
+
/** @description Forbidden: missing/invalid API key, or shipment does not belong to your company */
|
|
1280
3264
|
403: {
|
|
1281
3265
|
headers: {
|
|
1282
3266
|
[name: string]: unknown;
|
|
1283
3267
|
};
|
|
1284
3268
|
content: {
|
|
1285
|
-
"application/json": components["schemas"]["
|
|
3269
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1286
3270
|
};
|
|
1287
3271
|
};
|
|
1288
|
-
/** @description
|
|
1289
|
-
|
|
3272
|
+
/** @description Shipment not found */
|
|
3273
|
+
404: {
|
|
1290
3274
|
headers: {
|
|
1291
3275
|
[name: string]: unknown;
|
|
1292
3276
|
};
|
|
1293
3277
|
content: {
|
|
1294
|
-
"application/json": components["schemas"]["
|
|
3278
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1295
3279
|
};
|
|
1296
3280
|
};
|
|
1297
3281
|
};
|
|
1298
3282
|
};
|
|
1299
|
-
|
|
3283
|
+
trackShipment: {
|
|
1300
3284
|
parameters: {
|
|
1301
3285
|
query?: never;
|
|
1302
3286
|
header?: never;
|
|
1303
|
-
path
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
3287
|
+
path: {
|
|
3288
|
+
/**
|
|
3289
|
+
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
3290
|
+
* @example ZKYQ5
|
|
3291
|
+
*/
|
|
3292
|
+
orderNumber: string;
|
|
1309
3293
|
};
|
|
3294
|
+
cookie?: never;
|
|
1310
3295
|
};
|
|
3296
|
+
requestBody?: never;
|
|
1311
3297
|
responses: {
|
|
1312
|
-
/** @description
|
|
3298
|
+
/** @description Tracking information retrieved successfully */
|
|
1313
3299
|
200: {
|
|
1314
3300
|
headers: {
|
|
1315
3301
|
[name: string]: unknown;
|
|
1316
3302
|
};
|
|
1317
3303
|
content: {
|
|
1318
|
-
"application/json": components["schemas"]["
|
|
3304
|
+
"application/json": components["schemas"]["Tracking"];
|
|
1319
3305
|
};
|
|
1320
3306
|
};
|
|
1321
|
-
/** @description Invalid request:
|
|
3307
|
+
/** @description Invalid request: orderNumber is required */
|
|
1322
3308
|
400: {
|
|
1323
3309
|
headers: {
|
|
1324
3310
|
[name: string]: unknown;
|
|
1325
3311
|
};
|
|
1326
3312
|
content: {
|
|
1327
|
-
"application/json": components["schemas"]["
|
|
3313
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1328
3314
|
};
|
|
1329
3315
|
};
|
|
1330
3316
|
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
@@ -1333,88 +3319,151 @@ interface operations {
|
|
|
1333
3319
|
[name: string]: unknown;
|
|
1334
3320
|
};
|
|
1335
3321
|
content: {
|
|
1336
|
-
"application/json": components["schemas"]["
|
|
3322
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1337
3323
|
};
|
|
1338
3324
|
};
|
|
1339
|
-
/** @description Forbidden: missing/invalid API key, or
|
|
3325
|
+
/** @description Forbidden: missing/invalid API key, or shipment does not belong to your company */
|
|
1340
3326
|
403: {
|
|
1341
3327
|
headers: {
|
|
1342
3328
|
[name: string]: unknown;
|
|
1343
3329
|
};
|
|
1344
3330
|
content: {
|
|
1345
|
-
"application/json": components["schemas"]["
|
|
3331
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1346
3332
|
};
|
|
1347
3333
|
};
|
|
1348
|
-
/** @description
|
|
1349
|
-
|
|
3334
|
+
/** @description Shipment not found */
|
|
3335
|
+
404: {
|
|
1350
3336
|
headers: {
|
|
1351
3337
|
[name: string]: unknown;
|
|
1352
3338
|
};
|
|
1353
3339
|
content: {
|
|
1354
|
-
"application/json": components["schemas"]["
|
|
3340
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1355
3341
|
};
|
|
1356
3342
|
};
|
|
1357
3343
|
};
|
|
1358
3344
|
};
|
|
1359
|
-
|
|
3345
|
+
getInvoice: {
|
|
1360
3346
|
parameters: {
|
|
1361
3347
|
query?: never;
|
|
1362
3348
|
header?: never;
|
|
1363
3349
|
path: {
|
|
1364
|
-
/**
|
|
1365
|
-
|
|
3350
|
+
/**
|
|
3351
|
+
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
3352
|
+
* @example ZKYQ5
|
|
3353
|
+
*/
|
|
3354
|
+
orderNumber: string;
|
|
1366
3355
|
};
|
|
1367
3356
|
cookie?: never;
|
|
1368
3357
|
};
|
|
1369
|
-
requestBody
|
|
1370
|
-
|
|
1371
|
-
|
|
3358
|
+
requestBody?: never;
|
|
3359
|
+
responses: {
|
|
3360
|
+
/** @description Invoice retrieved successfully */
|
|
3361
|
+
200: {
|
|
3362
|
+
headers: {
|
|
3363
|
+
[name: string]: unknown;
|
|
3364
|
+
};
|
|
3365
|
+
content: {
|
|
3366
|
+
"application/json": components["schemas"]["InvoiceResponse"];
|
|
3367
|
+
};
|
|
3368
|
+
};
|
|
3369
|
+
/** @description Invalid request: orderNumber is required, or shipment is not in DELIVERED state */
|
|
3370
|
+
400: {
|
|
3371
|
+
headers: {
|
|
3372
|
+
[name: string]: unknown;
|
|
3373
|
+
};
|
|
3374
|
+
content: {
|
|
3375
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3376
|
+
};
|
|
3377
|
+
};
|
|
3378
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
3379
|
+
401: {
|
|
3380
|
+
headers: {
|
|
3381
|
+
[name: string]: unknown;
|
|
3382
|
+
};
|
|
3383
|
+
content: {
|
|
3384
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3385
|
+
};
|
|
3386
|
+
};
|
|
3387
|
+
/** @description Forbidden: missing/invalid API key, or shipment does not belong to your company */
|
|
3388
|
+
403: {
|
|
3389
|
+
headers: {
|
|
3390
|
+
[name: string]: unknown;
|
|
3391
|
+
};
|
|
3392
|
+
content: {
|
|
3393
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3394
|
+
};
|
|
3395
|
+
};
|
|
3396
|
+
/** @description Shipment not found */
|
|
3397
|
+
404: {
|
|
3398
|
+
headers: {
|
|
3399
|
+
[name: string]: unknown;
|
|
3400
|
+
};
|
|
3401
|
+
content: {
|
|
3402
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3403
|
+
};
|
|
1372
3404
|
};
|
|
1373
3405
|
};
|
|
3406
|
+
};
|
|
3407
|
+
getDocument: {
|
|
3408
|
+
parameters: {
|
|
3409
|
+
query?: never;
|
|
3410
|
+
header?: never;
|
|
3411
|
+
path: {
|
|
3412
|
+
/**
|
|
3413
|
+
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
3414
|
+
* @example ZKYQ5
|
|
3415
|
+
*/
|
|
3416
|
+
orderNumber: string;
|
|
3417
|
+
/** @description Type of document to retrieve */
|
|
3418
|
+
documentType: "BILL_OF_LADING" | "INVOICE" | "SHIPPING_LABEL" | "POD";
|
|
3419
|
+
};
|
|
3420
|
+
cookie?: never;
|
|
3421
|
+
};
|
|
3422
|
+
requestBody?: never;
|
|
1374
3423
|
responses: {
|
|
1375
|
-
/** @description
|
|
3424
|
+
/** @description Document URL retrieved successfully */
|
|
1376
3425
|
200: {
|
|
1377
3426
|
headers: {
|
|
1378
3427
|
[name: string]: unknown;
|
|
1379
3428
|
};
|
|
1380
3429
|
content: {
|
|
1381
|
-
"application/json":
|
|
3430
|
+
"application/json": components["schemas"]["DocumentResponse"];
|
|
1382
3431
|
};
|
|
1383
3432
|
};
|
|
1384
|
-
/** @description Invalid request:
|
|
3433
|
+
/** @description Invalid request: orderNumber and documentType are required */
|
|
1385
3434
|
400: {
|
|
1386
3435
|
headers: {
|
|
1387
3436
|
[name: string]: unknown;
|
|
1388
3437
|
};
|
|
1389
3438
|
content: {
|
|
1390
|
-
"application/json":
|
|
3439
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1391
3440
|
};
|
|
1392
3441
|
};
|
|
1393
|
-
/** @description Unauthorized: missing or invalid
|
|
3442
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
1394
3443
|
401: {
|
|
1395
3444
|
headers: {
|
|
1396
3445
|
[name: string]: unknown;
|
|
1397
3446
|
};
|
|
1398
3447
|
content: {
|
|
1399
|
-
"application/json":
|
|
3448
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1400
3449
|
};
|
|
1401
3450
|
};
|
|
1402
|
-
/** @description Forbidden: API
|
|
3451
|
+
/** @description Forbidden: missing/invalid API key, or shipment does not belong to your company */
|
|
1403
3452
|
403: {
|
|
1404
3453
|
headers: {
|
|
1405
3454
|
[name: string]: unknown;
|
|
1406
3455
|
};
|
|
1407
3456
|
content: {
|
|
1408
|
-
"application/json":
|
|
3457
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1409
3458
|
};
|
|
1410
3459
|
};
|
|
1411
|
-
/** @description
|
|
3460
|
+
/** @description Shipment or document not found */
|
|
1412
3461
|
404: {
|
|
1413
3462
|
headers: {
|
|
1414
3463
|
[name: string]: unknown;
|
|
1415
3464
|
};
|
|
1416
3465
|
content: {
|
|
1417
|
-
"application/json":
|
|
3466
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1418
3467
|
};
|
|
1419
3468
|
};
|
|
1420
3469
|
/** @description Internal server error */
|
|
@@ -1423,135 +3472,134 @@ interface operations {
|
|
|
1423
3472
|
[name: string]: unknown;
|
|
1424
3473
|
};
|
|
1425
3474
|
content: {
|
|
1426
|
-
"application/json":
|
|
3475
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1427
3476
|
};
|
|
1428
3477
|
};
|
|
1429
3478
|
};
|
|
1430
3479
|
};
|
|
1431
|
-
|
|
3480
|
+
getQuote: {
|
|
1432
3481
|
parameters: {
|
|
1433
3482
|
query?: never;
|
|
1434
3483
|
header?: never;
|
|
1435
3484
|
path: {
|
|
1436
|
-
/** @description
|
|
1437
|
-
|
|
3485
|
+
/** @description Unique quote ID */
|
|
3486
|
+
quoteId: string;
|
|
1438
3487
|
};
|
|
1439
3488
|
cookie?: never;
|
|
1440
3489
|
};
|
|
1441
|
-
requestBody
|
|
1442
|
-
content: {
|
|
1443
|
-
"application/json": components["schemas"]["GpsData"][];
|
|
1444
|
-
};
|
|
1445
|
-
};
|
|
3490
|
+
requestBody?: never;
|
|
1446
3491
|
responses: {
|
|
1447
|
-
/** @description
|
|
3492
|
+
/** @description Quote retrieved successfully */
|
|
1448
3493
|
200: {
|
|
1449
3494
|
headers: {
|
|
1450
3495
|
[name: string]: unknown;
|
|
1451
3496
|
};
|
|
1452
3497
|
content: {
|
|
1453
|
-
"application/json":
|
|
3498
|
+
"application/json": components["schemas"]["QuoteResponse"];
|
|
1454
3499
|
};
|
|
1455
3500
|
};
|
|
1456
|
-
/** @description Invalid request:
|
|
3501
|
+
/** @description Invalid request: quote ID format is invalid */
|
|
1457
3502
|
400: {
|
|
1458
3503
|
headers: {
|
|
1459
3504
|
[name: string]: unknown;
|
|
1460
3505
|
};
|
|
1461
3506
|
content: {
|
|
1462
|
-
"application/json":
|
|
3507
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1463
3508
|
};
|
|
1464
3509
|
};
|
|
1465
|
-
/** @description Unauthorized: missing or invalid
|
|
3510
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
1466
3511
|
401: {
|
|
1467
3512
|
headers: {
|
|
1468
3513
|
[name: string]: unknown;
|
|
1469
3514
|
};
|
|
1470
3515
|
content: {
|
|
1471
|
-
"application/json":
|
|
3516
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1472
3517
|
};
|
|
1473
3518
|
};
|
|
1474
|
-
/** @description Forbidden:
|
|
3519
|
+
/** @description Forbidden: missing, invalid, or expired API key (authorization failed) */
|
|
1475
3520
|
403: {
|
|
1476
3521
|
headers: {
|
|
1477
3522
|
[name: string]: unknown;
|
|
1478
3523
|
};
|
|
1479
3524
|
content: {
|
|
1480
|
-
"application/json":
|
|
3525
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1481
3526
|
};
|
|
1482
3527
|
};
|
|
1483
|
-
/** @description
|
|
3528
|
+
/** @description Quote not found */
|
|
1484
3529
|
404: {
|
|
1485
3530
|
headers: {
|
|
1486
3531
|
[name: string]: unknown;
|
|
1487
3532
|
};
|
|
1488
3533
|
content: {
|
|
1489
|
-
"application/json":
|
|
1490
|
-
};
|
|
1491
|
-
};
|
|
1492
|
-
/** @description Internal server error */
|
|
1493
|
-
500: {
|
|
1494
|
-
headers: {
|
|
1495
|
-
[name: string]: unknown;
|
|
1496
|
-
};
|
|
1497
|
-
content: {
|
|
1498
|
-
"application/json": number;
|
|
3534
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1499
3535
|
};
|
|
1500
3536
|
};
|
|
1501
3537
|
};
|
|
1502
3538
|
};
|
|
1503
|
-
|
|
3539
|
+
getShipments: {
|
|
1504
3540
|
parameters: {
|
|
1505
|
-
query?:
|
|
3541
|
+
query?: {
|
|
3542
|
+
/** @description If true, only return currently active shipments (excludes delivered) */
|
|
3543
|
+
activeOnly?: boolean;
|
|
3544
|
+
/** @description Filter shipments after this time (ISO 8601 format) */
|
|
3545
|
+
startTime?: string;
|
|
3546
|
+
/** @description Filter shipments before this time (ISO 8601 format) */
|
|
3547
|
+
endTime?: string;
|
|
3548
|
+
};
|
|
1506
3549
|
header?: never;
|
|
1507
3550
|
path?: never;
|
|
1508
3551
|
cookie?: never;
|
|
1509
3552
|
};
|
|
1510
|
-
requestBody
|
|
1511
|
-
content: {
|
|
1512
|
-
"application/json": components["schemas"]["TokenRequest"];
|
|
1513
|
-
};
|
|
1514
|
-
};
|
|
3553
|
+
requestBody?: never;
|
|
1515
3554
|
responses: {
|
|
1516
|
-
/** @description
|
|
3555
|
+
/** @description Shipments retrieved successfully */
|
|
1517
3556
|
200: {
|
|
1518
3557
|
headers: {
|
|
1519
3558
|
[name: string]: unknown;
|
|
1520
3559
|
};
|
|
1521
3560
|
content: {
|
|
1522
|
-
"application/json": components["schemas"]["
|
|
3561
|
+
"application/json": components["schemas"]["CarrierShipment"][];
|
|
1523
3562
|
};
|
|
1524
3563
|
};
|
|
1525
|
-
/** @description
|
|
1526
|
-
|
|
3564
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
3565
|
+
401: {
|
|
1527
3566
|
headers: {
|
|
1528
3567
|
[name: string]: unknown;
|
|
1529
3568
|
};
|
|
1530
3569
|
content: {
|
|
1531
|
-
"application/json": components["schemas"]["
|
|
3570
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1532
3571
|
};
|
|
1533
3572
|
};
|
|
1534
|
-
/** @description
|
|
1535
|
-
|
|
3573
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
3574
|
+
403: {
|
|
1536
3575
|
headers: {
|
|
1537
3576
|
[name: string]: unknown;
|
|
1538
3577
|
};
|
|
1539
3578
|
content: {
|
|
1540
|
-
"application/json": components["schemas"]["
|
|
3579
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3580
|
+
};
|
|
3581
|
+
};
|
|
3582
|
+
/** @description Internal server error */
|
|
3583
|
+
500: {
|
|
3584
|
+
headers: {
|
|
3585
|
+
[name: string]: unknown;
|
|
3586
|
+
};
|
|
3587
|
+
content: {
|
|
3588
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1541
3589
|
};
|
|
1542
3590
|
};
|
|
1543
3591
|
};
|
|
1544
3592
|
};
|
|
1545
|
-
|
|
3593
|
+
getShipment_1: {
|
|
1546
3594
|
parameters: {
|
|
1547
3595
|
query?: never;
|
|
1548
3596
|
header?: never;
|
|
1549
3597
|
path: {
|
|
1550
3598
|
/**
|
|
1551
|
-
* @description
|
|
1552
|
-
* @example
|
|
3599
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
3600
|
+
* @example Y73Q0
|
|
1553
3601
|
*/
|
|
1554
|
-
|
|
3602
|
+
identifier: string;
|
|
1555
3603
|
};
|
|
1556
3604
|
cookie?: never;
|
|
1557
3605
|
};
|
|
@@ -1563,231 +3611,225 @@ interface operations {
|
|
|
1563
3611
|
[name: string]: unknown;
|
|
1564
3612
|
};
|
|
1565
3613
|
content: {
|
|
1566
|
-
"application/json": components["schemas"]["
|
|
3614
|
+
"application/json": components["schemas"]["CarrierShipment"];
|
|
1567
3615
|
};
|
|
1568
3616
|
};
|
|
1569
|
-
/** @description
|
|
1570
|
-
|
|
3617
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
3618
|
+
401: {
|
|
1571
3619
|
headers: {
|
|
1572
3620
|
[name: string]: unknown;
|
|
1573
3621
|
};
|
|
1574
3622
|
content: {
|
|
1575
|
-
"application/json": components["schemas"]["
|
|
3623
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1576
3624
|
};
|
|
1577
3625
|
};
|
|
1578
|
-
/** @description
|
|
1579
|
-
|
|
3626
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
3627
|
+
403: {
|
|
1580
3628
|
headers: {
|
|
1581
3629
|
[name: string]: unknown;
|
|
1582
3630
|
};
|
|
1583
3631
|
content: {
|
|
1584
|
-
"application/json": components["schemas"]["
|
|
3632
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1585
3633
|
};
|
|
1586
3634
|
};
|
|
1587
|
-
/** @description
|
|
1588
|
-
|
|
3635
|
+
/** @description Shipment not found */
|
|
3636
|
+
404: {
|
|
1589
3637
|
headers: {
|
|
1590
3638
|
[name: string]: unknown;
|
|
1591
3639
|
};
|
|
1592
3640
|
content: {
|
|
1593
|
-
"application/json": components["schemas"]["
|
|
3641
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1594
3642
|
};
|
|
1595
3643
|
};
|
|
1596
|
-
/** @description
|
|
1597
|
-
|
|
3644
|
+
/** @description Internal server error */
|
|
3645
|
+
500: {
|
|
1598
3646
|
headers: {
|
|
1599
3647
|
[name: string]: unknown;
|
|
1600
3648
|
};
|
|
1601
3649
|
content: {
|
|
1602
|
-
"application/json": components["schemas"]["
|
|
3650
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1603
3651
|
};
|
|
1604
3652
|
};
|
|
1605
3653
|
};
|
|
1606
3654
|
};
|
|
1607
|
-
|
|
3655
|
+
getShipmentTracking: {
|
|
1608
3656
|
parameters: {
|
|
1609
3657
|
query?: never;
|
|
1610
3658
|
header?: never;
|
|
1611
3659
|
path: {
|
|
1612
3660
|
/**
|
|
1613
|
-
* @description
|
|
1614
|
-
* @example
|
|
3661
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
3662
|
+
* @example Y73Q0
|
|
1615
3663
|
*/
|
|
1616
|
-
|
|
3664
|
+
identifier: string;
|
|
1617
3665
|
};
|
|
1618
3666
|
cookie?: never;
|
|
1619
3667
|
};
|
|
1620
3668
|
requestBody?: never;
|
|
1621
3669
|
responses: {
|
|
1622
|
-
/** @description Tracking
|
|
3670
|
+
/** @description Tracking data retrieved successfully */
|
|
1623
3671
|
200: {
|
|
1624
3672
|
headers: {
|
|
1625
3673
|
[name: string]: unknown;
|
|
1626
3674
|
};
|
|
1627
3675
|
content: {
|
|
1628
|
-
"application/json": components["schemas"]["
|
|
3676
|
+
"application/json": components["schemas"]["TrackingResponse"];
|
|
1629
3677
|
};
|
|
1630
3678
|
};
|
|
1631
|
-
/** @description
|
|
1632
|
-
|
|
3679
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
3680
|
+
401: {
|
|
1633
3681
|
headers: {
|
|
1634
3682
|
[name: string]: unknown;
|
|
1635
3683
|
};
|
|
1636
3684
|
content: {
|
|
1637
|
-
"application/json": components["schemas"]["
|
|
3685
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1638
3686
|
};
|
|
1639
3687
|
};
|
|
1640
|
-
/** @description
|
|
1641
|
-
|
|
3688
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
3689
|
+
403: {
|
|
1642
3690
|
headers: {
|
|
1643
3691
|
[name: string]: unknown;
|
|
1644
3692
|
};
|
|
1645
3693
|
content: {
|
|
1646
|
-
"application/json": components["schemas"]["
|
|
3694
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1647
3695
|
};
|
|
1648
3696
|
};
|
|
1649
|
-
/** @description
|
|
1650
|
-
|
|
3697
|
+
/** @description Shipment not found */
|
|
3698
|
+
404: {
|
|
1651
3699
|
headers: {
|
|
1652
3700
|
[name: string]: unknown;
|
|
1653
3701
|
};
|
|
1654
3702
|
content: {
|
|
1655
|
-
"application/json": components["schemas"]["
|
|
3703
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1656
3704
|
};
|
|
1657
3705
|
};
|
|
1658
|
-
/** @description
|
|
1659
|
-
|
|
3706
|
+
/** @description Internal server error */
|
|
3707
|
+
500: {
|
|
1660
3708
|
headers: {
|
|
1661
3709
|
[name: string]: unknown;
|
|
1662
3710
|
};
|
|
1663
3711
|
content: {
|
|
1664
|
-
"application/json": components["schemas"]["
|
|
3712
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1665
3713
|
};
|
|
1666
3714
|
};
|
|
1667
3715
|
};
|
|
1668
3716
|
};
|
|
1669
|
-
|
|
3717
|
+
getShipmentDocument: {
|
|
1670
3718
|
parameters: {
|
|
1671
3719
|
query?: never;
|
|
1672
3720
|
header?: never;
|
|
1673
3721
|
path: {
|
|
1674
3722
|
/**
|
|
1675
|
-
* @description
|
|
1676
|
-
* @example
|
|
3723
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
3724
|
+
* @example Y73Q0
|
|
1677
3725
|
*/
|
|
1678
|
-
|
|
3726
|
+
identifier: string;
|
|
3727
|
+
/** @description Document type */
|
|
3728
|
+
documentType: "BILL_OF_LADING" | "SHIPPING_LABEL";
|
|
1679
3729
|
};
|
|
1680
3730
|
cookie?: never;
|
|
1681
3731
|
};
|
|
1682
3732
|
requestBody?: never;
|
|
1683
3733
|
responses: {
|
|
1684
|
-
/** @description
|
|
3734
|
+
/** @description Document URL retrieved successfully */
|
|
1685
3735
|
200: {
|
|
1686
3736
|
headers: {
|
|
1687
3737
|
[name: string]: unknown;
|
|
1688
3738
|
};
|
|
1689
3739
|
content: {
|
|
1690
|
-
"application/json": components["schemas"]["
|
|
3740
|
+
"application/json": components["schemas"]["CarrierDocumentResponse"];
|
|
1691
3741
|
};
|
|
1692
3742
|
};
|
|
1693
|
-
/** @description Invalid
|
|
3743
|
+
/** @description Invalid document type */
|
|
1694
3744
|
400: {
|
|
1695
3745
|
headers: {
|
|
1696
3746
|
[name: string]: unknown;
|
|
1697
3747
|
};
|
|
1698
3748
|
content: {
|
|
1699
|
-
"application/json": components["schemas"]["
|
|
3749
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1700
3750
|
};
|
|
1701
3751
|
};
|
|
1702
|
-
/** @description Unauthorized: missing or invalid
|
|
3752
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
1703
3753
|
401: {
|
|
1704
3754
|
headers: {
|
|
1705
3755
|
[name: string]: unknown;
|
|
1706
3756
|
};
|
|
1707
3757
|
content: {
|
|
1708
|
-
"application/json": components["schemas"]["
|
|
3758
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1709
3759
|
};
|
|
1710
3760
|
};
|
|
1711
|
-
/** @description Forbidden: missing/invalid API key
|
|
3761
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
1712
3762
|
403: {
|
|
1713
3763
|
headers: {
|
|
1714
3764
|
[name: string]: unknown;
|
|
1715
3765
|
};
|
|
1716
3766
|
content: {
|
|
1717
|
-
"application/json": components["schemas"]["
|
|
3767
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1718
3768
|
};
|
|
1719
3769
|
};
|
|
1720
|
-
/** @description Shipment not found */
|
|
3770
|
+
/** @description Shipment or document not found */
|
|
1721
3771
|
404: {
|
|
1722
3772
|
headers: {
|
|
1723
3773
|
[name: string]: unknown;
|
|
1724
3774
|
};
|
|
1725
3775
|
content: {
|
|
1726
|
-
"application/json": components["schemas"]["
|
|
3776
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3777
|
+
};
|
|
3778
|
+
};
|
|
3779
|
+
/** @description Internal server error */
|
|
3780
|
+
500: {
|
|
3781
|
+
headers: {
|
|
3782
|
+
[name: string]: unknown;
|
|
3783
|
+
};
|
|
3784
|
+
content: {
|
|
3785
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1727
3786
|
};
|
|
1728
3787
|
};
|
|
1729
3788
|
};
|
|
1730
3789
|
};
|
|
1731
|
-
|
|
3790
|
+
getOffers: {
|
|
1732
3791
|
parameters: {
|
|
1733
3792
|
query?: never;
|
|
1734
3793
|
header?: never;
|
|
1735
|
-
path
|
|
1736
|
-
/**
|
|
1737
|
-
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
1738
|
-
* @example ZKYQ5
|
|
1739
|
-
*/
|
|
1740
|
-
orderNumber: string;
|
|
1741
|
-
/** @description Type of document to retrieve */
|
|
1742
|
-
documentType: "BILL_OF_LADING" | "INVOICE" | "SHIPPING_LABEL";
|
|
1743
|
-
};
|
|
3794
|
+
path?: never;
|
|
1744
3795
|
cookie?: never;
|
|
1745
3796
|
};
|
|
1746
3797
|
requestBody?: never;
|
|
1747
3798
|
responses: {
|
|
1748
|
-
/** @description
|
|
3799
|
+
/** @description Offers retrieved successfully */
|
|
1749
3800
|
200: {
|
|
1750
3801
|
headers: {
|
|
1751
3802
|
[name: string]: unknown;
|
|
1752
3803
|
};
|
|
1753
3804
|
content: {
|
|
1754
|
-
"application/json": components["schemas"]["
|
|
1755
|
-
};
|
|
1756
|
-
};
|
|
1757
|
-
/** @description Invalid request: orderNumber and documentType are required */
|
|
1758
|
-
400: {
|
|
1759
|
-
headers: {
|
|
1760
|
-
[name: string]: unknown;
|
|
1761
|
-
};
|
|
1762
|
-
content: {
|
|
1763
|
-
"application/json": components["schemas"]["DocumentResponse"];
|
|
3805
|
+
"application/json": components["schemas"]["Offer"][];
|
|
1764
3806
|
};
|
|
1765
3807
|
};
|
|
1766
|
-
/** @description Unauthorized: missing or invalid
|
|
3808
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
1767
3809
|
401: {
|
|
1768
3810
|
headers: {
|
|
1769
3811
|
[name: string]: unknown;
|
|
1770
3812
|
};
|
|
1771
3813
|
content: {
|
|
1772
|
-
"application/json": components["schemas"]["
|
|
3814
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1773
3815
|
};
|
|
1774
3816
|
};
|
|
1775
|
-
/** @description Forbidden:
|
|
3817
|
+
/** @description Forbidden: API access is not enabled for this carrier */
|
|
1776
3818
|
403: {
|
|
1777
3819
|
headers: {
|
|
1778
3820
|
[name: string]: unknown;
|
|
1779
3821
|
};
|
|
1780
3822
|
content: {
|
|
1781
|
-
"application/json": components["schemas"]["
|
|
3823
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1782
3824
|
};
|
|
1783
3825
|
};
|
|
1784
|
-
/** @description
|
|
3826
|
+
/** @description Carrier not found */
|
|
1785
3827
|
404: {
|
|
1786
3828
|
headers: {
|
|
1787
3829
|
[name: string]: unknown;
|
|
1788
3830
|
};
|
|
1789
3831
|
content: {
|
|
1790
|
-
"application/json": components["schemas"]["
|
|
3832
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1791
3833
|
};
|
|
1792
3834
|
};
|
|
1793
3835
|
/** @description Internal server error */
|
|
@@ -1796,89 +3838,92 @@ interface operations {
|
|
|
1796
3838
|
[name: string]: unknown;
|
|
1797
3839
|
};
|
|
1798
3840
|
content: {
|
|
1799
|
-
"application/json": components["schemas"]["
|
|
3841
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1800
3842
|
};
|
|
1801
3843
|
};
|
|
1802
3844
|
};
|
|
1803
3845
|
};
|
|
1804
|
-
|
|
3846
|
+
getOffer: {
|
|
1805
3847
|
parameters: {
|
|
1806
3848
|
query?: never;
|
|
1807
3849
|
header?: never;
|
|
1808
3850
|
path: {
|
|
1809
|
-
/**
|
|
1810
|
-
|
|
3851
|
+
/**
|
|
3852
|
+
* @description Offer identifier (offerId, orderNumber, or carrierReference)
|
|
3853
|
+
* @example Y73Q0
|
|
3854
|
+
*/
|
|
3855
|
+
identifier: string;
|
|
1811
3856
|
};
|
|
1812
3857
|
cookie?: never;
|
|
1813
3858
|
};
|
|
1814
3859
|
requestBody?: never;
|
|
1815
3860
|
responses: {
|
|
1816
|
-
/** @description
|
|
3861
|
+
/** @description Offer retrieved successfully */
|
|
1817
3862
|
200: {
|
|
1818
3863
|
headers: {
|
|
1819
3864
|
[name: string]: unknown;
|
|
1820
3865
|
};
|
|
1821
3866
|
content: {
|
|
1822
|
-
"application/json": components["schemas"]["
|
|
3867
|
+
"application/json": components["schemas"]["Offer"];
|
|
1823
3868
|
};
|
|
1824
3869
|
};
|
|
1825
|
-
/** @description
|
|
1826
|
-
|
|
3870
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
3871
|
+
401: {
|
|
1827
3872
|
headers: {
|
|
1828
3873
|
[name: string]: unknown;
|
|
1829
3874
|
};
|
|
1830
3875
|
content: {
|
|
1831
|
-
"application/json": components["schemas"]["
|
|
3876
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1832
3877
|
};
|
|
1833
3878
|
};
|
|
1834
|
-
/** @description
|
|
1835
|
-
|
|
3879
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
3880
|
+
403: {
|
|
1836
3881
|
headers: {
|
|
1837
3882
|
[name: string]: unknown;
|
|
1838
3883
|
};
|
|
1839
3884
|
content: {
|
|
1840
|
-
"application/json": components["schemas"]["
|
|
3885
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1841
3886
|
};
|
|
1842
3887
|
};
|
|
1843
|
-
/** @description
|
|
1844
|
-
|
|
3888
|
+
/** @description Offer not found */
|
|
3889
|
+
404: {
|
|
1845
3890
|
headers: {
|
|
1846
3891
|
[name: string]: unknown;
|
|
1847
3892
|
};
|
|
1848
3893
|
content: {
|
|
1849
|
-
"application/json": components["schemas"]["
|
|
3894
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1850
3895
|
};
|
|
1851
3896
|
};
|
|
1852
|
-
/** @description
|
|
1853
|
-
|
|
3897
|
+
/** @description Internal server error */
|
|
3898
|
+
500: {
|
|
1854
3899
|
headers: {
|
|
1855
3900
|
[name: string]: unknown;
|
|
1856
3901
|
};
|
|
1857
3902
|
content: {
|
|
1858
|
-
"application/json": components["schemas"]["
|
|
3903
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1859
3904
|
};
|
|
1860
3905
|
};
|
|
1861
3906
|
};
|
|
1862
3907
|
};
|
|
1863
|
-
|
|
3908
|
+
getBundles: {
|
|
1864
3909
|
parameters: {
|
|
1865
|
-
query?:
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
/** @description The unique identifier of the carrier */
|
|
1869
|
-
carrierId: string;
|
|
3910
|
+
query?: {
|
|
3911
|
+
/** @description Filter bundles by status (OPEN, ACCEPTED, DECLINED, EXPIRED) */
|
|
3912
|
+
status?: string;
|
|
1870
3913
|
};
|
|
3914
|
+
header?: never;
|
|
3915
|
+
path?: never;
|
|
1871
3916
|
cookie?: never;
|
|
1872
3917
|
};
|
|
1873
3918
|
requestBody?: never;
|
|
1874
3919
|
responses: {
|
|
1875
|
-
/** @description
|
|
3920
|
+
/** @description Bundles retrieved successfully */
|
|
1876
3921
|
200: {
|
|
1877
3922
|
headers: {
|
|
1878
3923
|
[name: string]: unknown;
|
|
1879
3924
|
};
|
|
1880
3925
|
content: {
|
|
1881
|
-
"application/json": components["schemas"]["
|
|
3926
|
+
"application/json": components["schemas"]["Bundle"][];
|
|
1882
3927
|
};
|
|
1883
3928
|
};
|
|
1884
3929
|
/** @description Unauthorized: missing or invalid bearer token */
|
|
@@ -1887,25 +3932,16 @@ interface operations {
|
|
|
1887
3932
|
[name: string]: unknown;
|
|
1888
3933
|
};
|
|
1889
3934
|
content: {
|
|
1890
|
-
"application/json": components["schemas"]["
|
|
3935
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1891
3936
|
};
|
|
1892
3937
|
};
|
|
1893
|
-
/** @description Forbidden: API access
|
|
3938
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
1894
3939
|
403: {
|
|
1895
3940
|
headers: {
|
|
1896
3941
|
[name: string]: unknown;
|
|
1897
3942
|
};
|
|
1898
3943
|
content: {
|
|
1899
|
-
"application/json": components["schemas"]["
|
|
1900
|
-
};
|
|
1901
|
-
};
|
|
1902
|
-
/** @description Carrier not found */
|
|
1903
|
-
404: {
|
|
1904
|
-
headers: {
|
|
1905
|
-
[name: string]: unknown;
|
|
1906
|
-
};
|
|
1907
|
-
content: {
|
|
1908
|
-
"application/json": components["schemas"]["CarrierApiConfigResponse"];
|
|
3944
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1909
3945
|
};
|
|
1910
3946
|
};
|
|
1911
3947
|
/** @description Internal server error */
|
|
@@ -1914,37 +3950,33 @@ interface operations {
|
|
|
1914
3950
|
[name: string]: unknown;
|
|
1915
3951
|
};
|
|
1916
3952
|
content: {
|
|
1917
|
-
"application/json": components["schemas"]["
|
|
3953
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1918
3954
|
};
|
|
1919
3955
|
};
|
|
1920
3956
|
};
|
|
1921
3957
|
};
|
|
1922
|
-
|
|
3958
|
+
getBundle: {
|
|
1923
3959
|
parameters: {
|
|
1924
|
-
query?:
|
|
1925
|
-
/** @description If true, only return currently active jobs */
|
|
1926
|
-
activeOnly?: boolean;
|
|
1927
|
-
/** @description Filter jobs created after this time (ISO 8601 format) */
|
|
1928
|
-
startTime?: string;
|
|
1929
|
-
/** @description Filter jobs created before this time (ISO 8601 format) */
|
|
1930
|
-
endTime?: string;
|
|
1931
|
-
};
|
|
3960
|
+
query?: never;
|
|
1932
3961
|
header?: never;
|
|
1933
3962
|
path: {
|
|
1934
|
-
/**
|
|
1935
|
-
|
|
3963
|
+
/**
|
|
3964
|
+
* @description Bundle ID
|
|
3965
|
+
* @example 507f1f77bcf86cd799439012
|
|
3966
|
+
*/
|
|
3967
|
+
bundleId: string;
|
|
1936
3968
|
};
|
|
1937
3969
|
cookie?: never;
|
|
1938
3970
|
};
|
|
1939
3971
|
requestBody?: never;
|
|
1940
3972
|
responses: {
|
|
1941
|
-
/** @description
|
|
3973
|
+
/** @description Bundle retrieved successfully */
|
|
1942
3974
|
200: {
|
|
1943
3975
|
headers: {
|
|
1944
3976
|
[name: string]: unknown;
|
|
1945
3977
|
};
|
|
1946
3978
|
content: {
|
|
1947
|
-
"application/json": components["schemas"]["
|
|
3979
|
+
"application/json": components["schemas"]["Bundle"];
|
|
1948
3980
|
};
|
|
1949
3981
|
};
|
|
1950
3982
|
/** @description Unauthorized: missing or invalid bearer token */
|
|
@@ -1953,25 +3985,25 @@ interface operations {
|
|
|
1953
3985
|
[name: string]: unknown;
|
|
1954
3986
|
};
|
|
1955
3987
|
content: {
|
|
1956
|
-
"application/json": components["schemas"]["
|
|
3988
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1957
3989
|
};
|
|
1958
3990
|
};
|
|
1959
|
-
/** @description Forbidden: API access
|
|
3991
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
1960
3992
|
403: {
|
|
1961
3993
|
headers: {
|
|
1962
3994
|
[name: string]: unknown;
|
|
1963
3995
|
};
|
|
1964
3996
|
content: {
|
|
1965
|
-
"application/json": components["schemas"]["
|
|
3997
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1966
3998
|
};
|
|
1967
3999
|
};
|
|
1968
|
-
/** @description
|
|
4000
|
+
/** @description Bundle not found */
|
|
1969
4001
|
404: {
|
|
1970
4002
|
headers: {
|
|
1971
4003
|
[name: string]: unknown;
|
|
1972
4004
|
};
|
|
1973
4005
|
content: {
|
|
1974
|
-
"application/json": components["schemas"]["
|
|
4006
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1975
4007
|
};
|
|
1976
4008
|
};
|
|
1977
4009
|
/** @description Internal server error */
|
|
@@ -1980,118 +4012,88 @@ interface operations {
|
|
|
1980
4012
|
[name: string]: unknown;
|
|
1981
4013
|
};
|
|
1982
4014
|
content: {
|
|
1983
|
-
"application/json": components["schemas"]["
|
|
4015
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1984
4016
|
};
|
|
1985
4017
|
};
|
|
1986
4018
|
};
|
|
1987
4019
|
};
|
|
1988
4020
|
}
|
|
1989
4021
|
|
|
4022
|
+
/** A single field-level validation failure. */
|
|
4023
|
+
type Violation = components['schemas']['Violation'];
|
|
1990
4024
|
interface OwayConfig {
|
|
1991
|
-
/**
|
|
1992
|
-
* M2M Client ID (REQUIRED for all integrations)
|
|
1993
|
-
* Provided by Oway Sales Engineering team
|
|
1994
|
-
*/
|
|
4025
|
+
/** M2M Client ID (required). */
|
|
1995
4026
|
clientId: string;
|
|
1996
|
-
/**
|
|
1997
|
-
* M2M Client Secret (REQUIRED for all integrations)
|
|
1998
|
-
* Provided by Oway Sales Engineering team
|
|
1999
|
-
*/
|
|
4027
|
+
/** M2M Client Secret (required). */
|
|
2000
4028
|
clientSecret: string;
|
|
2001
4029
|
/**
|
|
2002
|
-
* Default company API key
|
|
2003
|
-
*
|
|
2004
|
-
* Single-company: Set this to your company's API key
|
|
2005
|
-
* Multi-company: Omit this and provide per-request
|
|
2006
|
-
*
|
|
2007
|
-
* Get from: https://app.oway.io/settings/api
|
|
4030
|
+
* Default company API key. For multi-tenant integrations pass a
|
|
4031
|
+
* per-request key on the `companyApiKey` option instead.
|
|
2008
4032
|
*/
|
|
2009
4033
|
apiKey?: string;
|
|
2010
|
-
/**
|
|
2011
|
-
* Base URL for the Oway API
|
|
2012
|
-
* @default "https://rest-api.sandbox.oway.io"
|
|
2013
|
-
*/
|
|
4034
|
+
/** Base URL. Defaults to https://api.sandbox.oway.io. */
|
|
2014
4035
|
baseUrl?: string;
|
|
2015
|
-
/**
|
|
2016
|
-
* Token endpoint for authentication
|
|
2017
|
-
* @default "https://rest-api.sandbox.oway.io/v1/auth/token"
|
|
2018
|
-
*/
|
|
4036
|
+
/** Token endpoint. Defaults to `${baseUrl}/v1/auth/token`. */
|
|
2019
4037
|
tokenUrl?: string;
|
|
2020
|
-
/**
|
|
2021
|
-
* Maximum number of retry attempts for failed requests
|
|
2022
|
-
* @default 3
|
|
2023
|
-
*/
|
|
4038
|
+
/** Maximum retry attempts on transient errors. Defaults to 3. Pass 0 to disable. */
|
|
2024
4039
|
maxRetries?: number;
|
|
2025
|
-
/**
|
|
2026
|
-
* Timeout in milliseconds for API requests
|
|
2027
|
-
* @default 30000
|
|
2028
|
-
*/
|
|
4040
|
+
/** Request timeout in milliseconds. Defaults to 30000. */
|
|
2029
4041
|
timeout?: number;
|
|
2030
|
-
/**
|
|
2031
|
-
* Enable debug logging (logs sanitized request/response metadata)
|
|
2032
|
-
* @default false
|
|
2033
|
-
*/
|
|
4042
|
+
/** Enable structured debug logging. */
|
|
2034
4043
|
debug?: boolean;
|
|
2035
|
-
/**
|
|
2036
|
-
* Custom logger implementation
|
|
2037
|
-
*/
|
|
4044
|
+
/** Custom logger. When omitted the SDK is silent. */
|
|
2038
4045
|
logger?: {
|
|
2039
|
-
debug: (msg: string, meta?: Record<string,
|
|
2040
|
-
info: (msg: string, meta?: Record<string,
|
|
2041
|
-
warn: (msg: string, meta?: Record<string,
|
|
2042
|
-
error: (msg: string, meta?: Record<string,
|
|
4046
|
+
debug: (msg: string, meta?: Record<string, unknown>) => void;
|
|
4047
|
+
info: (msg: string, meta?: Record<string, unknown>) => void;
|
|
4048
|
+
warn: (msg: string, meta?: Record<string, unknown>) => void;
|
|
4049
|
+
error: (msg: string, meta?: Record<string, unknown>) => void;
|
|
2043
4050
|
};
|
|
2044
4051
|
}
|
|
4052
|
+
/**
|
|
4053
|
+
* Typed error returned by the SDK whenever the API returns a non-2xx
|
|
4054
|
+
* response. Carries the parsed ProblemDetail (`code`, `message`, `violations`)
|
|
4055
|
+
* plus the `requestId` to quote when reporting issues.
|
|
4056
|
+
*/
|
|
2045
4057
|
declare class OwayError extends Error {
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
requestId?: string
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
4058
|
+
readonly statusCode?: number;
|
|
4059
|
+
readonly code?: string;
|
|
4060
|
+
readonly requestId?: string;
|
|
4061
|
+
readonly violations: Violation[];
|
|
4062
|
+
readonly rawBody?: string;
|
|
4063
|
+
constructor(opts: {
|
|
4064
|
+
message: string;
|
|
4065
|
+
statusCode?: number;
|
|
4066
|
+
code?: string;
|
|
4067
|
+
requestId?: string;
|
|
4068
|
+
violations?: Violation[];
|
|
4069
|
+
rawBody?: string;
|
|
4070
|
+
});
|
|
4071
|
+
/** True for well-known transient HTTP status codes (408/429/500/502/503/504). */
|
|
2053
4072
|
isRetryable(): boolean;
|
|
4073
|
+
/** 4xx response. */
|
|
4074
|
+
isClientError(): boolean;
|
|
4075
|
+
/** 5xx response. */
|
|
4076
|
+
isServerError(): boolean;
|
|
4077
|
+
}
|
|
4078
|
+
interface RequestOptions {
|
|
4079
|
+
query?: Record<string, string | number | boolean>;
|
|
4080
|
+
body?: unknown;
|
|
4081
|
+
headers?: Record<string, string>;
|
|
4082
|
+
requestId?: string;
|
|
4083
|
+
/** Override the default API key for this request (multi-tenant integrations). */
|
|
4084
|
+
companyApiKey?: string;
|
|
2054
4085
|
}
|
|
2055
|
-
/**
|
|
2056
|
-
* HTTP client for making authenticated requests to the Oway API
|
|
2057
|
-
*/
|
|
2058
4086
|
declare class HttpClient {
|
|
2059
|
-
private config;
|
|
4087
|
+
private readonly config;
|
|
2060
4088
|
private accessToken;
|
|
2061
4089
|
private tokenExpiry;
|
|
2062
4090
|
private tokenRefreshPromise;
|
|
2063
4091
|
constructor(config: OwayConfig);
|
|
2064
|
-
/**
|
|
2065
|
-
* Internal logging with sanitization
|
|
2066
|
-
*/
|
|
2067
4092
|
private log;
|
|
2068
|
-
|
|
2069
|
-
* Sanitize objects for logging - remove sensitive fields
|
|
2070
|
-
*/
|
|
2071
|
-
private sanitizeForLogging;
|
|
2072
|
-
/**
|
|
2073
|
-
* Get or refresh the access token using the API key
|
|
2074
|
-
* Handles concurrent requests by queuing them behind a single refresh
|
|
2075
|
-
*/
|
|
4093
|
+
private sanitize;
|
|
2076
4094
|
private getAccessToken;
|
|
2077
|
-
/**
|
|
2078
|
-
* Perform the actual token refresh using M2M credentials
|
|
2079
|
-
*/
|
|
2080
4095
|
private refreshToken;
|
|
2081
|
-
|
|
2082
|
-
* Generate a unique request ID
|
|
2083
|
-
*/
|
|
2084
|
-
private generateRequestId;
|
|
2085
|
-
/**
|
|
2086
|
-
* Make an authenticated request to the Oway API
|
|
2087
|
-
*/
|
|
2088
|
-
request<T>(method: string, path: string, options?: {
|
|
2089
|
-
query?: Record<string, string | number | boolean>;
|
|
2090
|
-
body?: unknown;
|
|
2091
|
-
headers?: Record<string, string>;
|
|
2092
|
-
requestId?: string;
|
|
2093
|
-
companyApiKey?: string;
|
|
2094
|
-
}): Promise<T>;
|
|
4096
|
+
request<T>(method: string, path: string, options?: RequestOptions): Promise<T>;
|
|
2095
4097
|
get<T>(path: string, query?: Record<string, string | number | boolean>, companyApiKey?: string): Promise<T>;
|
|
2096
4098
|
post<T>(path: string, body?: unknown, companyApiKey?: string): Promise<T>;
|
|
2097
4099
|
put<T>(path: string, body?: unknown, companyApiKey?: string): Promise<T>;
|
|
@@ -2150,12 +4152,12 @@ declare const OwayEnvironments: {
|
|
|
2150
4152
|
* Sandbox environment for development and testing
|
|
2151
4153
|
* Safe to use - no real shipments created
|
|
2152
4154
|
*/
|
|
2153
|
-
readonly SANDBOX: "https://
|
|
4155
|
+
readonly SANDBOX: "https://api.sandbox.oway.io";
|
|
2154
4156
|
/**
|
|
2155
4157
|
* Production environment for live traffic
|
|
2156
4158
|
* Real shipments will be created and billed
|
|
2157
4159
|
*/
|
|
2158
|
-
readonly PRODUCTION: "https://
|
|
4160
|
+
readonly PRODUCTION: "https://api.oway.io";
|
|
2159
4161
|
};
|
|
2160
4162
|
|
|
2161
4163
|
/**
|