@oway/sdk 0.1.2 → 0.2.1
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 +25 -13
- package/dist/index.d.mts +2769 -834
- package/dist/index.d.ts +2769 -834
- package/dist/index.js +139 -187
- package/dist/index.mjs +139 -187
- 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;
|
|
@@ -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;
|
|
@@ -375,6 +692,21 @@ interface components {
|
|
|
375
692
|
* @example pickup_not_covered
|
|
376
693
|
*/
|
|
377
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;
|
|
378
710
|
};
|
|
379
711
|
/** @description Shipment/Order details */
|
|
380
712
|
Shipment: {
|
|
@@ -423,11 +755,75 @@ interface components {
|
|
|
423
755
|
*/
|
|
424
756
|
updatedAt?: string;
|
|
425
757
|
};
|
|
426
|
-
/** @description
|
|
427
|
-
|
|
758
|
+
/** @description GPS coordinates for a shipment event */
|
|
759
|
+
EventCoordinates: {
|
|
428
760
|
/**
|
|
429
|
-
*
|
|
430
|
-
* @
|
|
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
|
+
};
|
|
822
|
+
/** @description Address information for pickup or delivery locations */
|
|
823
|
+
CarrierAddress: {
|
|
824
|
+
/**
|
|
825
|
+
* @description Name of the location or business
|
|
826
|
+
* @example Fairgrounds Distribution Center
|
|
431
827
|
*/
|
|
432
828
|
name: string;
|
|
433
829
|
/**
|
|
@@ -454,27 +850,27 @@ interface components {
|
|
|
454
850
|
* @description 5-digit ZIP code
|
|
455
851
|
* @example 90804
|
|
456
852
|
*/
|
|
457
|
-
|
|
853
|
+
zip_code: string;
|
|
458
854
|
/**
|
|
459
855
|
* @description Contact phone number in E.164 format
|
|
460
856
|
* @example +18087857650
|
|
461
857
|
*/
|
|
462
|
-
|
|
858
|
+
phone_number: string;
|
|
463
859
|
/**
|
|
464
860
|
* @description Name of the contact person at this location
|
|
465
861
|
* @example Mike Johnson
|
|
466
862
|
*/
|
|
467
|
-
|
|
863
|
+
contact_person: string;
|
|
468
864
|
/**
|
|
469
865
|
* @description Opening time for the location in 24-hour format (HH:mm). Defaults to 10:00 if not provided.
|
|
470
866
|
* @example 10:00
|
|
471
867
|
*/
|
|
472
|
-
|
|
868
|
+
open_time?: string;
|
|
473
869
|
/**
|
|
474
870
|
* @description Closing time for the location in 24-hour format (HH:mm). Defaults to 16:00 if not provided.
|
|
475
871
|
* @example 16:00
|
|
476
872
|
*/
|
|
477
|
-
|
|
873
|
+
close_time?: string;
|
|
478
874
|
/**
|
|
479
875
|
* @description Additional notes or instructions for the driver
|
|
480
876
|
* @example Dock 3, enter from back of building
|
|
@@ -484,678 +880,2094 @@ interface components {
|
|
|
484
880
|
* @description Whether a liftgate is required at this location
|
|
485
881
|
* @example false
|
|
486
882
|
*/
|
|
487
|
-
|
|
883
|
+
liftgate_required?: boolean;
|
|
488
884
|
/**
|
|
489
885
|
* @description Whether this is a limited access location (residential, construction site, etc.)
|
|
490
886
|
* @example false
|
|
491
887
|
*/
|
|
492
|
-
|
|
888
|
+
limited_access?: boolean;
|
|
493
889
|
/**
|
|
494
890
|
* @description Whether an appointment is required for pickup/delivery
|
|
495
891
|
* @example true
|
|
496
892
|
*/
|
|
497
|
-
|
|
498
|
-
};
|
|
499
|
-
/** @description Request to create a new shipment */
|
|
500
|
-
CreateShipmentRequest: {
|
|
501
|
-
/**
|
|
502
|
-
* @description Optional ID of a previously generated quote.
|
|
503
|
-
* @example 507f1f77bcf86cd799439013
|
|
504
|
-
*/
|
|
505
|
-
quoteId?: string;
|
|
506
|
-
pickupAddress: components["schemas"]["Address"];
|
|
507
|
-
deliveryAddress: components["schemas"]["Address"];
|
|
508
|
-
/** @description List of cargo components in the shipment */
|
|
509
|
-
orderComponents: components["schemas"]["OrderComponent"][];
|
|
510
|
-
/**
|
|
511
|
-
* @description Description of the shipment contents
|
|
512
|
-
* @example Electronics - fragile
|
|
513
|
-
*/
|
|
514
|
-
description: string;
|
|
515
|
-
/**
|
|
516
|
-
* @description Purchase order number for reference
|
|
517
|
-
* @example PO-2024-12345
|
|
518
|
-
*/
|
|
519
|
-
poNumber?: string;
|
|
520
|
-
/**
|
|
521
|
-
* @description Additional reference number
|
|
522
|
-
* @example REF-ABC-123
|
|
523
|
-
*/
|
|
524
|
-
refNumber?: string;
|
|
525
|
-
/**
|
|
526
|
-
* Format: date-time
|
|
527
|
-
* @description Required pickup date (ISO 8601 format)
|
|
528
|
-
* @example 2024-12-24T08:00:00Z
|
|
529
|
-
*/
|
|
530
|
-
requiredPickupDate?: string;
|
|
531
|
-
/**
|
|
532
|
-
* Format: date-time
|
|
533
|
-
* @description Required delivery by date (ISO 8601 format)
|
|
534
|
-
* @example 2024-12-26T17:00:00Z
|
|
535
|
-
*/
|
|
536
|
-
requiredDeliveryBy?: string;
|
|
893
|
+
appointment_required?: boolean;
|
|
537
894
|
};
|
|
538
|
-
/** @description
|
|
539
|
-
|
|
895
|
+
/** @description Individual pallet/component details */
|
|
896
|
+
CarrierComponent: {
|
|
540
897
|
/**
|
|
541
898
|
* Format: int32
|
|
542
899
|
* @description Number of pallets in this component
|
|
543
|
-
* @example
|
|
900
|
+
* @example 1
|
|
544
901
|
*/
|
|
545
|
-
|
|
902
|
+
pallet_count?: number;
|
|
546
903
|
/**
|
|
547
|
-
* Format:
|
|
548
|
-
* @description Weight
|
|
549
|
-
* @example
|
|
904
|
+
* Format: float
|
|
905
|
+
* @description Weight in pounds for this component
|
|
906
|
+
* @example 600
|
|
550
907
|
*/
|
|
551
|
-
|
|
908
|
+
pounds_weight?: number;
|
|
552
909
|
/**
|
|
553
|
-
* @description Pallet dimensions
|
|
910
|
+
* @description Pallet dimensions [length, width, height] in inches
|
|
554
911
|
* @example [
|
|
555
912
|
* 48,
|
|
556
913
|
* 40,
|
|
557
|
-
*
|
|
914
|
+
* 60
|
|
558
915
|
* ]
|
|
559
916
|
*/
|
|
560
|
-
|
|
561
|
-
};
|
|
562
|
-
/** @description Request to generate a shipping quote. Quotes are valid for 2 days from creation. */
|
|
563
|
-
QuoteRequest: {
|
|
564
|
-
pickupAddress: components["schemas"]["Address"];
|
|
565
|
-
deliveryAddress: components["schemas"]["Address"];
|
|
566
|
-
/** @description List of pallets or freight pieces. */
|
|
567
|
-
orderComponents: components["schemas"]["OrderComponent"][];
|
|
917
|
+
pallet_dimensions?: number[];
|
|
568
918
|
/**
|
|
569
|
-
*
|
|
570
|
-
* @
|
|
571
|
-
* @example 2026-04-01T08:00:00Z
|
|
919
|
+
* @description Freight class code
|
|
920
|
+
* @example 70
|
|
572
921
|
*/
|
|
573
|
-
|
|
922
|
+
freight_class?: string;
|
|
574
923
|
};
|
|
575
|
-
/** @description
|
|
576
|
-
|
|
577
|
-
/**
|
|
578
|
-
* @description Unique quote identifier
|
|
579
|
-
* @example 507f1f77bcf86cd799439013
|
|
580
|
-
*/
|
|
581
|
-
id?: string;
|
|
582
|
-
/**
|
|
583
|
-
* Format: int32
|
|
584
|
-
* @description Total quoted price in cents (USD)
|
|
585
|
-
* @example 125000
|
|
586
|
-
*/
|
|
587
|
-
quotedPriceInCents?: number;
|
|
924
|
+
/** @description Carrier shipment details (post-acceptance) */
|
|
925
|
+
CarrierShipment: {
|
|
588
926
|
/**
|
|
589
|
-
*
|
|
590
|
-
* @
|
|
591
|
-
* @example 2024-12-20T15:30:00Z
|
|
927
|
+
* @description Unique offer identifier
|
|
928
|
+
* @example 507f1f77bcf86cd799439012
|
|
592
929
|
*/
|
|
593
|
-
quoteExpirationTime?: string;
|
|
594
|
-
};
|
|
595
|
-
TripLeg: {
|
|
596
|
-
/** Format: double */
|
|
597
|
-
startLat?: number;
|
|
598
|
-
/** Format: double */
|
|
599
|
-
startLong?: number;
|
|
600
|
-
/** Format: date-time */
|
|
601
|
-
startTime?: string;
|
|
602
|
-
/** Format: double */
|
|
603
|
-
endLat?: number;
|
|
604
|
-
/** Format: double */
|
|
605
|
-
endLong?: number;
|
|
606
|
-
/** Format: date-time */
|
|
607
|
-
arrivalWindowStart?: string;
|
|
608
|
-
/** Format: date-time */
|
|
609
|
-
arrivalWindowEnd?: string;
|
|
610
|
-
availableForOffers?: boolean;
|
|
611
|
-
/** Format: int32 */
|
|
612
|
-
estDriveTimeMinutes?: number;
|
|
613
|
-
/** Format: int32 */
|
|
614
|
-
stopNumber?: number;
|
|
615
|
-
};
|
|
616
|
-
TripRequest: {
|
|
617
930
|
id?: string;
|
|
618
|
-
carrierId?: string;
|
|
619
|
-
vehicleId?: string;
|
|
620
|
-
tripNo?: string;
|
|
621
|
-
legs?: components["schemas"]["TripLeg"][];
|
|
622
|
-
};
|
|
623
|
-
/** @description GPS location data point for a vehicle */
|
|
624
|
-
GpsData: {
|
|
625
|
-
/**
|
|
626
|
-
* @description Unique identifier for the vehicle
|
|
627
|
-
* @example TRUCK-001
|
|
628
|
-
*/
|
|
629
|
-
vehicleId: string;
|
|
630
|
-
/**
|
|
631
|
-
* Format: date-time
|
|
632
|
-
* @description Timestamp of the GPS reading (ISO 8601 format). Must not be in the future.
|
|
633
|
-
* @example 2025-02-20T17:33:15Z
|
|
634
|
-
*/
|
|
635
|
-
timestamp: string;
|
|
636
|
-
/**
|
|
637
|
-
* Format: double
|
|
638
|
-
* @description Latitude coordinate
|
|
639
|
-
* @example 33.787363
|
|
640
|
-
*/
|
|
641
|
-
latitude: number;
|
|
642
|
-
/**
|
|
643
|
-
* Format: double
|
|
644
|
-
* @description Longitude coordinate
|
|
645
|
-
* @example -118.163715
|
|
646
|
-
*/
|
|
647
|
-
longitude: number;
|
|
648
|
-
/**
|
|
649
|
-
* Format: int32
|
|
650
|
-
* @description Heading in degrees (0-359, where 0 is North)
|
|
651
|
-
* @example 270
|
|
652
|
-
*/
|
|
653
|
-
heading: number;
|
|
654
|
-
/**
|
|
655
|
-
* Format: int32
|
|
656
|
-
* @description Speed in km/h
|
|
657
|
-
* @example 65
|
|
658
|
-
*/
|
|
659
|
-
speed: number;
|
|
660
|
-
};
|
|
661
|
-
/** @description Token request containing client credentials */
|
|
662
|
-
TokenRequest: {
|
|
663
931
|
/**
|
|
664
|
-
* @description
|
|
665
|
-
* @
|
|
932
|
+
* @description Current status of the carrier offer
|
|
933
|
+
* @enum {string}
|
|
666
934
|
*/
|
|
667
|
-
|
|
935
|
+
status?: "PENDING" | "ACCEPTED" | "PICKED_UP" | "DELIVERED" | "REJECTED" | "EXPIRED" | "CANCELLED";
|
|
668
936
|
/**
|
|
669
|
-
* @description
|
|
670
|
-
* @example
|
|
937
|
+
* @description Carrier's own tracking reference number
|
|
938
|
+
* @example CARRIER-TRK-789
|
|
671
939
|
*/
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
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"];
|
|
676
953
|
/**
|
|
677
|
-
* @description
|
|
678
|
-
* @example
|
|
954
|
+
* @description PIN code for pickup verification
|
|
955
|
+
* @example 1234
|
|
679
956
|
*/
|
|
680
|
-
|
|
957
|
+
pickup_pin?: string;
|
|
681
958
|
/**
|
|
682
|
-
* @description
|
|
683
|
-
* @example
|
|
959
|
+
* @description PIN code for delivery verification
|
|
960
|
+
* @example 5678
|
|
684
961
|
*/
|
|
685
|
-
|
|
962
|
+
delivery_pin?: string;
|
|
686
963
|
/**
|
|
687
|
-
* Format:
|
|
688
|
-
* @description
|
|
689
|
-
* @example
|
|
964
|
+
* Format: date-time
|
|
965
|
+
* @description Offer expiration time — must accept or reject before this time
|
|
966
|
+
* @example 2026-01-15T12:00:00Z
|
|
690
967
|
*/
|
|
691
|
-
|
|
692
|
-
};
|
|
693
|
-
/** @description Error response for token requests */
|
|
694
|
-
TokenErrorResponse: {
|
|
968
|
+
deadline?: string;
|
|
695
969
|
/**
|
|
696
|
-
*
|
|
697
|
-
* @
|
|
970
|
+
* Format: date-time
|
|
971
|
+
* @description When this offer was created
|
|
972
|
+
* @example 2026-01-15T08:00:00Z
|
|
698
973
|
*/
|
|
699
|
-
|
|
974
|
+
created_at?: string;
|
|
700
975
|
/**
|
|
701
|
-
*
|
|
702
|
-
* @
|
|
976
|
+
* Format: date-time
|
|
977
|
+
* @description When this offer was last updated
|
|
978
|
+
* @example 2026-01-15T10:30:00Z
|
|
703
979
|
*/
|
|
704
|
-
|
|
980
|
+
updated_at?: string;
|
|
705
981
|
};
|
|
706
982
|
/** @description Shipment tracking information */
|
|
707
|
-
|
|
708
|
-
/**
|
|
709
|
-
* @description Unique identifier for the order
|
|
710
|
-
* @example 507f1f77bcf86cd799439011
|
|
711
|
-
*/
|
|
712
|
-
id?: string;
|
|
983
|
+
CarrierTracking: {
|
|
713
984
|
/**
|
|
714
985
|
* @description Human-readable PRO number for the shipment (5-character alphanumeric)
|
|
715
986
|
* @example ZKYQ5
|
|
716
987
|
*/
|
|
717
|
-
|
|
988
|
+
order_number?: string;
|
|
718
989
|
/**
|
|
719
990
|
* @description Current shipment status in the order lifecycle
|
|
720
991
|
* @example PICKED_UP
|
|
721
992
|
* @enum {string}
|
|
722
993
|
*/
|
|
723
|
-
|
|
994
|
+
order_status?: "INITIALIZED" | "CONFIRMED" | "ACCEPTED" | "ASSIGNED" | "PICKED_UP" | "IN_TRANSIT" | "DELIVERED" | "CANCELLED";
|
|
724
995
|
/**
|
|
725
996
|
* Format: date-time
|
|
726
997
|
* @description Actual pickup date/time (ISO 8601 format)
|
|
727
998
|
* @example 2024-12-23T10:30:00Z
|
|
728
999
|
*/
|
|
729
|
-
|
|
1000
|
+
actual_pickup_date?: string;
|
|
730
1001
|
/**
|
|
731
1002
|
* Format: date-time
|
|
732
1003
|
* @description Actual delivery date/time (ISO 8601 format)
|
|
733
1004
|
* @example 2024-12-25T14:00:00Z
|
|
734
1005
|
*/
|
|
735
|
-
|
|
1006
|
+
actual_delivery_date?: string;
|
|
736
1007
|
/**
|
|
737
1008
|
* Format: date-time
|
|
738
1009
|
* @description Estimated pickup date/time (ISO 8601 format)
|
|
739
1010
|
* @example 2024-12-23T09:00:00Z
|
|
740
1011
|
*/
|
|
741
|
-
|
|
1012
|
+
estimated_pickup_date?: string;
|
|
742
1013
|
/**
|
|
743
1014
|
* Format: date-time
|
|
744
1015
|
* @description Estimated delivery date/time (ISO 8601 format)
|
|
745
1016
|
* @example 2024-12-25T12:00:00Z
|
|
746
1017
|
*/
|
|
747
|
-
|
|
1018
|
+
estimated_delivery_date?: string;
|
|
748
1019
|
};
|
|
749
|
-
/** @description
|
|
750
|
-
|
|
1020
|
+
/** @description Carrier-reported delivery confirmation details */
|
|
1021
|
+
DeliveryConfirmation: {
|
|
751
1022
|
/**
|
|
752
|
-
*
|
|
753
|
-
* @
|
|
1023
|
+
* Format: date-time
|
|
1024
|
+
* @description Actual delivery time
|
|
1025
|
+
* @example 2026-01-15T14:30:00Z
|
|
754
1026
|
*/
|
|
755
|
-
|
|
1027
|
+
delivery_time?: string;
|
|
756
1028
|
/**
|
|
757
|
-
* @description
|
|
758
|
-
* @example
|
|
1029
|
+
* @description Formatted delivery address
|
|
1030
|
+
* @example 456 Market St, Oakland, CA 94607
|
|
759
1031
|
*/
|
|
760
|
-
|
|
1032
|
+
address?: string;
|
|
761
1033
|
/**
|
|
762
|
-
* Format:
|
|
763
|
-
* @description
|
|
764
|
-
* @example
|
|
1034
|
+
* Format: double
|
|
1035
|
+
* @description GPS latitude at delivery
|
|
1036
|
+
* @example 37.7749
|
|
765
1037
|
*/
|
|
766
|
-
|
|
767
|
-
};
|
|
768
|
-
/** @description A line item on an invoice */
|
|
769
|
-
InvoiceLineItem: {
|
|
1038
|
+
latitude?: number;
|
|
770
1039
|
/**
|
|
771
|
-
*
|
|
772
|
-
* @
|
|
1040
|
+
* Format: double
|
|
1041
|
+
* @description GPS longitude at delivery
|
|
1042
|
+
* @example -122.4194
|
|
773
1043
|
*/
|
|
774
|
-
|
|
1044
|
+
longitude?: number;
|
|
775
1045
|
/**
|
|
776
|
-
* @description
|
|
777
|
-
* @example
|
|
1046
|
+
* @description Name of person who received the shipment
|
|
1047
|
+
* @example Recipient Name
|
|
778
1048
|
*/
|
|
779
|
-
|
|
1049
|
+
signed_by?: string;
|
|
780
1050
|
/**
|
|
781
|
-
*
|
|
782
|
-
* @
|
|
783
|
-
* @example 500
|
|
1051
|
+
* @description URL to signature image
|
|
1052
|
+
* @example https://storage.oway.io/signatures/sig-12345.png
|
|
784
1053
|
*/
|
|
785
|
-
|
|
1054
|
+
signature_image_url?: string;
|
|
786
1055
|
/**
|
|
787
|
-
*
|
|
788
|
-
* @
|
|
789
|
-
* @example 2
|
|
1056
|
+
* @description URL to proof of delivery document
|
|
1057
|
+
* @example https://storage.oway.io/pod/pod-12345.pdf
|
|
790
1058
|
*/
|
|
791
|
-
|
|
1059
|
+
proof_of_delivery_url?: string;
|
|
792
1060
|
/**
|
|
793
|
-
* @description
|
|
794
|
-
* @example
|
|
1061
|
+
* @description Additional notes about the delivery
|
|
1062
|
+
* @example Delivered to front desk
|
|
795
1063
|
*/
|
|
796
|
-
|
|
797
|
-
};
|
|
798
|
-
/** @description Itemized invoice for a delivered shipment */
|
|
799
|
-
InvoiceResponse: {
|
|
1064
|
+
notes?: string;
|
|
800
1065
|
/**
|
|
801
|
-
*
|
|
802
|
-
* @
|
|
1066
|
+
* Format: date-time
|
|
1067
|
+
* @description When this confirmation was recorded
|
|
1068
|
+
* @example 2026-01-15T14:35:00Z
|
|
803
1069
|
*/
|
|
804
|
-
|
|
1070
|
+
recorded_at?: string;
|
|
1071
|
+
};
|
|
1072
|
+
/** @description Assigned driver information */
|
|
1073
|
+
Driver: {
|
|
805
1074
|
/**
|
|
806
|
-
* @description
|
|
807
|
-
* @example
|
|
1075
|
+
* @description Driver's full name
|
|
1076
|
+
* @example John Smith
|
|
808
1077
|
*/
|
|
809
|
-
|
|
1078
|
+
name?: string;
|
|
810
1079
|
/**
|
|
811
|
-
*
|
|
812
|
-
* @
|
|
813
|
-
* @example 2024-12-20T15:30:00Z
|
|
1080
|
+
* @description Driver's phone number in E.164 format (e.g., +15551234567)
|
|
1081
|
+
* @example +15551234567
|
|
814
1082
|
*/
|
|
815
|
-
|
|
1083
|
+
phone?: string;
|
|
816
1084
|
/**
|
|
817
|
-
*
|
|
818
|
-
* @
|
|
819
|
-
* @example 2024-12-18T09:00:00Z
|
|
1085
|
+
* @description Vehicle identifier assigned to this shipment
|
|
1086
|
+
* @example TRUCK-42
|
|
820
1087
|
*/
|
|
821
|
-
|
|
1088
|
+
vehicle_id?: string;
|
|
1089
|
+
};
|
|
1090
|
+
/** @description Order details visible to the carrier */
|
|
1091
|
+
Order: {
|
|
822
1092
|
/**
|
|
823
|
-
*
|
|
824
|
-
* @
|
|
825
|
-
* @example 2024-12-20T15:30:00Z
|
|
1093
|
+
* @description Human-readable PRO number for the shipment (5-character alphanumeric)
|
|
1094
|
+
* @example Y73Q0
|
|
826
1095
|
*/
|
|
827
|
-
|
|
1096
|
+
order_number?: string;
|
|
828
1097
|
/**
|
|
829
|
-
* @description
|
|
830
|
-
* @example
|
|
1098
|
+
* @description Current shipment status in the order lifecycle
|
|
1099
|
+
* @example CONFIRMED
|
|
1100
|
+
* @enum {string}
|
|
831
1101
|
*/
|
|
832
|
-
|
|
1102
|
+
order_status?: "INITIALIZED" | "CONFIRMED" | "ACCEPTED" | "ASSIGNED" | "PICKED_UP" | "IN_TRANSIT" | "DELIVERED" | "CANCELLED";
|
|
833
1103
|
/**
|
|
834
|
-
* @description
|
|
835
|
-
* @example
|
|
1104
|
+
* @description Cargo description
|
|
1105
|
+
* @example Electronics - 2 pallets shrink-wrapped
|
|
836
1106
|
*/
|
|
837
|
-
|
|
838
|
-
/** @description Line items representing the shipped goods */
|
|
839
|
-
lineItems?: components["schemas"]["InvoiceLineItem"][];
|
|
840
|
-
/** @description Itemized charges and fees */
|
|
841
|
-
charges?: components["schemas"]["InvoiceCharge"][];
|
|
1107
|
+
description?: string;
|
|
842
1108
|
/**
|
|
843
1109
|
* Format: int32
|
|
844
|
-
* @description Total of
|
|
845
|
-
* @example
|
|
1110
|
+
* @description Total number of pallets
|
|
1111
|
+
* @example 2
|
|
846
1112
|
*/
|
|
847
|
-
|
|
1113
|
+
total_pallet_count?: number;
|
|
848
1114
|
/**
|
|
849
|
-
* Format:
|
|
850
|
-
* @description Total weight
|
|
851
|
-
* @example
|
|
1115
|
+
* Format: float
|
|
1116
|
+
* @description Total weight in pounds
|
|
1117
|
+
* @example 1200
|
|
852
1118
|
*/
|
|
853
|
-
|
|
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: {
|
|
854
1147
|
/**
|
|
855
1148
|
* Format: int32
|
|
856
|
-
* @description Total
|
|
857
|
-
* @example
|
|
1149
|
+
* @description Total payout amount in cents (USD). Includes base payout plus all additional charges.
|
|
1150
|
+
* @example 125000
|
|
858
1151
|
*/
|
|
859
|
-
|
|
860
|
-
shipper?: components["schemas"]["Address"];
|
|
861
|
-
consignee?: components["schemas"]["Address"];
|
|
862
|
-
billTo?: components["schemas"]["Address"];
|
|
1152
|
+
total_in_cents?: number;
|
|
863
1153
|
};
|
|
864
|
-
/** @description
|
|
865
|
-
|
|
1154
|
+
/** @description Carrier-reported pickup confirmation details */
|
|
1155
|
+
PickupConfirmation: {
|
|
866
1156
|
/**
|
|
867
|
-
*
|
|
868
|
-
* @
|
|
1157
|
+
* Format: date-time
|
|
1158
|
+
* @description Actual pickup time
|
|
1159
|
+
* @example 2026-01-15T10:30:00Z
|
|
869
1160
|
*/
|
|
870
|
-
|
|
1161
|
+
pickup_time?: string;
|
|
871
1162
|
/**
|
|
872
|
-
* @description
|
|
873
|
-
* @example
|
|
1163
|
+
* @description Formatted pickup address
|
|
1164
|
+
* @example 123 Main St, San Francisco, CA 94102
|
|
874
1165
|
*/
|
|
875
|
-
|
|
1166
|
+
address?: string;
|
|
876
1167
|
/**
|
|
877
|
-
*
|
|
878
|
-
* @
|
|
1168
|
+
* Format: double
|
|
1169
|
+
* @description GPS latitude at pickup
|
|
1170
|
+
* @example 37.7749
|
|
879
1171
|
*/
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
1172
|
+
latitude?: number;
|
|
1173
|
+
/**
|
|
1174
|
+
* Format: double
|
|
1175
|
+
* @description GPS longitude at pickup
|
|
1176
|
+
* @example -122.4194
|
|
1177
|
+
*/
|
|
1178
|
+
longitude?: number;
|
|
884
1179
|
/**
|
|
885
|
-
* @description Name of
|
|
886
|
-
* @example
|
|
1180
|
+
* @description Name of driver who picked up
|
|
1181
|
+
* @example John Smith
|
|
887
1182
|
*/
|
|
888
|
-
|
|
1183
|
+
driver_name?: string;
|
|
889
1184
|
/**
|
|
890
|
-
* @description
|
|
891
|
-
* @example
|
|
1185
|
+
* @description Name of person who handed over the shipment
|
|
1186
|
+
* @example Jane Doe
|
|
1187
|
+
*/
|
|
1188
|
+
signed_by?: string;
|
|
1189
|
+
/**
|
|
1190
|
+
* @description Additional notes about the pickup
|
|
1191
|
+
* @example Picked up from dock 3
|
|
892
1192
|
*/
|
|
893
|
-
|
|
1193
|
+
notes?: string;
|
|
894
1194
|
/**
|
|
895
|
-
*
|
|
896
|
-
* @
|
|
1195
|
+
* Format: date-time
|
|
1196
|
+
* @description When this confirmation was recorded
|
|
1197
|
+
* @example 2026-01-15T10:35:00Z
|
|
897
1198
|
*/
|
|
898
|
-
|
|
899
|
-
/** @description List of available API endpoints for this carrier */
|
|
900
|
-
availableEndpoints?: string[];
|
|
1199
|
+
recorded_at?: string;
|
|
901
1200
|
};
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
/**
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
/**
|
|
928
|
-
|
|
929
|
-
/** Format: float */
|
|
930
|
-
poundsWeight?: number;
|
|
931
|
-
palletDimensions?: number[];
|
|
932
|
-
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;
|
|
933
1228
|
};
|
|
934
|
-
|
|
1229
|
+
/** @description Carrier offer details */
|
|
1230
|
+
Offer: {
|
|
1231
|
+
/**
|
|
1232
|
+
* @description Unique offer identifier
|
|
1233
|
+
* @example 507f1f77bcf86cd799439012
|
|
1234
|
+
*/
|
|
935
1235
|
id?: string;
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
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
|
+
*/
|
|
939
1273
|
deadline?: string;
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
deliveryPin?: string;
|
|
953
|
-
contacted?: boolean;
|
|
954
|
-
communicationExpired?: boolean;
|
|
955
|
-
/** Format: int32 */
|
|
956
|
-
carrierCounterOfferPriceInCents?: number;
|
|
957
|
-
emailThreadId?: string;
|
|
958
|
-
/** Format: int32 */
|
|
959
|
-
manualCentsPayoutOverride?: number;
|
|
960
|
-
additionalPayoutsInCents?: {
|
|
961
|
-
[key: string]: number;
|
|
962
|
-
};
|
|
963
|
-
/** Format: int32 */
|
|
964
|
-
totalPayoutInCents?: number;
|
|
965
|
-
realTimeVehicleLocationSnapshots?: components["schemas"]["VehicleLocationSnapshot"][];
|
|
966
|
-
tripFragmentMatches?: components["schemas"]["TripFragmentMatch"][];
|
|
967
|
-
/** Format: date-time */
|
|
968
|
-
createdAt?: string;
|
|
969
|
-
/** Format: date-time */
|
|
970
|
-
updatedAt?: string;
|
|
971
|
-
orderData?: components["schemas"]["Order"];
|
|
972
|
-
pickupAddressData?: components["schemas"]["Address"];
|
|
973
|
-
dropoffAddressData?: components["schemas"]["Address"];
|
|
974
|
-
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;
|
|
975
1286
|
};
|
|
976
|
-
|
|
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
|
+
*/
|
|
977
1322
|
id?: string;
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
/** Format: date-time */
|
|
998
|
-
paidAt?: string;
|
|
999
|
-
paidBy?: string;
|
|
1000
|
-
paymentMethod?: string;
|
|
1001
|
-
paymentNotes?: string;
|
|
1002
|
-
confirmed?: boolean;
|
|
1003
|
-
state?: string;
|
|
1004
|
-
/** @enum {string} */
|
|
1005
|
-
cancellationReason?: "unspecified" | "customer_cancellation" | "shipment_entry_error" | "low_coverage" | "unacceptable_margin" | "expired" | "carrier_exception" | "shipper_exception" | "tonu" | "chargeback_other";
|
|
1006
|
-
orderComponents?: components["schemas"]["ComponentDetails"][];
|
|
1007
|
-
poNumber?: string;
|
|
1008
|
-
refNumber?: string;
|
|
1009
|
-
emailThreadId?: string;
|
|
1010
|
-
/** Format: date-time */
|
|
1011
|
-
decidedAt?: string;
|
|
1012
|
-
/** Format: date-time */
|
|
1013
|
-
paymentDueAt?: string;
|
|
1014
|
-
/** Format: date-time */
|
|
1015
|
-
createdAt?: string;
|
|
1016
|
-
/** Format: date-time */
|
|
1017
|
-
updatedAt?: string;
|
|
1018
|
-
searchMatches?: components["schemas"]["SearchMatch"][];
|
|
1019
|
-
/** Format: double */
|
|
1020
|
-
avgPoundsPerCubicFoot?: number;
|
|
1021
|
-
/** Format: double */
|
|
1022
|
-
totalCubicFeet?: number;
|
|
1023
|
-
orderPreConfirmation?: boolean;
|
|
1024
|
-
/** Format: int32 */
|
|
1025
|
-
totalPriceInCents?: number;
|
|
1026
|
-
/** Format: int32 */
|
|
1027
|
-
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;
|
|
1028
1342
|
};
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
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;
|
|
1034
1372
|
};
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
/**
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
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
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
/**
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
VehicleLocationSnapshot: {
|
|
1113
|
-
id?: string;
|
|
1114
|
-
vehicleId?: string;
|
|
1115
|
-
vehicleName?: string;
|
|
1116
|
-
location?: string;
|
|
1117
|
-
/** Format: int32 */
|
|
1118
|
-
heading?: number;
|
|
1119
|
-
/** Format: int32 */
|
|
1120
|
-
speed?: number;
|
|
1121
|
-
/** Format: date-time */
|
|
1122
|
-
lastUpdated?: string;
|
|
1123
|
-
/** Format: int32 */
|
|
1124
|
-
numHexesAwayFromPickup?: number;
|
|
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;
|
|
1125
1450
|
};
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
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
|
|
1142
2950
|
*/
|
|
1143
|
-
|
|
2951
|
+
identifier: string;
|
|
1144
2952
|
};
|
|
1145
2953
|
cookie?: never;
|
|
1146
2954
|
};
|
|
1147
|
-
requestBody
|
|
2955
|
+
requestBody: {
|
|
2956
|
+
content: {
|
|
2957
|
+
"application/json": components["schemas"]["OfferLocationUpdate"];
|
|
2958
|
+
};
|
|
2959
|
+
};
|
|
1148
2960
|
responses: {
|
|
1149
|
-
/** @description
|
|
2961
|
+
/** @description Location update acknowledged */
|
|
1150
2962
|
200: {
|
|
1151
2963
|
headers: {
|
|
1152
2964
|
[name: string]: unknown;
|
|
1153
2965
|
};
|
|
1154
2966
|
content: {
|
|
1155
|
-
"application/json": components["schemas"]["
|
|
2967
|
+
"application/json": components["schemas"]["LocationAcknowledgment"];
|
|
1156
2968
|
};
|
|
1157
2969
|
};
|
|
1158
|
-
/** @description Invalid request:
|
|
2970
|
+
/** @description Invalid request: latitude, longitude, and timestamp are required */
|
|
1159
2971
|
400: {
|
|
1160
2972
|
headers: {
|
|
1161
2973
|
[name: string]: unknown;
|
|
@@ -1164,7 +2976,7 @@ interface operations {
|
|
|
1164
2976
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1165
2977
|
};
|
|
1166
2978
|
};
|
|
1167
|
-
/** @description Unauthorized: missing or invalid
|
|
2979
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
1168
2980
|
401: {
|
|
1169
2981
|
headers: {
|
|
1170
2982
|
[name: string]: unknown;
|
|
@@ -1173,7 +2985,7 @@ interface operations {
|
|
|
1173
2985
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1174
2986
|
};
|
|
1175
2987
|
};
|
|
1176
|
-
/** @description Forbidden: missing/invalid API key
|
|
2988
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
1177
2989
|
403: {
|
|
1178
2990
|
headers: {
|
|
1179
2991
|
[name: string]: unknown;
|
|
@@ -1191,6 +3003,15 @@ interface operations {
|
|
|
1191
3003
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1192
3004
|
};
|
|
1193
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
|
+
};
|
|
1194
3015
|
/** @description Internal server error */
|
|
1195
3016
|
500: {
|
|
1196
3017
|
headers: {
|
|
@@ -1202,31 +3023,35 @@ interface operations {
|
|
|
1202
3023
|
};
|
|
1203
3024
|
};
|
|
1204
3025
|
};
|
|
1205
|
-
|
|
3026
|
+
reportException: {
|
|
1206
3027
|
parameters: {
|
|
1207
3028
|
query?: never;
|
|
1208
3029
|
header?: never;
|
|
1209
3030
|
path: {
|
|
1210
3031
|
/**
|
|
1211
|
-
* @description
|
|
1212
|
-
* @example
|
|
3032
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
3033
|
+
* @example Y73Q0
|
|
1213
3034
|
*/
|
|
1214
|
-
|
|
3035
|
+
identifier: string;
|
|
1215
3036
|
};
|
|
1216
3037
|
cookie?: never;
|
|
1217
3038
|
};
|
|
1218
|
-
requestBody
|
|
3039
|
+
requestBody: {
|
|
3040
|
+
content: {
|
|
3041
|
+
"application/json": components["schemas"]["ExceptionReportRequest"];
|
|
3042
|
+
};
|
|
3043
|
+
};
|
|
1219
3044
|
responses: {
|
|
1220
|
-
/** @description
|
|
3045
|
+
/** @description Exception recorded */
|
|
1221
3046
|
200: {
|
|
1222
3047
|
headers: {
|
|
1223
3048
|
[name: string]: unknown;
|
|
1224
3049
|
};
|
|
1225
3050
|
content: {
|
|
1226
|
-
"application/json": components["schemas"]["
|
|
3051
|
+
"application/json": components["schemas"]["ExceptionResponse"];
|
|
1227
3052
|
};
|
|
1228
3053
|
};
|
|
1229
|
-
/** @description Invalid request:
|
|
3054
|
+
/** @description Invalid request: exceptionType and exceptionTime are required */
|
|
1230
3055
|
400: {
|
|
1231
3056
|
headers: {
|
|
1232
3057
|
[name: string]: unknown;
|
|
@@ -1235,7 +3060,7 @@ interface operations {
|
|
|
1235
3060
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1236
3061
|
};
|
|
1237
3062
|
};
|
|
1238
|
-
/** @description Unauthorized: missing or invalid
|
|
3063
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
1239
3064
|
401: {
|
|
1240
3065
|
headers: {
|
|
1241
3066
|
[name: string]: unknown;
|
|
@@ -1244,7 +3069,7 @@ interface operations {
|
|
|
1244
3069
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1245
3070
|
};
|
|
1246
3071
|
};
|
|
1247
|
-
/** @description Forbidden: missing/invalid API key
|
|
3072
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
1248
3073
|
403: {
|
|
1249
3074
|
headers: {
|
|
1250
3075
|
[name: string]: unknown;
|
|
@@ -1262,6 +3087,15 @@ interface operations {
|
|
|
1262
3087
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1263
3088
|
};
|
|
1264
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"];
|
|
3097
|
+
};
|
|
3098
|
+
};
|
|
1265
3099
|
/** @description Internal server error */
|
|
1266
3100
|
500: {
|
|
1267
3101
|
headers: {
|
|
@@ -1273,7 +3107,7 @@ interface operations {
|
|
|
1273
3107
|
};
|
|
1274
3108
|
};
|
|
1275
3109
|
};
|
|
1276
|
-
|
|
3110
|
+
addTrips: {
|
|
1277
3111
|
parameters: {
|
|
1278
3112
|
query?: never;
|
|
1279
3113
|
header?: never;
|
|
@@ -1282,20 +3116,20 @@ interface operations {
|
|
|
1282
3116
|
};
|
|
1283
3117
|
requestBody: {
|
|
1284
3118
|
content: {
|
|
1285
|
-
"application/json": components["schemas"]["
|
|
3119
|
+
"application/json": components["schemas"]["CarrierTripRequest"][];
|
|
1286
3120
|
};
|
|
1287
3121
|
};
|
|
1288
3122
|
responses: {
|
|
1289
|
-
/** @description
|
|
3123
|
+
/** @description Trips accepted and processed; returns count of trips added */
|
|
1290
3124
|
200: {
|
|
1291
3125
|
headers: {
|
|
1292
3126
|
[name: string]: unknown;
|
|
1293
3127
|
};
|
|
1294
3128
|
content: {
|
|
1295
|
-
"application/json":
|
|
3129
|
+
"application/json": number;
|
|
1296
3130
|
};
|
|
1297
3131
|
};
|
|
1298
|
-
/** @description Invalid request:
|
|
3132
|
+
/** @description Invalid request: missing required fields or invalid trip data */
|
|
1299
3133
|
400: {
|
|
1300
3134
|
headers: {
|
|
1301
3135
|
[name: string]: unknown;
|
|
@@ -1304,7 +3138,7 @@ interface operations {
|
|
|
1304
3138
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1305
3139
|
};
|
|
1306
3140
|
};
|
|
1307
|
-
/** @description Unauthorized: missing or invalid
|
|
3141
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
1308
3142
|
401: {
|
|
1309
3143
|
headers: {
|
|
1310
3144
|
[name: string]: unknown;
|
|
@@ -1313,7 +3147,7 @@ interface operations {
|
|
|
1313
3147
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1314
3148
|
};
|
|
1315
3149
|
};
|
|
1316
|
-
/** @description Forbidden:
|
|
3150
|
+
/** @description Forbidden: API access is not enabled for this carrier */
|
|
1317
3151
|
403: {
|
|
1318
3152
|
headers: {
|
|
1319
3153
|
[name: string]: unknown;
|
|
@@ -1322,14 +3156,8 @@ interface operations {
|
|
|
1322
3156
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1323
3157
|
};
|
|
1324
3158
|
};
|
|
1325
|
-
/**
|
|
1326
|
-
|
|
1327
|
-
*
|
|
1328
|
-
* - **Location Not Serviceable** (`reason: no_coverage`) — the lane is not within Oway's active coverage area.
|
|
1329
|
-
* - **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.
|
|
1330
|
-
* - **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.
|
|
1331
|
-
*/
|
|
1332
|
-
422: {
|
|
3159
|
+
/** @description Carrier not found */
|
|
3160
|
+
404: {
|
|
1333
3161
|
headers: {
|
|
1334
3162
|
[name: string]: unknown;
|
|
1335
3163
|
};
|
|
@@ -1348,7 +3176,7 @@ interface operations {
|
|
|
1348
3176
|
};
|
|
1349
3177
|
};
|
|
1350
3178
|
};
|
|
1351
|
-
|
|
3179
|
+
getToken: {
|
|
1352
3180
|
parameters: {
|
|
1353
3181
|
query?: never;
|
|
1354
3182
|
header?: never;
|
|
@@ -1357,20 +3185,64 @@ interface operations {
|
|
|
1357
3185
|
};
|
|
1358
3186
|
requestBody: {
|
|
1359
3187
|
content: {
|
|
1360
|
-
"application/json": components["schemas"]["
|
|
3188
|
+
"application/json": components["schemas"]["TokenRequest"];
|
|
1361
3189
|
};
|
|
1362
3190
|
};
|
|
1363
3191
|
responses: {
|
|
1364
|
-
/** @description
|
|
3192
|
+
/** @description Token successfully generated */
|
|
1365
3193
|
200: {
|
|
1366
3194
|
headers: {
|
|
1367
3195
|
[name: string]: unknown;
|
|
1368
3196
|
};
|
|
1369
3197
|
content: {
|
|
1370
|
-
"application/json": components["schemas"]["
|
|
3198
|
+
"application/json": components["schemas"]["TokenResponse"];
|
|
1371
3199
|
};
|
|
1372
3200
|
};
|
|
1373
|
-
/** @description Invalid request:
|
|
3201
|
+
/** @description Invalid request: missing required fields */
|
|
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: {
|
|
3238
|
+
headers: {
|
|
3239
|
+
[name: string]: unknown;
|
|
3240
|
+
};
|
|
3241
|
+
content: {
|
|
3242
|
+
"application/json": components["schemas"]["Shipment"];
|
|
3243
|
+
};
|
|
3244
|
+
};
|
|
3245
|
+
/** @description Invalid request: orderNumber is required */
|
|
1374
3246
|
400: {
|
|
1375
3247
|
headers: {
|
|
1376
3248
|
[name: string]: unknown;
|
|
@@ -1388,7 +3260,7 @@ interface operations {
|
|
|
1388
3260
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1389
3261
|
};
|
|
1390
3262
|
};
|
|
1391
|
-
/** @description Forbidden: missing/invalid API key, or
|
|
3263
|
+
/** @description Forbidden: missing/invalid API key, or shipment does not belong to your company */
|
|
1392
3264
|
403: {
|
|
1393
3265
|
headers: {
|
|
1394
3266
|
[name: string]: unknown;
|
|
@@ -1397,14 +3269,8 @@ interface operations {
|
|
|
1397
3269
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1398
3270
|
};
|
|
1399
3271
|
};
|
|
1400
|
-
/**
|
|
1401
|
-
|
|
1402
|
-
*
|
|
1403
|
-
* - **Location Not Serviceable** (`reason: no_coverage`) — the lane is not within Oway's active coverage area.
|
|
1404
|
-
* - **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.
|
|
1405
|
-
* - **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.
|
|
1406
|
-
*/
|
|
1407
|
-
422: {
|
|
3272
|
+
/** @description Shipment not found */
|
|
3273
|
+
404: {
|
|
1408
3274
|
headers: {
|
|
1409
3275
|
[name: string]: unknown;
|
|
1410
3276
|
};
|
|
@@ -1412,8 +3278,61 @@ interface operations {
|
|
|
1412
3278
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1413
3279
|
};
|
|
1414
3280
|
};
|
|
1415
|
-
|
|
1416
|
-
|
|
3281
|
+
};
|
|
3282
|
+
};
|
|
3283
|
+
trackShipment: {
|
|
3284
|
+
parameters: {
|
|
3285
|
+
query?: never;
|
|
3286
|
+
header?: never;
|
|
3287
|
+
path: {
|
|
3288
|
+
/**
|
|
3289
|
+
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
3290
|
+
* @example ZKYQ5
|
|
3291
|
+
*/
|
|
3292
|
+
orderNumber: string;
|
|
3293
|
+
};
|
|
3294
|
+
cookie?: never;
|
|
3295
|
+
};
|
|
3296
|
+
requestBody?: never;
|
|
3297
|
+
responses: {
|
|
3298
|
+
/** @description Tracking information retrieved successfully */
|
|
3299
|
+
200: {
|
|
3300
|
+
headers: {
|
|
3301
|
+
[name: string]: unknown;
|
|
3302
|
+
};
|
|
3303
|
+
content: {
|
|
3304
|
+
"application/json": components["schemas"]["Tracking"];
|
|
3305
|
+
};
|
|
3306
|
+
};
|
|
3307
|
+
/** @description Invalid request: orderNumber is required */
|
|
3308
|
+
400: {
|
|
3309
|
+
headers: {
|
|
3310
|
+
[name: string]: unknown;
|
|
3311
|
+
};
|
|
3312
|
+
content: {
|
|
3313
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3314
|
+
};
|
|
3315
|
+
};
|
|
3316
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
3317
|
+
401: {
|
|
3318
|
+
headers: {
|
|
3319
|
+
[name: string]: unknown;
|
|
3320
|
+
};
|
|
3321
|
+
content: {
|
|
3322
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3323
|
+
};
|
|
3324
|
+
};
|
|
3325
|
+
/** @description Forbidden: missing/invalid API key, or shipment does not belong to your company */
|
|
3326
|
+
403: {
|
|
3327
|
+
headers: {
|
|
3328
|
+
[name: string]: unknown;
|
|
3329
|
+
};
|
|
3330
|
+
content: {
|
|
3331
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3332
|
+
};
|
|
3333
|
+
};
|
|
3334
|
+
/** @description Shipment not found */
|
|
3335
|
+
404: {
|
|
1417
3336
|
headers: {
|
|
1418
3337
|
[name: string]: unknown;
|
|
1419
3338
|
};
|
|
@@ -1423,32 +3342,95 @@ interface operations {
|
|
|
1423
3342
|
};
|
|
1424
3343
|
};
|
|
1425
3344
|
};
|
|
1426
|
-
|
|
3345
|
+
getInvoice: {
|
|
3346
|
+
parameters: {
|
|
3347
|
+
query?: never;
|
|
3348
|
+
header?: never;
|
|
3349
|
+
path: {
|
|
3350
|
+
/**
|
|
3351
|
+
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
3352
|
+
* @example ZKYQ5
|
|
3353
|
+
*/
|
|
3354
|
+
orderNumber: string;
|
|
3355
|
+
};
|
|
3356
|
+
cookie?: never;
|
|
3357
|
+
};
|
|
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
|
+
};
|
|
3404
|
+
};
|
|
3405
|
+
};
|
|
3406
|
+
};
|
|
3407
|
+
getDocument: {
|
|
1427
3408
|
parameters: {
|
|
1428
3409
|
query?: never;
|
|
1429
3410
|
header?: never;
|
|
1430
3411
|
path: {
|
|
1431
|
-
/**
|
|
1432
|
-
|
|
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";
|
|
1433
3419
|
};
|
|
1434
3420
|
cookie?: never;
|
|
1435
3421
|
};
|
|
1436
|
-
requestBody
|
|
1437
|
-
content: {
|
|
1438
|
-
"application/json": components["schemas"]["TripRequest"][];
|
|
1439
|
-
};
|
|
1440
|
-
};
|
|
3422
|
+
requestBody?: never;
|
|
1441
3423
|
responses: {
|
|
1442
|
-
/** @description
|
|
3424
|
+
/** @description Document URL retrieved successfully */
|
|
1443
3425
|
200: {
|
|
1444
3426
|
headers: {
|
|
1445
3427
|
[name: string]: unknown;
|
|
1446
3428
|
};
|
|
1447
3429
|
content: {
|
|
1448
|
-
"application/json":
|
|
3430
|
+
"application/json": components["schemas"]["DocumentResponse"];
|
|
1449
3431
|
};
|
|
1450
3432
|
};
|
|
1451
|
-
/** @description Invalid request:
|
|
3433
|
+
/** @description Invalid request: orderNumber and documentType are required */
|
|
1452
3434
|
400: {
|
|
1453
3435
|
headers: {
|
|
1454
3436
|
[name: string]: unknown;
|
|
@@ -1457,7 +3439,7 @@ interface operations {
|
|
|
1457
3439
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1458
3440
|
};
|
|
1459
3441
|
};
|
|
1460
|
-
/** @description Unauthorized: missing or invalid
|
|
3442
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
1461
3443
|
401: {
|
|
1462
3444
|
headers: {
|
|
1463
3445
|
[name: string]: unknown;
|
|
@@ -1466,7 +3448,7 @@ interface operations {
|
|
|
1466
3448
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1467
3449
|
};
|
|
1468
3450
|
};
|
|
1469
|
-
/** @description Forbidden: API
|
|
3451
|
+
/** @description Forbidden: missing/invalid API key, or shipment does not belong to your company */
|
|
1470
3452
|
403: {
|
|
1471
3453
|
headers: {
|
|
1472
3454
|
[name: string]: unknown;
|
|
@@ -1475,7 +3457,7 @@ interface operations {
|
|
|
1475
3457
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1476
3458
|
};
|
|
1477
3459
|
};
|
|
1478
|
-
/** @description
|
|
3460
|
+
/** @description Shipment or document not found */
|
|
1479
3461
|
404: {
|
|
1480
3462
|
headers: {
|
|
1481
3463
|
[name: string]: unknown;
|
|
@@ -1495,32 +3477,28 @@ interface operations {
|
|
|
1495
3477
|
};
|
|
1496
3478
|
};
|
|
1497
3479
|
};
|
|
1498
|
-
|
|
3480
|
+
getQuote: {
|
|
1499
3481
|
parameters: {
|
|
1500
3482
|
query?: never;
|
|
1501
3483
|
header?: never;
|
|
1502
3484
|
path: {
|
|
1503
|
-
/** @description
|
|
1504
|
-
|
|
3485
|
+
/** @description Unique quote ID */
|
|
3486
|
+
quoteId: string;
|
|
1505
3487
|
};
|
|
1506
3488
|
cookie?: never;
|
|
1507
3489
|
};
|
|
1508
|
-
requestBody
|
|
1509
|
-
content: {
|
|
1510
|
-
"application/json": components["schemas"]["GpsData"][];
|
|
1511
|
-
};
|
|
1512
|
-
};
|
|
3490
|
+
requestBody?: never;
|
|
1513
3491
|
responses: {
|
|
1514
|
-
/** @description
|
|
3492
|
+
/** @description Quote retrieved successfully */
|
|
1515
3493
|
200: {
|
|
1516
3494
|
headers: {
|
|
1517
3495
|
[name: string]: unknown;
|
|
1518
3496
|
};
|
|
1519
3497
|
content: {
|
|
1520
|
-
"application/json":
|
|
3498
|
+
"application/json": components["schemas"]["QuoteResponse"];
|
|
1521
3499
|
};
|
|
1522
3500
|
};
|
|
1523
|
-
/** @description Invalid request:
|
|
3501
|
+
/** @description Invalid request: quote ID format is invalid */
|
|
1524
3502
|
400: {
|
|
1525
3503
|
headers: {
|
|
1526
3504
|
[name: string]: unknown;
|
|
@@ -1529,7 +3507,7 @@ interface operations {
|
|
|
1529
3507
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1530
3508
|
};
|
|
1531
3509
|
};
|
|
1532
|
-
/** @description Unauthorized: missing or invalid
|
|
3510
|
+
/** @description Unauthorized: missing or invalid Bearer token (authentication failed) */
|
|
1533
3511
|
401: {
|
|
1534
3512
|
headers: {
|
|
1535
3513
|
[name: string]: unknown;
|
|
@@ -1538,7 +3516,7 @@ interface operations {
|
|
|
1538
3516
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1539
3517
|
};
|
|
1540
3518
|
};
|
|
1541
|
-
/** @description Forbidden:
|
|
3519
|
+
/** @description Forbidden: missing, invalid, or expired API key (authorization failed) */
|
|
1542
3520
|
403: {
|
|
1543
3521
|
headers: {
|
|
1544
3522
|
[name: string]: unknown;
|
|
@@ -1547,7 +3525,7 @@ interface operations {
|
|
|
1547
3525
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1548
3526
|
};
|
|
1549
3527
|
};
|
|
1550
|
-
/** @description
|
|
3528
|
+
/** @description Quote not found */
|
|
1551
3529
|
404: {
|
|
1552
3530
|
headers: {
|
|
1553
3531
|
[name: string]: unknown;
|
|
@@ -1556,69 +3534,72 @@ interface operations {
|
|
|
1556
3534
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1557
3535
|
};
|
|
1558
3536
|
};
|
|
1559
|
-
/** @description Internal server error */
|
|
1560
|
-
500: {
|
|
1561
|
-
headers: {
|
|
1562
|
-
[name: string]: unknown;
|
|
1563
|
-
};
|
|
1564
|
-
content: {
|
|
1565
|
-
"application/json": components["schemas"]["ProblemDetail"];
|
|
1566
|
-
};
|
|
1567
|
-
};
|
|
1568
3537
|
};
|
|
1569
3538
|
};
|
|
1570
|
-
|
|
3539
|
+
getShipments: {
|
|
1571
3540
|
parameters: {
|
|
1572
|
-
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
|
+
};
|
|
1573
3549
|
header?: never;
|
|
1574
3550
|
path?: never;
|
|
1575
3551
|
cookie?: never;
|
|
1576
3552
|
};
|
|
1577
|
-
requestBody
|
|
1578
|
-
content: {
|
|
1579
|
-
"application/json": components["schemas"]["TokenRequest"];
|
|
1580
|
-
};
|
|
1581
|
-
};
|
|
3553
|
+
requestBody?: never;
|
|
1582
3554
|
responses: {
|
|
1583
|
-
/** @description
|
|
3555
|
+
/** @description Shipments retrieved successfully */
|
|
1584
3556
|
200: {
|
|
1585
3557
|
headers: {
|
|
1586
3558
|
[name: string]: unknown;
|
|
1587
3559
|
};
|
|
1588
3560
|
content: {
|
|
1589
|
-
"application/json": components["schemas"]["
|
|
3561
|
+
"application/json": components["schemas"]["CarrierShipment"][];
|
|
1590
3562
|
};
|
|
1591
3563
|
};
|
|
1592
|
-
/** @description
|
|
1593
|
-
|
|
3564
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
3565
|
+
401: {
|
|
1594
3566
|
headers: {
|
|
1595
3567
|
[name: string]: unknown;
|
|
1596
3568
|
};
|
|
1597
3569
|
content: {
|
|
1598
|
-
"application/json": components["schemas"]["
|
|
3570
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
1599
3571
|
};
|
|
1600
3572
|
};
|
|
1601
|
-
/** @description
|
|
1602
|
-
|
|
3573
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
3574
|
+
403: {
|
|
1603
3575
|
headers: {
|
|
1604
3576
|
[name: string]: unknown;
|
|
1605
3577
|
};
|
|
1606
3578
|
content: {
|
|
1607
|
-
"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"];
|
|
1608
3589
|
};
|
|
1609
3590
|
};
|
|
1610
3591
|
};
|
|
1611
3592
|
};
|
|
1612
|
-
|
|
3593
|
+
getShipment_1: {
|
|
1613
3594
|
parameters: {
|
|
1614
3595
|
query?: never;
|
|
1615
3596
|
header?: never;
|
|
1616
3597
|
path: {
|
|
1617
3598
|
/**
|
|
1618
|
-
* @description
|
|
1619
|
-
* @example
|
|
3599
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
3600
|
+
* @example Y73Q0
|
|
1620
3601
|
*/
|
|
1621
|
-
|
|
3602
|
+
identifier: string;
|
|
1622
3603
|
};
|
|
1623
3604
|
cookie?: never;
|
|
1624
3605
|
};
|
|
@@ -1630,11 +3611,11 @@ interface operations {
|
|
|
1630
3611
|
[name: string]: unknown;
|
|
1631
3612
|
};
|
|
1632
3613
|
content: {
|
|
1633
|
-
"application/json": components["schemas"]["
|
|
3614
|
+
"application/json": components["schemas"]["CarrierShipment"];
|
|
1634
3615
|
};
|
|
1635
3616
|
};
|
|
1636
|
-
/** @description
|
|
1637
|
-
|
|
3617
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
3618
|
+
401: {
|
|
1638
3619
|
headers: {
|
|
1639
3620
|
[name: string]: unknown;
|
|
1640
3621
|
};
|
|
@@ -1642,8 +3623,8 @@ interface operations {
|
|
|
1642
3623
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1643
3624
|
};
|
|
1644
3625
|
};
|
|
1645
|
-
/** @description
|
|
1646
|
-
|
|
3626
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
3627
|
+
403: {
|
|
1647
3628
|
headers: {
|
|
1648
3629
|
[name: string]: unknown;
|
|
1649
3630
|
};
|
|
@@ -1651,8 +3632,8 @@ interface operations {
|
|
|
1651
3632
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1652
3633
|
};
|
|
1653
3634
|
};
|
|
1654
|
-
/** @description
|
|
1655
|
-
|
|
3635
|
+
/** @description Shipment not found */
|
|
3636
|
+
404: {
|
|
1656
3637
|
headers: {
|
|
1657
3638
|
[name: string]: unknown;
|
|
1658
3639
|
};
|
|
@@ -1660,8 +3641,8 @@ interface operations {
|
|
|
1660
3641
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1661
3642
|
};
|
|
1662
3643
|
};
|
|
1663
|
-
/** @description
|
|
1664
|
-
|
|
3644
|
+
/** @description Internal server error */
|
|
3645
|
+
500: {
|
|
1665
3646
|
headers: {
|
|
1666
3647
|
[name: string]: unknown;
|
|
1667
3648
|
};
|
|
@@ -1671,32 +3652,32 @@ interface operations {
|
|
|
1671
3652
|
};
|
|
1672
3653
|
};
|
|
1673
3654
|
};
|
|
1674
|
-
|
|
3655
|
+
getShipmentTracking: {
|
|
1675
3656
|
parameters: {
|
|
1676
3657
|
query?: never;
|
|
1677
3658
|
header?: never;
|
|
1678
3659
|
path: {
|
|
1679
3660
|
/**
|
|
1680
|
-
* @description
|
|
1681
|
-
* @example
|
|
3661
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
3662
|
+
* @example Y73Q0
|
|
1682
3663
|
*/
|
|
1683
|
-
|
|
3664
|
+
identifier: string;
|
|
1684
3665
|
};
|
|
1685
3666
|
cookie?: never;
|
|
1686
3667
|
};
|
|
1687
3668
|
requestBody?: never;
|
|
1688
3669
|
responses: {
|
|
1689
|
-
/** @description Tracking
|
|
3670
|
+
/** @description Tracking data retrieved successfully */
|
|
1690
3671
|
200: {
|
|
1691
3672
|
headers: {
|
|
1692
3673
|
[name: string]: unknown;
|
|
1693
3674
|
};
|
|
1694
3675
|
content: {
|
|
1695
|
-
"application/json": components["schemas"]["
|
|
3676
|
+
"application/json": components["schemas"]["TrackingResponse"];
|
|
1696
3677
|
};
|
|
1697
3678
|
};
|
|
1698
|
-
/** @description
|
|
1699
|
-
|
|
3679
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
3680
|
+
401: {
|
|
1700
3681
|
headers: {
|
|
1701
3682
|
[name: string]: unknown;
|
|
1702
3683
|
};
|
|
@@ -1704,8 +3685,8 @@ interface operations {
|
|
|
1704
3685
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1705
3686
|
};
|
|
1706
3687
|
};
|
|
1707
|
-
/** @description
|
|
1708
|
-
|
|
3688
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
3689
|
+
403: {
|
|
1709
3690
|
headers: {
|
|
1710
3691
|
[name: string]: unknown;
|
|
1711
3692
|
};
|
|
@@ -1713,8 +3694,8 @@ interface operations {
|
|
|
1713
3694
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1714
3695
|
};
|
|
1715
3696
|
};
|
|
1716
|
-
/** @description
|
|
1717
|
-
|
|
3697
|
+
/** @description Shipment not found */
|
|
3698
|
+
404: {
|
|
1718
3699
|
headers: {
|
|
1719
3700
|
[name: string]: unknown;
|
|
1720
3701
|
};
|
|
@@ -1722,8 +3703,8 @@ interface operations {
|
|
|
1722
3703
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1723
3704
|
};
|
|
1724
3705
|
};
|
|
1725
|
-
/** @description
|
|
1726
|
-
|
|
3706
|
+
/** @description Internal server error */
|
|
3707
|
+
500: {
|
|
1727
3708
|
headers: {
|
|
1728
3709
|
[name: string]: unknown;
|
|
1729
3710
|
};
|
|
@@ -1733,31 +3714,33 @@ interface operations {
|
|
|
1733
3714
|
};
|
|
1734
3715
|
};
|
|
1735
3716
|
};
|
|
1736
|
-
|
|
3717
|
+
getShipmentDocument: {
|
|
1737
3718
|
parameters: {
|
|
1738
3719
|
query?: never;
|
|
1739
3720
|
header?: never;
|
|
1740
3721
|
path: {
|
|
1741
3722
|
/**
|
|
1742
|
-
* @description
|
|
1743
|
-
* @example
|
|
3723
|
+
* @description Shipment identifier (offerId, orderNumber, or carrierReference)
|
|
3724
|
+
* @example Y73Q0
|
|
1744
3725
|
*/
|
|
1745
|
-
|
|
3726
|
+
identifier: string;
|
|
3727
|
+
/** @description Document type */
|
|
3728
|
+
documentType: "BILL_OF_LADING" | "SHIPPING_LABEL";
|
|
1746
3729
|
};
|
|
1747
3730
|
cookie?: never;
|
|
1748
3731
|
};
|
|
1749
3732
|
requestBody?: never;
|
|
1750
3733
|
responses: {
|
|
1751
|
-
/** @description
|
|
3734
|
+
/** @description Document URL retrieved successfully */
|
|
1752
3735
|
200: {
|
|
1753
3736
|
headers: {
|
|
1754
3737
|
[name: string]: unknown;
|
|
1755
3738
|
};
|
|
1756
3739
|
content: {
|
|
1757
|
-
"application/json": components["schemas"]["
|
|
3740
|
+
"application/json": components["schemas"]["CarrierDocumentResponse"];
|
|
1758
3741
|
};
|
|
1759
3742
|
};
|
|
1760
|
-
/** @description Invalid
|
|
3743
|
+
/** @description Invalid document type */
|
|
1761
3744
|
400: {
|
|
1762
3745
|
headers: {
|
|
1763
3746
|
[name: string]: unknown;
|
|
@@ -1766,7 +3749,7 @@ interface operations {
|
|
|
1766
3749
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1767
3750
|
};
|
|
1768
3751
|
};
|
|
1769
|
-
/** @description Unauthorized: missing or invalid
|
|
3752
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
1770
3753
|
401: {
|
|
1771
3754
|
headers: {
|
|
1772
3755
|
[name: string]: unknown;
|
|
@@ -1775,7 +3758,7 @@ interface operations {
|
|
|
1775
3758
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1776
3759
|
};
|
|
1777
3760
|
};
|
|
1778
|
-
/** @description Forbidden: missing/invalid API key
|
|
3761
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
1779
3762
|
403: {
|
|
1780
3763
|
headers: {
|
|
1781
3764
|
[name: string]: unknown;
|
|
@@ -1784,7 +3767,7 @@ interface operations {
|
|
|
1784
3767
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1785
3768
|
};
|
|
1786
3769
|
};
|
|
1787
|
-
/** @description Shipment not found */
|
|
3770
|
+
/** @description Shipment or document not found */
|
|
1788
3771
|
404: {
|
|
1789
3772
|
headers: {
|
|
1790
3773
|
[name: string]: unknown;
|
|
@@ -1793,44 +3776,36 @@ interface operations {
|
|
|
1793
3776
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1794
3777
|
};
|
|
1795
3778
|
};
|
|
3779
|
+
/** @description Internal server error */
|
|
3780
|
+
500: {
|
|
3781
|
+
headers: {
|
|
3782
|
+
[name: string]: unknown;
|
|
3783
|
+
};
|
|
3784
|
+
content: {
|
|
3785
|
+
"application/json": components["schemas"]["ProblemDetail"];
|
|
3786
|
+
};
|
|
3787
|
+
};
|
|
1796
3788
|
};
|
|
1797
3789
|
};
|
|
1798
|
-
|
|
3790
|
+
getOffers: {
|
|
1799
3791
|
parameters: {
|
|
1800
3792
|
query?: never;
|
|
1801
3793
|
header?: never;
|
|
1802
|
-
path
|
|
1803
|
-
/**
|
|
1804
|
-
* @description Order number (5-character alphanumeric code, commonly called PRO number)
|
|
1805
|
-
* @example ZKYQ5
|
|
1806
|
-
*/
|
|
1807
|
-
orderNumber: string;
|
|
1808
|
-
/** @description Type of document to retrieve */
|
|
1809
|
-
documentType: "BILL_OF_LADING" | "INVOICE" | "SHIPPING_LABEL" | "POD";
|
|
1810
|
-
};
|
|
3794
|
+
path?: never;
|
|
1811
3795
|
cookie?: never;
|
|
1812
3796
|
};
|
|
1813
3797
|
requestBody?: never;
|
|
1814
3798
|
responses: {
|
|
1815
|
-
/** @description
|
|
3799
|
+
/** @description Offers retrieved successfully */
|
|
1816
3800
|
200: {
|
|
1817
3801
|
headers: {
|
|
1818
3802
|
[name: string]: unknown;
|
|
1819
3803
|
};
|
|
1820
3804
|
content: {
|
|
1821
|
-
"application/json": components["schemas"]["
|
|
1822
|
-
};
|
|
1823
|
-
};
|
|
1824
|
-
/** @description Invalid request: orderNumber and documentType are required */
|
|
1825
|
-
400: {
|
|
1826
|
-
headers: {
|
|
1827
|
-
[name: string]: unknown;
|
|
1828
|
-
};
|
|
1829
|
-
content: {
|
|
1830
|
-
"application/json": components["schemas"]["ProblemDetail"];
|
|
3805
|
+
"application/json": components["schemas"]["Offer"][];
|
|
1831
3806
|
};
|
|
1832
3807
|
};
|
|
1833
|
-
/** @description Unauthorized: missing or invalid
|
|
3808
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
1834
3809
|
401: {
|
|
1835
3810
|
headers: {
|
|
1836
3811
|
[name: string]: unknown;
|
|
@@ -1839,7 +3814,7 @@ interface operations {
|
|
|
1839
3814
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1840
3815
|
};
|
|
1841
3816
|
};
|
|
1842
|
-
/** @description Forbidden:
|
|
3817
|
+
/** @description Forbidden: API access is not enabled for this carrier */
|
|
1843
3818
|
403: {
|
|
1844
3819
|
headers: {
|
|
1845
3820
|
[name: string]: unknown;
|
|
@@ -1848,7 +3823,7 @@ interface operations {
|
|
|
1848
3823
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1849
3824
|
};
|
|
1850
3825
|
};
|
|
1851
|
-
/** @description
|
|
3826
|
+
/** @description Carrier not found */
|
|
1852
3827
|
404: {
|
|
1853
3828
|
headers: {
|
|
1854
3829
|
[name: string]: unknown;
|
|
@@ -1868,29 +3843,32 @@ interface operations {
|
|
|
1868
3843
|
};
|
|
1869
3844
|
};
|
|
1870
3845
|
};
|
|
1871
|
-
|
|
3846
|
+
getOffer: {
|
|
1872
3847
|
parameters: {
|
|
1873
3848
|
query?: never;
|
|
1874
3849
|
header?: never;
|
|
1875
3850
|
path: {
|
|
1876
|
-
/**
|
|
1877
|
-
|
|
3851
|
+
/**
|
|
3852
|
+
* @description Offer identifier (offerId, orderNumber, or carrierReference)
|
|
3853
|
+
* @example Y73Q0
|
|
3854
|
+
*/
|
|
3855
|
+
identifier: string;
|
|
1878
3856
|
};
|
|
1879
3857
|
cookie?: never;
|
|
1880
3858
|
};
|
|
1881
3859
|
requestBody?: never;
|
|
1882
3860
|
responses: {
|
|
1883
|
-
/** @description
|
|
3861
|
+
/** @description Offer retrieved successfully */
|
|
1884
3862
|
200: {
|
|
1885
3863
|
headers: {
|
|
1886
3864
|
[name: string]: unknown;
|
|
1887
3865
|
};
|
|
1888
3866
|
content: {
|
|
1889
|
-
"application/json": components["schemas"]["
|
|
3867
|
+
"application/json": components["schemas"]["Offer"];
|
|
1890
3868
|
};
|
|
1891
3869
|
};
|
|
1892
|
-
/** @description
|
|
1893
|
-
|
|
3870
|
+
/** @description Unauthorized: missing or invalid bearer token */
|
|
3871
|
+
401: {
|
|
1894
3872
|
headers: {
|
|
1895
3873
|
[name: string]: unknown;
|
|
1896
3874
|
};
|
|
@@ -1898,8 +3876,8 @@ interface operations {
|
|
|
1898
3876
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1899
3877
|
};
|
|
1900
3878
|
};
|
|
1901
|
-
/** @description
|
|
1902
|
-
|
|
3879
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
3880
|
+
403: {
|
|
1903
3881
|
headers: {
|
|
1904
3882
|
[name: string]: unknown;
|
|
1905
3883
|
};
|
|
@@ -1907,8 +3885,8 @@ interface operations {
|
|
|
1907
3885
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1908
3886
|
};
|
|
1909
3887
|
};
|
|
1910
|
-
/** @description
|
|
1911
|
-
|
|
3888
|
+
/** @description Offer not found */
|
|
3889
|
+
404: {
|
|
1912
3890
|
headers: {
|
|
1913
3891
|
[name: string]: unknown;
|
|
1914
3892
|
};
|
|
@@ -1916,8 +3894,8 @@ interface operations {
|
|
|
1916
3894
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1917
3895
|
};
|
|
1918
3896
|
};
|
|
1919
|
-
/** @description
|
|
1920
|
-
|
|
3897
|
+
/** @description Internal server error */
|
|
3898
|
+
500: {
|
|
1921
3899
|
headers: {
|
|
1922
3900
|
[name: string]: unknown;
|
|
1923
3901
|
};
|
|
@@ -1927,25 +3905,25 @@ interface operations {
|
|
|
1927
3905
|
};
|
|
1928
3906
|
};
|
|
1929
3907
|
};
|
|
1930
|
-
|
|
3908
|
+
getBundles: {
|
|
1931
3909
|
parameters: {
|
|
1932
|
-
query?:
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
/** @description The unique identifier of the carrier */
|
|
1936
|
-
carrierId: string;
|
|
3910
|
+
query?: {
|
|
3911
|
+
/** @description Filter bundles by status (OPEN, ACCEPTED, DECLINED, EXPIRED) */
|
|
3912
|
+
status?: string;
|
|
1937
3913
|
};
|
|
3914
|
+
header?: never;
|
|
3915
|
+
path?: never;
|
|
1938
3916
|
cookie?: never;
|
|
1939
3917
|
};
|
|
1940
3918
|
requestBody?: never;
|
|
1941
3919
|
responses: {
|
|
1942
|
-
/** @description
|
|
3920
|
+
/** @description Bundles retrieved successfully */
|
|
1943
3921
|
200: {
|
|
1944
3922
|
headers: {
|
|
1945
3923
|
[name: string]: unknown;
|
|
1946
3924
|
};
|
|
1947
3925
|
content: {
|
|
1948
|
-
"application/json": components["schemas"]["
|
|
3926
|
+
"application/json": components["schemas"]["Bundle"][];
|
|
1949
3927
|
};
|
|
1950
3928
|
};
|
|
1951
3929
|
/** @description Unauthorized: missing or invalid bearer token */
|
|
@@ -1957,7 +3935,7 @@ interface operations {
|
|
|
1957
3935
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1958
3936
|
};
|
|
1959
3937
|
};
|
|
1960
|
-
/** @description Forbidden: API access
|
|
3938
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
1961
3939
|
403: {
|
|
1962
3940
|
headers: {
|
|
1963
3941
|
[name: string]: unknown;
|
|
@@ -1966,15 +3944,6 @@ interface operations {
|
|
|
1966
3944
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
1967
3945
|
};
|
|
1968
3946
|
};
|
|
1969
|
-
/** @description Carrier not found */
|
|
1970
|
-
404: {
|
|
1971
|
-
headers: {
|
|
1972
|
-
[name: string]: unknown;
|
|
1973
|
-
};
|
|
1974
|
-
content: {
|
|
1975
|
-
"application/json": components["schemas"]["ProblemDetail"];
|
|
1976
|
-
};
|
|
1977
|
-
};
|
|
1978
3947
|
/** @description Internal server error */
|
|
1979
3948
|
500: {
|
|
1980
3949
|
headers: {
|
|
@@ -1986,32 +3955,28 @@ interface operations {
|
|
|
1986
3955
|
};
|
|
1987
3956
|
};
|
|
1988
3957
|
};
|
|
1989
|
-
|
|
3958
|
+
getBundle: {
|
|
1990
3959
|
parameters: {
|
|
1991
|
-
query?:
|
|
1992
|
-
/** @description If true, only return currently active jobs */
|
|
1993
|
-
activeOnly?: boolean;
|
|
1994
|
-
/** @description Filter jobs created after this time (ISO 8601 format) */
|
|
1995
|
-
startTime?: string;
|
|
1996
|
-
/** @description Filter jobs created before this time (ISO 8601 format) */
|
|
1997
|
-
endTime?: string;
|
|
1998
|
-
};
|
|
3960
|
+
query?: never;
|
|
1999
3961
|
header?: never;
|
|
2000
3962
|
path: {
|
|
2001
|
-
/**
|
|
2002
|
-
|
|
3963
|
+
/**
|
|
3964
|
+
* @description Bundle ID
|
|
3965
|
+
* @example 507f1f77bcf86cd799439012
|
|
3966
|
+
*/
|
|
3967
|
+
bundleId: string;
|
|
2003
3968
|
};
|
|
2004
3969
|
cookie?: never;
|
|
2005
3970
|
};
|
|
2006
3971
|
requestBody?: never;
|
|
2007
3972
|
responses: {
|
|
2008
|
-
/** @description
|
|
3973
|
+
/** @description Bundle retrieved successfully */
|
|
2009
3974
|
200: {
|
|
2010
3975
|
headers: {
|
|
2011
3976
|
[name: string]: unknown;
|
|
2012
3977
|
};
|
|
2013
3978
|
content: {
|
|
2014
|
-
"application/json": components["schemas"]["
|
|
3979
|
+
"application/json": components["schemas"]["Bundle"];
|
|
2015
3980
|
};
|
|
2016
3981
|
};
|
|
2017
3982
|
/** @description Unauthorized: missing or invalid bearer token */
|
|
@@ -2023,7 +3988,7 @@ interface operations {
|
|
|
2023
3988
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
2024
3989
|
};
|
|
2025
3990
|
};
|
|
2026
|
-
/** @description Forbidden: API access
|
|
3991
|
+
/** @description Forbidden: missing/invalid API key or API access not enabled */
|
|
2027
3992
|
403: {
|
|
2028
3993
|
headers: {
|
|
2029
3994
|
[name: string]: unknown;
|
|
@@ -2032,7 +3997,7 @@ interface operations {
|
|
|
2032
3997
|
"application/json": components["schemas"]["ProblemDetail"];
|
|
2033
3998
|
};
|
|
2034
3999
|
};
|
|
2035
|
-
/** @description
|
|
4000
|
+
/** @description Bundle not found */
|
|
2036
4001
|
404: {
|
|
2037
4002
|
headers: {
|
|
2038
4003
|
[name: string]: unknown;
|
|
@@ -2054,111 +4019,81 @@ interface operations {
|
|
|
2054
4019
|
};
|
|
2055
4020
|
}
|
|
2056
4021
|
|
|
4022
|
+
/** A single field-level validation failure. */
|
|
4023
|
+
type Violation = components['schemas']['Violation'];
|
|
2057
4024
|
interface OwayConfig {
|
|
2058
|
-
/**
|
|
2059
|
-
* M2M Client ID (REQUIRED for all integrations)
|
|
2060
|
-
* Provided by Oway Sales Engineering team
|
|
2061
|
-
*/
|
|
4025
|
+
/** M2M Client ID (required). */
|
|
2062
4026
|
clientId: string;
|
|
2063
|
-
/**
|
|
2064
|
-
* M2M Client Secret (REQUIRED for all integrations)
|
|
2065
|
-
* Provided by Oway Sales Engineering team
|
|
2066
|
-
*/
|
|
4027
|
+
/** M2M Client Secret (required). */
|
|
2067
4028
|
clientSecret: string;
|
|
2068
4029
|
/**
|
|
2069
|
-
* Default company API key
|
|
2070
|
-
*
|
|
2071
|
-
* Single-company: Set this to your company's API key
|
|
2072
|
-
* Multi-company: Omit this and provide per-request
|
|
2073
|
-
*
|
|
2074
|
-
* 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.
|
|
2075
4032
|
*/
|
|
2076
4033
|
apiKey?: string;
|
|
2077
|
-
/**
|
|
2078
|
-
* Base URL for the Oway API
|
|
2079
|
-
* @default "https://api.sandbox.oway.io"
|
|
2080
|
-
*/
|
|
4034
|
+
/** Base URL. Defaults to https://api.sandbox.oway.io. */
|
|
2081
4035
|
baseUrl?: string;
|
|
2082
|
-
/**
|
|
2083
|
-
* Token endpoint for authentication
|
|
2084
|
-
* @default "https://api.sandbox.oway.io/v1/auth/token"
|
|
2085
|
-
*/
|
|
4036
|
+
/** Token endpoint. Defaults to `${baseUrl}/v1/auth/token`. */
|
|
2086
4037
|
tokenUrl?: string;
|
|
2087
|
-
/**
|
|
2088
|
-
* Maximum number of retry attempts for failed requests
|
|
2089
|
-
* @default 3
|
|
2090
|
-
*/
|
|
4038
|
+
/** Maximum retry attempts on transient errors. Defaults to 3. Pass 0 to disable. */
|
|
2091
4039
|
maxRetries?: number;
|
|
2092
|
-
/**
|
|
2093
|
-
* Timeout in milliseconds for API requests
|
|
2094
|
-
* @default 30000
|
|
2095
|
-
*/
|
|
4040
|
+
/** Request timeout in milliseconds. Defaults to 30000. */
|
|
2096
4041
|
timeout?: number;
|
|
2097
|
-
/**
|
|
2098
|
-
* Enable debug logging (logs sanitized request/response metadata)
|
|
2099
|
-
* @default false
|
|
2100
|
-
*/
|
|
4042
|
+
/** Enable structured debug logging. */
|
|
2101
4043
|
debug?: boolean;
|
|
2102
|
-
/**
|
|
2103
|
-
* Custom logger implementation
|
|
2104
|
-
*/
|
|
4044
|
+
/** Custom logger. When omitted the SDK is silent. */
|
|
2105
4045
|
logger?: {
|
|
2106
|
-
debug: (msg: string, meta?: Record<string,
|
|
2107
|
-
info: (msg: string, meta?: Record<string,
|
|
2108
|
-
warn: (msg: string, meta?: Record<string,
|
|
2109
|
-
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;
|
|
2110
4050
|
};
|
|
2111
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
|
+
*/
|
|
2112
4057
|
declare class OwayError extends Error {
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
requestId?: string
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
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). */
|
|
2120
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;
|
|
2121
4085
|
}
|
|
2122
|
-
/**
|
|
2123
|
-
* HTTP client for making authenticated requests to the Oway API
|
|
2124
|
-
*/
|
|
2125
4086
|
declare class HttpClient {
|
|
2126
|
-
private config;
|
|
4087
|
+
private readonly config;
|
|
2127
4088
|
private accessToken;
|
|
2128
4089
|
private tokenExpiry;
|
|
2129
4090
|
private tokenRefreshPromise;
|
|
2130
4091
|
constructor(config: OwayConfig);
|
|
2131
|
-
/**
|
|
2132
|
-
* Internal logging with sanitization
|
|
2133
|
-
*/
|
|
2134
4092
|
private log;
|
|
2135
|
-
|
|
2136
|
-
* Sanitize objects for logging - remove sensitive fields
|
|
2137
|
-
*/
|
|
2138
|
-
private sanitizeForLogging;
|
|
2139
|
-
/**
|
|
2140
|
-
* Get or refresh the access token using the API key
|
|
2141
|
-
* Handles concurrent requests by queuing them behind a single refresh
|
|
2142
|
-
*/
|
|
4093
|
+
private sanitize;
|
|
2143
4094
|
private getAccessToken;
|
|
2144
|
-
/**
|
|
2145
|
-
* Perform the actual token refresh using M2M credentials
|
|
2146
|
-
*/
|
|
2147
4095
|
private refreshToken;
|
|
2148
|
-
|
|
2149
|
-
* Generate a unique request ID
|
|
2150
|
-
*/
|
|
2151
|
-
private generateRequestId;
|
|
2152
|
-
/**
|
|
2153
|
-
* Make an authenticated request to the Oway API
|
|
2154
|
-
*/
|
|
2155
|
-
request<T>(method: string, path: string, options?: {
|
|
2156
|
-
query?: Record<string, string | number | boolean>;
|
|
2157
|
-
body?: unknown;
|
|
2158
|
-
headers?: Record<string, string>;
|
|
2159
|
-
requestId?: string;
|
|
2160
|
-
companyApiKey?: string;
|
|
2161
|
-
}): Promise<T>;
|
|
4096
|
+
request<T>(method: string, path: string, options?: RequestOptions): Promise<T>;
|
|
2162
4097
|
get<T>(path: string, query?: Record<string, string | number | boolean>, companyApiKey?: string): Promise<T>;
|
|
2163
4098
|
post<T>(path: string, body?: unknown, companyApiKey?: string): Promise<T>;
|
|
2164
4099
|
put<T>(path: string, body?: unknown, companyApiKey?: string): Promise<T>;
|