@veho/turvo-integration-sdk 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +473 -0
- package/index.ts +1 -0
- package/lib/cjs/api/turvoInternalApi.d.ts +23 -0
- package/lib/cjs/api/turvoInternalApi.js +36 -0
- package/lib/cjs/api/turvoPublicApi.d.ts +99 -0
- package/lib/cjs/api/turvoPublicApi.js +103 -0
- package/lib/cjs/client/turvoClient.d.ts +49 -0
- package/lib/cjs/client/turvoClient.js +180 -0
- package/lib/cjs/constants.d.ts +29 -0
- package/lib/cjs/constants.js +33 -0
- package/lib/cjs/index.d.ts +6 -0
- package/lib/cjs/index.js +37 -0
- package/lib/cjs/shipmentTracking/index.d.ts +22 -0
- package/lib/cjs/shipmentTracking/index.js +39 -0
- package/lib/cjs/shipmentTracking/trackingService.d.ts +25 -0
- package/lib/cjs/shipmentTracking/trackingService.js +85 -0
- package/lib/cjs/types/common.d.ts +64 -0
- package/lib/cjs/types/common.js +27 -0
- package/lib/cjs/types/config.d.ts +13 -0
- package/lib/cjs/types/config.js +3 -0
- package/lib/cjs/types/errors.d.ts +35 -0
- package/lib/cjs/types/errors.js +63 -0
- package/lib/cjs/types/index.d.ts +5 -0
- package/lib/cjs/types/index.js +27 -0
- package/lib/cjs/types/shipment.d.ts +379 -0
- package/lib/cjs/types/shipment.js +46 -0
- package/lib/cjs/types/tracking.d.ts +65 -0
- package/lib/cjs/types/tracking.js +3 -0
- package/lib/esm/api/turvoInternalApi.d.ts +23 -0
- package/lib/esm/api/turvoInternalApi.js +32 -0
- package/lib/esm/api/turvoPublicApi.d.ts +99 -0
- package/lib/esm/api/turvoPublicApi.js +99 -0
- package/lib/esm/client/turvoClient.d.ts +49 -0
- package/lib/esm/client/turvoClient.js +172 -0
- package/lib/esm/constants.d.ts +29 -0
- package/lib/esm/constants.js +30 -0
- package/lib/esm/index.d.ts +6 -0
- package/lib/esm/index.js +11 -0
- package/lib/esm/shipmentTracking/index.d.ts +22 -0
- package/lib/esm/shipmentTracking/index.js +36 -0
- package/lib/esm/shipmentTracking/trackingService.d.ts +25 -0
- package/lib/esm/shipmentTracking/trackingService.js +81 -0
- package/lib/esm/types/common.d.ts +64 -0
- package/lib/esm/types/common.js +23 -0
- package/lib/esm/types/config.d.ts +13 -0
- package/lib/esm/types/config.js +2 -0
- package/lib/esm/types/errors.d.ts +35 -0
- package/lib/esm/types/errors.js +55 -0
- package/lib/esm/types/index.d.ts +5 -0
- package/lib/esm/types/index.js +11 -0
- package/lib/esm/types/shipment.d.ts +379 -0
- package/lib/esm/types/shipment.js +43 -0
- package/lib/esm/types/tracking.d.ts +65 -0
- package/lib/esm/types/tracking.js +2 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -0
- package/lib/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +126 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
import { TurvoDateWithTimezone, TurvoDateWithTimezoneLowercase, TurvoLookup } from './common';
|
|
2
|
+
export type TurvoGlobalRoute = {
|
|
3
|
+
id: number;
|
|
4
|
+
name: string;
|
|
5
|
+
globalShipLocationSourceId?: string;
|
|
6
|
+
schedulingType: TurvoLookup;
|
|
7
|
+
stopType: TurvoLookup;
|
|
8
|
+
location: {
|
|
9
|
+
id: number;
|
|
10
|
+
};
|
|
11
|
+
deleted?: boolean;
|
|
12
|
+
sequence: number;
|
|
13
|
+
segmentSequence: number;
|
|
14
|
+
state: 'OPEN' | 'CLOSED' | 'COMPLETED';
|
|
15
|
+
customerOrder?: TurvoCustomerOrder[];
|
|
16
|
+
carrierOrder?: {
|
|
17
|
+
carrierId: number;
|
|
18
|
+
id: number;
|
|
19
|
+
carrierOrderSourceId: number;
|
|
20
|
+
}[];
|
|
21
|
+
appointment: TurvoAppointment;
|
|
22
|
+
}[];
|
|
23
|
+
export type TurvoLane = {
|
|
24
|
+
start: string;
|
|
25
|
+
end: string;
|
|
26
|
+
};
|
|
27
|
+
export type TurvoShipmentService = TurvoLookup & ({
|
|
28
|
+
key: '21204';
|
|
29
|
+
value: 'Team';
|
|
30
|
+
} | {
|
|
31
|
+
key: '21214';
|
|
32
|
+
value: 'Drop trailer';
|
|
33
|
+
});
|
|
34
|
+
export type TurvoShipmentStatus = {
|
|
35
|
+
notes?: string;
|
|
36
|
+
attributes?: {
|
|
37
|
+
etaValUtc?: string;
|
|
38
|
+
next_eta_cal_val_timezone?: string;
|
|
39
|
+
};
|
|
40
|
+
description?: string;
|
|
41
|
+
statusDate?: TurvoDateWithTimezoneLowercase;
|
|
42
|
+
updatedBy?: {
|
|
43
|
+
id?: number;
|
|
44
|
+
name?: string;
|
|
45
|
+
};
|
|
46
|
+
location?: TurvoShipmentStatusLocation;
|
|
47
|
+
runningLate?: TurvoShipmentStatusRunningLate;
|
|
48
|
+
code: {
|
|
49
|
+
key: '2100';
|
|
50
|
+
value: 'Quote active';
|
|
51
|
+
} | {
|
|
52
|
+
key: '2101';
|
|
53
|
+
value: 'Tendered';
|
|
54
|
+
} | {
|
|
55
|
+
key: '2102';
|
|
56
|
+
value: 'Covered';
|
|
57
|
+
} | {
|
|
58
|
+
key: '2103';
|
|
59
|
+
value: 'Dispatched';
|
|
60
|
+
} | {
|
|
61
|
+
key: '2104';
|
|
62
|
+
value: 'At pickup';
|
|
63
|
+
} | {
|
|
64
|
+
key: '2105';
|
|
65
|
+
value: 'En route';
|
|
66
|
+
} | {
|
|
67
|
+
key: '2106';
|
|
68
|
+
value: 'At delivery';
|
|
69
|
+
} | {
|
|
70
|
+
key: '2116';
|
|
71
|
+
value: 'Route Complete';
|
|
72
|
+
} | {
|
|
73
|
+
key: '2107';
|
|
74
|
+
value: 'Delivered';
|
|
75
|
+
} | {
|
|
76
|
+
key: '2108';
|
|
77
|
+
value: 'Ready for billing';
|
|
78
|
+
} | {
|
|
79
|
+
key: '2109';
|
|
80
|
+
value: 'Processing';
|
|
81
|
+
} | {
|
|
82
|
+
key: '2110';
|
|
83
|
+
value: 'Carrier paid';
|
|
84
|
+
} | {
|
|
85
|
+
key: '2111';
|
|
86
|
+
value: 'Customer paid';
|
|
87
|
+
} | {
|
|
88
|
+
key: '2112';
|
|
89
|
+
value: 'Completed';
|
|
90
|
+
} | {
|
|
91
|
+
key: '2113';
|
|
92
|
+
value: 'Canceled';
|
|
93
|
+
} | {
|
|
94
|
+
key: '2117';
|
|
95
|
+
value: 'Tender - offered';
|
|
96
|
+
} | {
|
|
97
|
+
key: '2118';
|
|
98
|
+
value: 'Tender - accepted';
|
|
99
|
+
} | {
|
|
100
|
+
key: '2119';
|
|
101
|
+
value: 'Tender - rejected';
|
|
102
|
+
} | {
|
|
103
|
+
key: '2114';
|
|
104
|
+
value: 'Quote inactive';
|
|
105
|
+
} | {
|
|
106
|
+
key: '2115';
|
|
107
|
+
value: 'Picked up';
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
export declare const TURVO_SHIPMENT_STATUS_DELIVERED: TurvoShipmentStatus;
|
|
111
|
+
export declare const TURVO_SHIPMENT_STATUS_PICKED_UP: TurvoShipmentStatus;
|
|
112
|
+
export declare const TURVO_SHIPMENT_STATUS_AT_PICKUP: TurvoShipmentStatus;
|
|
113
|
+
export declare const TURVO_SHIPMENT_STATUS_EN_ROUTE: TurvoShipmentStatus;
|
|
114
|
+
export declare const TURVO_SHIPMENT_STATUS_AT_DELIVERY: TurvoShipmentStatus;
|
|
115
|
+
export declare const TURVO_SYSTEM_BOT_USER = "Turvo System Bot";
|
|
116
|
+
export type TurvoWebhookStatus = {
|
|
117
|
+
code: {
|
|
118
|
+
key: '2100';
|
|
119
|
+
value: 'Quote active';
|
|
120
|
+
} | {
|
|
121
|
+
key: '2101';
|
|
122
|
+
value: 'Tendered';
|
|
123
|
+
} | {
|
|
124
|
+
key: '2102';
|
|
125
|
+
value: 'Covered';
|
|
126
|
+
} | {
|
|
127
|
+
key: '2103';
|
|
128
|
+
value: 'Dispatched';
|
|
129
|
+
} | {
|
|
130
|
+
key: '2104';
|
|
131
|
+
value: 'At pickup';
|
|
132
|
+
} | {
|
|
133
|
+
key: '2105';
|
|
134
|
+
value: 'En route';
|
|
135
|
+
} | {
|
|
136
|
+
key: '2106';
|
|
137
|
+
value: 'At delivery';
|
|
138
|
+
} | {
|
|
139
|
+
key: '2116';
|
|
140
|
+
value: 'Route Complete';
|
|
141
|
+
} | {
|
|
142
|
+
key: '2107';
|
|
143
|
+
value: 'Delivered';
|
|
144
|
+
} | {
|
|
145
|
+
key: '2108';
|
|
146
|
+
value: 'Ready for billing';
|
|
147
|
+
} | {
|
|
148
|
+
key: '2109';
|
|
149
|
+
value: 'Processing';
|
|
150
|
+
} | {
|
|
151
|
+
key: '2110';
|
|
152
|
+
value: 'Carrier paid';
|
|
153
|
+
} | {
|
|
154
|
+
key: '2111';
|
|
155
|
+
value: 'Customer paid';
|
|
156
|
+
} | {
|
|
157
|
+
key: '2112';
|
|
158
|
+
value: 'Completed';
|
|
159
|
+
} | {
|
|
160
|
+
key: '2113';
|
|
161
|
+
value: 'Canceled';
|
|
162
|
+
} | {
|
|
163
|
+
key: '2117';
|
|
164
|
+
value: 'Tender - offered';
|
|
165
|
+
} | {
|
|
166
|
+
key: '2118';
|
|
167
|
+
value: 'Tender - accepted';
|
|
168
|
+
} | {
|
|
169
|
+
key: '2119';
|
|
170
|
+
value: 'Tender - rejected';
|
|
171
|
+
} | {
|
|
172
|
+
key: '2114';
|
|
173
|
+
value: 'Quote inactive';
|
|
174
|
+
} | {
|
|
175
|
+
key: '2115';
|
|
176
|
+
value: 'Picked up';
|
|
177
|
+
};
|
|
178
|
+
description?: string;
|
|
179
|
+
updatedBy?: {
|
|
180
|
+
id?: number;
|
|
181
|
+
name?: string;
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
export declare enum TurvoFlexAttributeLaneTypeValue {
|
|
185
|
+
FirstMile = "First Mile",
|
|
186
|
+
MiddleMile = "Middle Mile"
|
|
187
|
+
}
|
|
188
|
+
export declare enum TurvoFlexAttributeManagementTypeValue {
|
|
189
|
+
ClientManaged = "Client Managed",
|
|
190
|
+
VehoManaged = "Veho Managed",
|
|
191
|
+
Insourced = "Insourced"
|
|
192
|
+
}
|
|
193
|
+
export type TurvoFlexAttribute = {
|
|
194
|
+
deleted: false;
|
|
195
|
+
shareable: false;
|
|
196
|
+
} & ({
|
|
197
|
+
name: 'Lane Type';
|
|
198
|
+
type: {
|
|
199
|
+
value: 'DROPDOWN';
|
|
200
|
+
key: 'VehoTech_Lane_Type';
|
|
201
|
+
};
|
|
202
|
+
value: TurvoFlexAttributeLaneTypeValue;
|
|
203
|
+
} | {
|
|
204
|
+
name: 'Management Type';
|
|
205
|
+
type: {
|
|
206
|
+
value: 'DROPDOWN';
|
|
207
|
+
key: 'VehoTech_Management_Type';
|
|
208
|
+
};
|
|
209
|
+
value: TurvoFlexAttributeManagementTypeValue;
|
|
210
|
+
});
|
|
211
|
+
export type TurvoEquipment = {
|
|
212
|
+
type: TurvoLookup;
|
|
213
|
+
size: TurvoLookup | null;
|
|
214
|
+
}[];
|
|
215
|
+
export type TurvoCustomer = {
|
|
216
|
+
id: number;
|
|
217
|
+
name: string;
|
|
218
|
+
};
|
|
219
|
+
export type TurvoCustomerOrder = {
|
|
220
|
+
id?: number;
|
|
221
|
+
customerId?: number;
|
|
222
|
+
customer: TurvoCustomer;
|
|
223
|
+
customerOrderSourceId: number;
|
|
224
|
+
externalIds: {
|
|
225
|
+
type: {
|
|
226
|
+
key: '1400';
|
|
227
|
+
value: 'Purchase order #';
|
|
228
|
+
} | {
|
|
229
|
+
key: '1401';
|
|
230
|
+
value: 'Reference #';
|
|
231
|
+
};
|
|
232
|
+
value: string;
|
|
233
|
+
copyToCarrierOrder: true;
|
|
234
|
+
}[];
|
|
235
|
+
items?: {
|
|
236
|
+
name: string;
|
|
237
|
+
pickupLocation: {
|
|
238
|
+
id: number;
|
|
239
|
+
globalShipLocationSourceId?: number;
|
|
240
|
+
globalShipLocationId?: number;
|
|
241
|
+
name: string;
|
|
242
|
+
}[];
|
|
243
|
+
deliveryLocation: {
|
|
244
|
+
id: number;
|
|
245
|
+
globalShipLocationSourceId?: number;
|
|
246
|
+
globalShipLocationId?: number;
|
|
247
|
+
name: string;
|
|
248
|
+
}[];
|
|
249
|
+
qty?: number;
|
|
250
|
+
unit?: TurvoLookup;
|
|
251
|
+
}[];
|
|
252
|
+
};
|
|
253
|
+
export type TurvoCarrierOrder = {
|
|
254
|
+
_operation: 0;
|
|
255
|
+
carrier: {
|
|
256
|
+
id: number;
|
|
257
|
+
name: string;
|
|
258
|
+
};
|
|
259
|
+
carrierOrderSourceId: number;
|
|
260
|
+
costs?: {
|
|
261
|
+
totalAmount: number;
|
|
262
|
+
lineItem: {
|
|
263
|
+
id?: number;
|
|
264
|
+
code: {
|
|
265
|
+
key: '1600';
|
|
266
|
+
value: 'Freight - flat';
|
|
267
|
+
};
|
|
268
|
+
qty: 1;
|
|
269
|
+
price: number;
|
|
270
|
+
amount: number;
|
|
271
|
+
payable: true;
|
|
272
|
+
}[];
|
|
273
|
+
};
|
|
274
|
+
};
|
|
275
|
+
export type TurvoAppointment = {
|
|
276
|
+
date: string;
|
|
277
|
+
flex?: number;
|
|
278
|
+
timeZone: string;
|
|
279
|
+
hasTime: true;
|
|
280
|
+
};
|
|
281
|
+
export type TurvoShipment = {
|
|
282
|
+
id: number;
|
|
283
|
+
customId: string;
|
|
284
|
+
ltlShipment: boolean;
|
|
285
|
+
startDate: TurvoDateWithTimezone;
|
|
286
|
+
endDate: TurvoDateWithTimezone & {
|
|
287
|
+
flex: number;
|
|
288
|
+
};
|
|
289
|
+
status: TurvoShipmentStatus;
|
|
290
|
+
services?: TurvoShipmentService[];
|
|
291
|
+
equipment: TurvoEquipment;
|
|
292
|
+
flexAttributes?: TurvoFlexAttribute[];
|
|
293
|
+
lane: TurvoLane;
|
|
294
|
+
globalRoute: TurvoGlobalRoute;
|
|
295
|
+
customerOrder: TurvoCustomerOrder[];
|
|
296
|
+
carrierOrder: TurvoCarrierOrder[];
|
|
297
|
+
};
|
|
298
|
+
export type TurvoShipmentUpdate = {
|
|
299
|
+
id: number;
|
|
300
|
+
customId: string;
|
|
301
|
+
globalRoute: TurvoGlobalRoute;
|
|
302
|
+
customerOrder: TurvoCustomerOrder[];
|
|
303
|
+
status: TurvoWebhookStatus;
|
|
304
|
+
};
|
|
305
|
+
export interface TurvoShipmentStatusApiResponse {
|
|
306
|
+
customId: string;
|
|
307
|
+
status: {
|
|
308
|
+
location: {
|
|
309
|
+
lon: number;
|
|
310
|
+
lat: number;
|
|
311
|
+
nextArrivalTime: number;
|
|
312
|
+
nextMiles: number;
|
|
313
|
+
city: string;
|
|
314
|
+
};
|
|
315
|
+
statusDate: {
|
|
316
|
+
date: string;
|
|
317
|
+
timezone: string;
|
|
318
|
+
};
|
|
319
|
+
runningLate?: {
|
|
320
|
+
nextLocationName: string;
|
|
321
|
+
};
|
|
322
|
+
nextLocationId: number;
|
|
323
|
+
};
|
|
324
|
+
globalRoute: TurvoGlobalRoute;
|
|
325
|
+
lane: {
|
|
326
|
+
start: string;
|
|
327
|
+
end: string;
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
export type TurvoShipmentStatusLocation = {
|
|
331
|
+
city: string;
|
|
332
|
+
state: string;
|
|
333
|
+
countryCode: string;
|
|
334
|
+
countryName: string;
|
|
335
|
+
lon: number;
|
|
336
|
+
lat: number;
|
|
337
|
+
nextEta?: string;
|
|
338
|
+
nextEtaCalVal?: string;
|
|
339
|
+
nextArrivalTime?: number;
|
|
340
|
+
nextMiles?: number;
|
|
341
|
+
currentDate?: string;
|
|
342
|
+
};
|
|
343
|
+
export type TurvoShipmentStatusRunningLate = {
|
|
344
|
+
lateType: string;
|
|
345
|
+
lateDuration: number;
|
|
346
|
+
nextLocationType: string;
|
|
347
|
+
lateDurationString: string;
|
|
348
|
+
nextLocationEta: string;
|
|
349
|
+
nextLocationTimeZone: string;
|
|
350
|
+
nextLocationName: string;
|
|
351
|
+
nextLocationEtaDate: string;
|
|
352
|
+
isApproachingLate: boolean;
|
|
353
|
+
statusKey: string;
|
|
354
|
+
nextLocationAppointmentDate: string;
|
|
355
|
+
nextLocationAppointment: string;
|
|
356
|
+
lastUpdatedOn: string;
|
|
357
|
+
nextLocationId: number;
|
|
358
|
+
};
|
|
359
|
+
export type TurvoShipmentStatusUpdate = {
|
|
360
|
+
id: number;
|
|
361
|
+
status: TurvoWebhookStatus;
|
|
362
|
+
};
|
|
363
|
+
export type TurvoCreateShipmentApiResult = {
|
|
364
|
+
id: number;
|
|
365
|
+
};
|
|
366
|
+
export type TurvoCancelShipmentApiResult = {
|
|
367
|
+
respMsg: string;
|
|
368
|
+
};
|
|
369
|
+
export type TurvoUpdateShipmentStatusApiResult = {
|
|
370
|
+
id: number;
|
|
371
|
+
};
|
|
372
|
+
export type TurvoAssociateTagsApiResult = {
|
|
373
|
+
tags: {
|
|
374
|
+
id: string;
|
|
375
|
+
tagName: string;
|
|
376
|
+
contextType: string;
|
|
377
|
+
contextId: number;
|
|
378
|
+
}[];
|
|
379
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TurvoFlexAttributeManagementTypeValue = exports.TurvoFlexAttributeLaneTypeValue = exports.TURVO_SYSTEM_BOT_USER = exports.TURVO_SHIPMENT_STATUS_AT_DELIVERY = exports.TURVO_SHIPMENT_STATUS_EN_ROUTE = exports.TURVO_SHIPMENT_STATUS_AT_PICKUP = exports.TURVO_SHIPMENT_STATUS_PICKED_UP = exports.TURVO_SHIPMENT_STATUS_DELIVERED = void 0;
|
|
4
|
+
exports.TURVO_SHIPMENT_STATUS_DELIVERED = {
|
|
5
|
+
code: {
|
|
6
|
+
key: '2107',
|
|
7
|
+
value: 'Delivered',
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
exports.TURVO_SHIPMENT_STATUS_PICKED_UP = {
|
|
11
|
+
code: {
|
|
12
|
+
key: '2115',
|
|
13
|
+
value: 'Picked up',
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
exports.TURVO_SHIPMENT_STATUS_AT_PICKUP = {
|
|
17
|
+
code: {
|
|
18
|
+
key: '2104',
|
|
19
|
+
value: 'At pickup',
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
exports.TURVO_SHIPMENT_STATUS_EN_ROUTE = {
|
|
23
|
+
code: {
|
|
24
|
+
key: '2105',
|
|
25
|
+
value: 'En route',
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
exports.TURVO_SHIPMENT_STATUS_AT_DELIVERY = {
|
|
29
|
+
code: {
|
|
30
|
+
key: '2106',
|
|
31
|
+
value: 'At delivery',
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
exports.TURVO_SYSTEM_BOT_USER = 'Turvo System Bot';
|
|
35
|
+
var TurvoFlexAttributeLaneTypeValue;
|
|
36
|
+
(function (TurvoFlexAttributeLaneTypeValue) {
|
|
37
|
+
TurvoFlexAttributeLaneTypeValue["FirstMile"] = "First Mile";
|
|
38
|
+
TurvoFlexAttributeLaneTypeValue["MiddleMile"] = "Middle Mile";
|
|
39
|
+
})(TurvoFlexAttributeLaneTypeValue || (exports.TurvoFlexAttributeLaneTypeValue = TurvoFlexAttributeLaneTypeValue = {}));
|
|
40
|
+
var TurvoFlexAttributeManagementTypeValue;
|
|
41
|
+
(function (TurvoFlexAttributeManagementTypeValue) {
|
|
42
|
+
TurvoFlexAttributeManagementTypeValue["ClientManaged"] = "Client Managed";
|
|
43
|
+
TurvoFlexAttributeManagementTypeValue["VehoManaged"] = "Veho Managed";
|
|
44
|
+
TurvoFlexAttributeManagementTypeValue["Insourced"] = "Insourced";
|
|
45
|
+
})(TurvoFlexAttributeManagementTypeValue || (exports.TurvoFlexAttributeManagementTypeValue = TurvoFlexAttributeManagementTypeValue = {}));
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvc2hpcG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMEVhLFFBQUEsK0JBQStCLEdBQXdCO0lBQ2xFLElBQUksRUFBRTtRQUNKLEdBQUcsRUFBRSxNQUFNO1FBQ1gsS0FBSyxFQUFFLFdBQVc7S0FDbkI7Q0FDRixDQUFBO0FBRVksUUFBQSwrQkFBK0IsR0FBd0I7SUFDbEUsSUFBSSxFQUFFO1FBQ0osR0FBRyxFQUFFLE1BQU07UUFDWCxLQUFLLEVBQUUsV0FBVztLQUNuQjtDQUNGLENBQUE7QUFFWSxRQUFBLCtCQUErQixHQUF3QjtJQUNsRSxJQUFJLEVBQUU7UUFDSixHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxXQUFXO0tBQ25CO0NBQ0YsQ0FBQTtBQUVZLFFBQUEsOEJBQThCLEdBQXdCO0lBQ2pFLElBQUksRUFBRTtRQUNKLEdBQUcsRUFBRSxNQUFNO1FBQ1gsS0FBSyxFQUFFLFVBQVU7S0FDbEI7Q0FDRixDQUFBO0FBRVksUUFBQSxpQ0FBaUMsR0FBd0I7SUFDcEUsSUFBSSxFQUFFO1FBQ0osR0FBRyxFQUFFLE1BQU07UUFDWCxLQUFLLEVBQUUsYUFBYTtLQUNyQjtDQUNGLENBQUE7QUFFWSxRQUFBLHFCQUFxQixHQUFHLGtCQUFrQixDQUFBO0FBK0J2RCxJQUFZLCtCQUdYO0FBSEQsV0FBWSwrQkFBK0I7SUFDekMsMkRBQXdCLENBQUE7SUFDeEIsNkRBQTBCLENBQUE7QUFDNUIsQ0FBQyxFQUhXLCtCQUErQiwrQ0FBL0IsK0JBQStCLFFBRzFDO0FBRUQsSUFBWSxxQ0FJWDtBQUpELFdBQVkscUNBQXFDO0lBQy9DLHlFQUFnQyxDQUFBO0lBQ2hDLHFFQUE0QixDQUFBO0lBQzVCLGdFQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFKVyxxQ0FBcUMscURBQXJDLHFDQUFxQyxRQUloRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR1cnZvRGF0ZVdpdGhUaW1lem9uZSwgVHVydm9EYXRlV2l0aFRpbWV6b25lTG93ZXJjYXNlLCBUdXJ2b0xvb2t1cCB9IGZyb20gJy4vY29tbW9uJ1xuXG5leHBvcnQgdHlwZSBUdXJ2b0dsb2JhbFJvdXRlID0ge1xuICBpZDogbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xuICBnbG9iYWxTaGlwTG9jYXRpb25Tb3VyY2VJZD86IHN0cmluZ1xuICBzY2hlZHVsaW5nVHlwZTogVHVydm9Mb29rdXBcbiAgc3RvcFR5cGU6IFR1cnZvTG9va3VwXG4gIGxvY2F0aW9uOiB7XG4gICAgaWQ6IG51bWJlclxuICB9XG4gIGRlbGV0ZWQ/OiBib29sZWFuXG4gIHNlcXVlbmNlOiBudW1iZXJcbiAgc2VnbWVudFNlcXVlbmNlOiBudW1iZXJcbiAgc3RhdGU6ICdPUEVOJyB8ICdDTE9TRUQnIHwgJ0NPTVBMRVRFRCdcbiAgY3VzdG9tZXJPcmRlcj86IFR1cnZvQ3VzdG9tZXJPcmRlcltdXG4gIGNhcnJpZXJPcmRlcj86IHsgY2FycmllcklkOiBudW1iZXI7IGlkOiBudW1iZXI7IGNhcnJpZXJPcmRlclNvdXJjZUlkOiBudW1iZXIgfVtdXG4gIGFwcG9pbnRtZW50OiBUdXJ2b0FwcG9pbnRtZW50XG59W11cblxuZXhwb3J0IHR5cGUgVHVydm9MYW5lID0ge1xuICBzdGFydDogc3RyaW5nXG4gIGVuZDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFR1cnZvU2hpcG1lbnRTZXJ2aWNlID0gVHVydm9Mb29rdXAgJlxuICAoXG4gICAgfCB7XG4gICAgICAgIGtleTogJzIxMjA0J1xuICAgICAgICB2YWx1ZTogJ1RlYW0nXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIGtleTogJzIxMjE0J1xuICAgICAgICB2YWx1ZTogJ0Ryb3AgdHJhaWxlcidcbiAgICAgIH1cbiAgKVxuXG5leHBvcnQgdHlwZSBUdXJ2b1NoaXBtZW50U3RhdHVzID0ge1xuICBub3Rlcz86IHN0cmluZ1xuICBhdHRyaWJ1dGVzPzoge1xuICAgIGV0YVZhbFV0Yz86IHN0cmluZ1xuICAgIG5leHRfZXRhX2NhbF92YWxfdGltZXpvbmU/OiBzdHJpbmdcbiAgfVxuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBzdGF0dXNEYXRlPzogVHVydm9EYXRlV2l0aFRpbWV6b25lTG93ZXJjYXNlXG4gIHVwZGF0ZWRCeT86IHtcbiAgICBpZD86IG51bWJlclxuICAgIG5hbWU/OiBzdHJpbmdcbiAgfVxuICBsb2NhdGlvbj86IFR1cnZvU2hpcG1lbnRTdGF0dXNMb2NhdGlvblxuICBydW5uaW5nTGF0ZT86IFR1cnZvU2hpcG1lbnRTdGF0dXNSdW5uaW5nTGF0ZVxuICBjb2RlOlxuICAgIHwgeyBrZXk6ICcyMTAwJzsgdmFsdWU6ICdRdW90ZSBhY3RpdmUnIH1cbiAgICB8IHsga2V5OiAnMjEwMSc7IHZhbHVlOiAnVGVuZGVyZWQnIH1cbiAgICB8IHsga2V5OiAnMjEwMic7IHZhbHVlOiAnQ292ZXJlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTAzJzsgdmFsdWU6ICdEaXNwYXRjaGVkJyB9XG4gICAgfCB7IGtleTogJzIxMDQnOyB2YWx1ZTogJ0F0IHBpY2t1cCcgfVxuICAgIHwgeyBrZXk6ICcyMTA1JzsgdmFsdWU6ICdFbiByb3V0ZScgfVxuICAgIHwgeyBrZXk6ICcyMTA2JzsgdmFsdWU6ICdBdCBkZWxpdmVyeScgfVxuICAgIHwgeyBrZXk6ICcyMTE2JzsgdmFsdWU6ICdSb3V0ZSBDb21wbGV0ZScgfVxuICAgIHwgeyBrZXk6ICcyMTA3JzsgdmFsdWU6ICdEZWxpdmVyZWQnIH1cbiAgICB8IHsga2V5OiAnMjEwOCc7IHZhbHVlOiAnUmVhZHkgZm9yIGJpbGxpbmcnIH1cbiAgICB8IHsga2V5OiAnMjEwOSc7IHZhbHVlOiAnUHJvY2Vzc2luZycgfVxuICAgIHwgeyBrZXk6ICcyMTEwJzsgdmFsdWU6ICdDYXJyaWVyIHBhaWQnIH1cbiAgICB8IHsga2V5OiAnMjExMSc7IHZhbHVlOiAnQ3VzdG9tZXIgcGFpZCcgfVxuICAgIHwgeyBrZXk6ICcyMTEyJzsgdmFsdWU6ICdDb21wbGV0ZWQnIH1cbiAgICB8IHsga2V5OiAnMjExMyc7IHZhbHVlOiAnQ2FuY2VsZWQnIH1cbiAgICB8IHsga2V5OiAnMjExNyc7IHZhbHVlOiAnVGVuZGVyIC0gb2ZmZXJlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE4JzsgdmFsdWU6ICdUZW5kZXIgLSBhY2NlcHRlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE5JzsgdmFsdWU6ICdUZW5kZXIgLSByZWplY3RlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE0JzsgdmFsdWU6ICdRdW90ZSBpbmFjdGl2ZScgfVxuICAgIHwgeyBrZXk6ICcyMTE1JzsgdmFsdWU6ICdQaWNrZWQgdXAnIH1cbn1cblxuZXhwb3J0IGNvbnN0IFRVUlZPX1NISVBNRU5UX1NUQVRVU19ERUxJVkVSRUQ6IFR1cnZvU2hpcG1lbnRTdGF0dXMgPSB7XG4gIGNvZGU6IHtcbiAgICBrZXk6ICcyMTA3JyxcbiAgICB2YWx1ZTogJ0RlbGl2ZXJlZCcsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBUVVJWT19TSElQTUVOVF9TVEFUVVNfUElDS0VEX1VQOiBUdXJ2b1NoaXBtZW50U3RhdHVzID0ge1xuICBjb2RlOiB7XG4gICAga2V5OiAnMjExNScsXG4gICAgdmFsdWU6ICdQaWNrZWQgdXAnLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgVFVSVk9fU0hJUE1FTlRfU1RBVFVTX0FUX1BJQ0tVUDogVHVydm9TaGlwbWVudFN0YXR1cyA9IHtcbiAgY29kZToge1xuICAgIGtleTogJzIxMDQnLFxuICAgIHZhbHVlOiAnQXQgcGlja3VwJyxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IFRVUlZPX1NISVBNRU5UX1NUQVRVU19FTl9ST1VURTogVHVydm9TaGlwbWVudFN0YXR1cyA9IHtcbiAgY29kZToge1xuICAgIGtleTogJzIxMDUnLFxuICAgIHZhbHVlOiAnRW4gcm91dGUnLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgVFVSVk9fU0hJUE1FTlRfU1RBVFVTX0FUX0RFTElWRVJZOiBUdXJ2b1NoaXBtZW50U3RhdHVzID0ge1xuICBjb2RlOiB7XG4gICAga2V5OiAnMjEwNicsXG4gICAgdmFsdWU6ICdBdCBkZWxpdmVyeScsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBUVVJWT19TWVNURU1fQk9UX1VTRVIgPSAnVHVydm8gU3lzdGVtIEJvdCdcblxuZXhwb3J0IHR5cGUgVHVydm9XZWJob29rU3RhdHVzID0ge1xuICBjb2RlOlxuICAgIHwgeyBrZXk6ICcyMTAwJzsgdmFsdWU6ICdRdW90ZSBhY3RpdmUnIH1cbiAgICB8IHsga2V5OiAnMjEwMSc7IHZhbHVlOiAnVGVuZGVyZWQnIH1cbiAgICB8IHsga2V5OiAnMjEwMic7IHZhbHVlOiAnQ292ZXJlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTAzJzsgdmFsdWU6ICdEaXNwYXRjaGVkJyB9XG4gICAgfCB7IGtleTogJzIxMDQnOyB2YWx1ZTogJ0F0IHBpY2t1cCcgfVxuICAgIHwgeyBrZXk6ICcyMTA1JzsgdmFsdWU6ICdFbiByb3V0ZScgfVxuICAgIHwgeyBrZXk6ICcyMTA2JzsgdmFsdWU6ICdBdCBkZWxpdmVyeScgfVxuICAgIHwgeyBrZXk6ICcyMTE2JzsgdmFsdWU6ICdSb3V0ZSBDb21wbGV0ZScgfVxuICAgIHwgeyBrZXk6ICcyMTA3JzsgdmFsdWU6ICdEZWxpdmVyZWQnIH1cbiAgICB8IHsga2V5OiAnMjEwOCc7IHZhbHVlOiAnUmVhZHkgZm9yIGJpbGxpbmcnIH1cbiAgICB8IHsga2V5OiAnMjEwOSc7IHZhbHVlOiAnUHJvY2Vzc2luZycgfVxuICAgIHwgeyBrZXk6ICcyMTEwJzsgdmFsdWU6ICdDYXJyaWVyIHBhaWQnIH1cbiAgICB8IHsga2V5OiAnMjExMSc7IHZhbHVlOiAnQ3VzdG9tZXIgcGFpZCcgfVxuICAgIHwgeyBrZXk6ICcyMTEyJzsgdmFsdWU6ICdDb21wbGV0ZWQnIH1cbiAgICB8IHsga2V5OiAnMjExMyc7IHZhbHVlOiAnQ2FuY2VsZWQnIH1cbiAgICB8IHsga2V5OiAnMjExNyc7IHZhbHVlOiAnVGVuZGVyIC0gb2ZmZXJlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE4JzsgdmFsdWU6ICdUZW5kZXIgLSBhY2NlcHRlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE5JzsgdmFsdWU6ICdUZW5kZXIgLSByZWplY3RlZCcgfVxuICAgIHwgeyBrZXk6ICcyMTE0JzsgdmFsdWU6ICdRdW90ZSBpbmFjdGl2ZScgfVxuICAgIHwgeyBrZXk6ICcyMTE1JzsgdmFsdWU6ICdQaWNrZWQgdXAnIH1cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdXBkYXRlZEJ5Pzoge1xuICAgIGlkPzogbnVtYmVyXG4gICAgbmFtZT86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIFR1cnZvRmxleEF0dHJpYnV0ZUxhbmVUeXBlVmFsdWUge1xuICBGaXJzdE1pbGUgPSAnRmlyc3QgTWlsZScsXG4gIE1pZGRsZU1pbGUgPSAnTWlkZGxlIE1pbGUnLFxufVxuXG5leHBvcnQgZW51bSBUdXJ2b0ZsZXhBdHRyaWJ1dGVNYW5hZ2VtZW50VHlwZVZhbHVlIHtcbiAgQ2xpZW50TWFuYWdlZCA9ICdDbGllbnQgTWFuYWdlZCcsXG4gIFZlaG9NYW5hZ2VkID0gJ1ZlaG8gTWFuYWdlZCcsXG4gIEluc291cmNlZCA9ICdJbnNvdXJjZWQnLFxufVxuXG5leHBvcnQgdHlwZSBUdXJ2b0ZsZXhBdHRyaWJ1dGUgPSB7XG4gIGRlbGV0ZWQ6IGZhbHNlXG4gIHNoYXJlYWJsZTogZmFsc2Vcbn0gJiAoXG4gIHwge1xuICAgICAgbmFtZTogJ0xhbmUgVHlwZSdcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdmFsdWU6ICdEUk9QRE9XTidcbiAgICAgICAga2V5OiAnVmVob1RlY2hfTGFuZV9UeXBlJ1xuICAgICAgfVxuICAgICAgdmFsdWU6IFR1cnZvRmxleEF0dHJpYnV0ZUxhbmVUeXBlVmFsdWVcbiAgICB9XG4gIHwge1xuICAgICAgbmFtZTogJ01hbmFnZW1lbnQgVHlwZSdcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdmFsdWU6ICdEUk9QRE9XTidcbiAgICAgICAga2V5OiAnVmVob1RlY2hfTWFuYWdlbWVudF9UeXBlJ1xuICAgICAgfVxuICAgICAgdmFsdWU6IFR1cnZvRmxleEF0dHJpYnV0ZU1hbmFnZW1lbnRUeXBlVmFsdWVcbiAgICB9XG4pXG5cbmV4cG9ydCB0eXBlIFR1cnZvRXF1aXBtZW50ID0ge1xuICB0eXBlOiBUdXJ2b0xvb2t1cFxuICBzaXplOiBUdXJ2b0xvb2t1cCB8IG51bGxcbn1bXVxuXG5leHBvcnQgdHlwZSBUdXJ2b0N1c3RvbWVyID0ge1xuICBpZDogbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBUdXJ2b0N1c3RvbWVyT3JkZXIgPSB7XG4gIGlkPzogbnVtYmVyXG4gIGN1c3RvbWVySWQ/OiBudW1iZXJcbiAgY3VzdG9tZXI6IFR1cnZvQ3VzdG9tZXJcbiAgY3VzdG9tZXJPcmRlclNvdXJjZUlkOiBudW1iZXJcbiAgZXh0ZXJuYWxJZHM6IHtcbiAgICB0eXBlOiB7IGtleTogJzE0MDAnOyB2YWx1ZTogJ1B1cmNoYXNlIG9yZGVyICMnIH0gfCB7IGtleTogJzE0MDEnOyB2YWx1ZTogJ1JlZmVyZW5jZSAjJyB9XG4gICAgdmFsdWU6IHN0cmluZ1xuICAgIGNvcHlUb0NhcnJpZXJPcmRlcjogdHJ1ZVxuICB9W11cbiAgaXRlbXM/OiB7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgcGlja3VwTG9jYXRpb246IHsgaWQ6IG51bWJlcjsgZ2xvYmFsU2hpcExvY2F0aW9uU291cmNlSWQ/OiBudW1iZXI7IGdsb2JhbFNoaXBMb2NhdGlvbklkPzogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfVtdXG4gICAgZGVsaXZlcnlMb2NhdGlvbjogeyBpZDogbnVtYmVyOyBnbG9iYWxTaGlwTG9jYXRpb25Tb3VyY2VJZD86IG51bWJlcjsgZ2xvYmFsU2hpcExvY2F0aW9uSWQ/OiBudW1iZXI7IG5hbWU6IHN0cmluZyB9W11cbiAgICBxdHk/OiBudW1iZXJcbiAgICB1bml0PzogVHVydm9Mb29rdXBcbiAgfVtdXG59XG5cbmV4cG9ydCB0eXBlIFR1cnZvQ2Fycmllck9yZGVyID0ge1xuICBfb3BlcmF0aW9uOiAwXG4gIGNhcnJpZXI6IHtcbiAgICBpZDogbnVtYmVyXG4gICAgbmFtZTogc3RyaW5nXG4gIH1cbiAgY2Fycmllck9yZGVyU291cmNlSWQ6IG51bWJlclxuICBjb3N0cz86IHtcbiAgICB0b3RhbEFtb3VudDogbnVtYmVyXG4gICAgbGluZUl0ZW06IHtcbiAgICAgIGlkPzogbnVtYmVyXG4gICAgICBjb2RlOiB7IGtleTogJzE2MDAnOyB2YWx1ZTogJ0ZyZWlnaHQgLSBmbGF0JyB9XG4gICAgICBxdHk6IDFcbiAgICAgIHByaWNlOiBudW1iZXJcbiAgICAgIGFtb3VudDogbnVtYmVyXG4gICAgICBwYXlhYmxlOiB0cnVlXG4gICAgfVtdXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVHVydm9BcHBvaW50bWVudCA9IHtcbiAgZGF0ZTogc3RyaW5nXG4gIGZsZXg/OiBudW1iZXIgLy8gQXBwYXJlbnRseSByZXF1aXJlZCBidXQgZG9lc24ndCBtYWtlIHNlbnNlIEkgdGhpbmssIGFuZCB0aGUgc2hpcG1lbnQgY3JlYXRlcyB3aXRob3V0IHRoaXNcbiAgdGltZVpvbmU6IHN0cmluZ1xuICBoYXNUaW1lOiB0cnVlXG59XG5cbmV4cG9ydCB0eXBlIFR1cnZvU2hpcG1lbnQgPSB7XG4gIGlkOiBudW1iZXJcbiAgY3VzdG9tSWQ6IHN0cmluZ1xuICBsdGxTaGlwbWVudDogYm9vbGVhblxuICBzdGFydERhdGU6IFR1cnZvRGF0ZVdpdGhUaW1lem9uZVxuICBlbmREYXRlOiBUdXJ2b0RhdGVXaXRoVGltZXpvbmUgJiB7IGZsZXg6IG51bWJlciB9XG4gIHN0YXR1czogVHVydm9TaGlwbWVudFN0YXR1c1xuICBzZXJ2aWNlcz86IFR1cnZvU2hpcG1lbnRTZXJ2aWNlW11cbiAgZXF1aXBtZW50OiBUdXJ2b0VxdWlwbWVudFxuICBmbGV4QXR0cmlidXRlcz86IFR1cnZvRmxleEF0dHJpYnV0ZVtdXG4gIGxhbmU6IFR1cnZvTGFuZVxuICBnbG9iYWxSb3V0ZTogVHVydm9HbG9iYWxSb3V0ZVxuICBjdXN0b21lck9yZGVyOiBUdXJ2b0N1c3RvbWVyT3JkZXJbXVxuICBjYXJyaWVyT3JkZXI6IFR1cnZvQ2Fycmllck9yZGVyW11cbn1cblxuZXhwb3J0IHR5cGUgVHVydm9TaGlwbWVudFVwZGF0ZSA9IHtcbiAgaWQ6IG51bWJlclxuICBjdXN0b21JZDogc3RyaW5nXG4gIGdsb2JhbFJvdXRlOiBUdXJ2b0dsb2JhbFJvdXRlXG4gIGN1c3RvbWVyT3JkZXI6IFR1cnZvQ3VzdG9tZXJPcmRlcltdXG4gIHN0YXR1czogVHVydm9XZWJob29rU3RhdHVzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVydm9TaGlwbWVudFN0YXR1c0FwaVJlc3BvbnNlIHtcbiAgY3VzdG9tSWQ6IHN0cmluZ1xuICBzdGF0dXM6IHtcbiAgICBsb2NhdGlvbjoge1xuICAgICAgbG9uOiBudW1iZXJcbiAgICAgIGxhdDogbnVtYmVyXG4gICAgICBuZXh0QXJyaXZhbFRpbWU6IG51bWJlclxuICAgICAgbmV4dE1pbGVzOiBudW1iZXJcbiAgICAgIGNpdHk6IHN0cmluZ1xuICAgIH1cbiAgICBzdGF0dXNEYXRlOiB7XG4gICAgICBkYXRlOiBzdHJpbmdcbiAgICAgIHRpbWV6b25lOiBzdHJpbmdcbiAgICB9XG4gICAgcnVubmluZ0xhdGU/OiB7XG4gICAgICBuZXh0TG9jYXRpb25OYW1lOiBzdHJpbmdcbiAgICB9XG4gICAgbmV4dExvY2F0aW9uSWQ6IG51bWJlclxuICB9XG4gIGdsb2JhbFJvdXRlOiBUdXJ2b0dsb2JhbFJvdXRlXG4gIGxhbmU6IHtcbiAgICBzdGFydDogc3RyaW5nXG4gICAgZW5kOiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUdXJ2b1NoaXBtZW50U3RhdHVzTG9jYXRpb24gPSB7XG4gIGNpdHk6IHN0cmluZ1xuICBzdGF0ZTogc3RyaW5nXG4gIGNvdW50cnlDb2RlOiBzdHJpbmdcbiAgY291bnRyeU5hbWU6IHN0cmluZ1xuICBsb246IG51bWJlclxuICBsYXQ6IG51bWJlclxuICBuZXh0RXRhPzogc3RyaW5nXG4gIG5leHRFdGFDYWxWYWw/OiBzdHJpbmdcbiAgbmV4dEFycml2YWxUaW1lPzogbnVtYmVyXG4gIG5leHRNaWxlcz86IG51bWJlclxuICBjdXJyZW50RGF0ZT86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBUdXJ2b1NoaXBtZW50U3RhdHVzUnVubmluZ0xhdGUgPSB7XG4gIGxhdGVUeXBlOiBzdHJpbmdcbiAgbGF0ZUR1cmF0aW9uOiBudW1iZXJcbiAgbmV4dExvY2F0aW9uVHlwZTogc3RyaW5nXG4gIGxhdGVEdXJhdGlvblN0cmluZzogc3RyaW5nXG4gIG5leHRMb2NhdGlvbkV0YTogc3RyaW5nXG4gIG5leHRMb2NhdGlvblRpbWVab25lOiBzdHJpbmdcbiAgbmV4dExvY2F0aW9uTmFtZTogc3RyaW5nXG4gIG5leHRMb2NhdGlvbkV0YURhdGU6IHN0cmluZ1xuICBpc0FwcHJvYWNoaW5nTGF0ZTogYm9vbGVhblxuICBzdGF0dXNLZXk6IHN0cmluZ1xuICBuZXh0TG9jYXRpb25BcHBvaW50bWVudERhdGU6IHN0cmluZ1xuICBuZXh0TG9jYXRpb25BcHBvaW50bWVudDogc3RyaW5nXG4gIGxhc3RVcGRhdGVkT246IHN0cmluZ1xuICBuZXh0TG9jYXRpb25JZDogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIFR1cnZvU2hpcG1lbnRTdGF0dXNVcGRhdGUgPSB7XG4gIGlkOiBudW1iZXJcbiAgc3RhdHVzOiBUdXJ2b1dlYmhvb2tTdGF0dXNcbn1cblxuLy8gUmVzdWx0IHR5cGVzIGZvciBzcGVjaWZpYyBvcGVyYXRpb25zXG5leHBvcnQgdHlwZSBUdXJ2b0NyZWF0ZVNoaXBtZW50QXBpUmVzdWx0ID0geyBpZDogbnVtYmVyIH1cbmV4cG9ydCB0eXBlIFR1cnZvQ2FuY2VsU2hpcG1lbnRBcGlSZXN1bHQgPSB7IHJlc3BNc2c6IHN0cmluZyB9XG5leHBvcnQgdHlwZSBUdXJ2b1VwZGF0ZVNoaXBtZW50U3RhdHVzQXBpUmVzdWx0ID0geyBpZDogbnVtYmVyIH1cbmV4cG9ydCB0eXBlIFR1cnZvQXNzb2NpYXRlVGFnc0FwaVJlc3VsdCA9IHtcbiAgdGFnczogeyBpZDogc3RyaW5nOyB0YWdOYW1lOiBzdHJpbmc7IGNvbnRleHRUeXBlOiBzdHJpbmc7IGNvbnRleHRJZDogbnVtYmVyIH1bXVxufVxuIl19
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { TurvoShipmentStatusLocation } from './shipment';
|
|
2
|
+
/**
|
|
3
|
+
* Options for fetching shipment tracking data
|
|
4
|
+
*/
|
|
5
|
+
export interface GetTrackingOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Include GPS ping history in response.
|
|
8
|
+
* Requires internal API call - may be slower.
|
|
9
|
+
* Default: true
|
|
10
|
+
*/
|
|
11
|
+
includeGps?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Override the default secret path (/turvo/api).
|
|
14
|
+
* Useful for testing or different environments.
|
|
15
|
+
*/
|
|
16
|
+
secretPath?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* GPS location update from shipment tracking
|
|
20
|
+
*/
|
|
21
|
+
export interface LocationUpdate {
|
|
22
|
+
latitude: number;
|
|
23
|
+
longitude: number;
|
|
24
|
+
timestamp: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Individual stop in a shipment route
|
|
28
|
+
*/
|
|
29
|
+
export interface Stop {
|
|
30
|
+
sequence: number;
|
|
31
|
+
stopType: string;
|
|
32
|
+
isCompleted: boolean;
|
|
33
|
+
facilityCode: string | null;
|
|
34
|
+
address: string | null;
|
|
35
|
+
city: string | null;
|
|
36
|
+
state: string | null;
|
|
37
|
+
appointmentTimeUtc: string | null;
|
|
38
|
+
actualArrivalUtc: string | null;
|
|
39
|
+
actualDepartureUtc: string | null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Complete shipment tracking information combining public and internal API data
|
|
43
|
+
*/
|
|
44
|
+
export interface ShipmentTracking {
|
|
45
|
+
shipmentId: string;
|
|
46
|
+
loadReferenceNumber: string;
|
|
47
|
+
status: string;
|
|
48
|
+
lateBy: string | null;
|
|
49
|
+
isLate: boolean;
|
|
50
|
+
currentLocation: TurvoShipmentStatusLocation | null;
|
|
51
|
+
hasGpsTracking: boolean;
|
|
52
|
+
completedStops: number;
|
|
53
|
+
totalStops: number;
|
|
54
|
+
stops: Stop[];
|
|
55
|
+
etaUtc: string | null;
|
|
56
|
+
etaTimezone: string | null;
|
|
57
|
+
milesRemaining: number | null;
|
|
58
|
+
totalMiles: number | null;
|
|
59
|
+
locationUpdates: LocationUpdate[] | null;
|
|
60
|
+
pingCount: number | null;
|
|
61
|
+
lastPingAt: string | null;
|
|
62
|
+
laneType: string | null;
|
|
63
|
+
managementType: string | null;
|
|
64
|
+
carrier: string | null;
|
|
65
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvdHJhY2tpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR1cnZvU2hpcG1lbnRTdGF0dXNMb2NhdGlvbiB9IGZyb20gJy4vc2hpcG1lbnQnXG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZmV0Y2hpbmcgc2hpcG1lbnQgdHJhY2tpbmcgZGF0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldFRyYWNraW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJbmNsdWRlIEdQUyBwaW5nIGhpc3RvcnkgaW4gcmVzcG9uc2UuXG4gICAqIFJlcXVpcmVzIGludGVybmFsIEFQSSBjYWxsIC0gbWF5IGJlIHNsb3dlci5cbiAgICogRGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZUdwcz86IGJvb2xlYW5cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgc2VjcmV0IHBhdGggKC90dXJ2by9hcGkpLlxuICAgKiBVc2VmdWwgZm9yIHRlc3Rpbmcgb3IgZGlmZmVyZW50IGVudmlyb25tZW50cy5cbiAgICovXG4gIHNlY3JldFBhdGg/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBHUFMgbG9jYXRpb24gdXBkYXRlIGZyb20gc2hpcG1lbnQgdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvblVwZGF0ZSB7XG4gIGxhdGl0dWRlOiBudW1iZXJcbiAgbG9uZ2l0dWRlOiBudW1iZXJcbiAgdGltZXN0YW1wOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBJbmRpdmlkdWFsIHN0b3AgaW4gYSBzaGlwbWVudCByb3V0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0b3Age1xuICBzZXF1ZW5jZTogbnVtYmVyXG4gIHN0b3BUeXBlOiBzdHJpbmcgLy8gXCJQaWNrdXBcIiwgXCJEZWxpdmVyeVwiXG4gIGlzQ29tcGxldGVkOiBib29sZWFuXG4gIGZhY2lsaXR5Q29kZTogc3RyaW5nIHwgbnVsbCAvLyBcIlBITCAwMVwiLCBcIkRGVyAwMVwiXG4gIGFkZHJlc3M6IHN0cmluZyB8IG51bGxcbiAgY2l0eTogc3RyaW5nIHwgbnVsbFxuICBzdGF0ZTogc3RyaW5nIHwgbnVsbFxuICBhcHBvaW50bWVudFRpbWVVdGM6IHN0cmluZyB8IG51bGxcbiAgYWN0dWFsQXJyaXZhbFV0Yzogc3RyaW5nIHwgbnVsbFxuICBhY3R1YWxEZXBhcnR1cmVVdGM6IHN0cmluZyB8IG51bGxcbn1cblxuLyoqXG4gKiBDb21wbGV0ZSBzaGlwbWVudCB0cmFja2luZyBpbmZvcm1hdGlvbiBjb21iaW5pbmcgcHVibGljIGFuZCBpbnRlcm5hbCBBUEkgZGF0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNoaXBtZW50VHJhY2tpbmcge1xuICAvLyBJZGVudGlmaWVyc1xuICBzaGlwbWVudElkOiBzdHJpbmdcbiAgbG9hZFJlZmVyZW5jZU51bWJlcjogc3RyaW5nXG5cbiAgLy8gU3RhdHVzXG4gIHN0YXR1czogc3RyaW5nIC8vIFwiRW4gcm91dGVcIiwgXCJBdCBwaWNrdXBcIiwgXCJDb21wbGV0ZVwiXG4gIGxhdGVCeTogc3RyaW5nIHwgbnVsbCAvLyBcIjIgaG91cnNcIiwgXCIxNSBtaW5zXCIgKG51bGwgaWYgb24gdGltZSlcbiAgaXNMYXRlOiBib29sZWFuXG5cbiAgLy8gQ3VycmVudCBsb2NhdGlvbiAoaWYgdHJhY2tpbmcgYXZhaWxhYmxlKVxuICBjdXJyZW50TG9jYXRpb246IFR1cnZvU2hpcG1lbnRTdGF0dXNMb2NhdGlvbiB8IG51bGxcbiAgaGFzR3BzVHJhY2tpbmc6IGJvb2xlYW5cblxuICAvLyBQcm9ncmVzc1xuICBjb21wbGV0ZWRTdG9wczogbnVtYmVyXG4gIHRvdGFsU3RvcHM6IG51bWJlclxuXG4gIC8vIFN0b3BzIChvcmRlcmVkKVxuICBzdG9wczogU3RvcFtdXG5cbiAgLy8gRVRBICYgRGlzdGFuY2VcbiAgZXRhVXRjOiBzdHJpbmcgfCBudWxsXG4gIGV0YVRpbWV6b25lOiBzdHJpbmcgfCBudWxsXG4gIG1pbGVzUmVtYWluaW5nOiBudW1iZXIgfCBudWxsXG4gIHRvdGFsTWlsZXM6IG51bWJlciB8IG51bGxcblxuICAvLyBHUFMgUGluZ3MgKG9ubHkgcG9wdWxhdGVkIGlmIGluY2x1ZGVHcHM6IHRydWUgYW5kIGhhc0dwc1RyYWNraW5nKVxuICBsb2NhdGlvblVwZGF0ZXM6IExvY2F0aW9uVXBkYXRlW10gfCBudWxsXG4gIHBpbmdDb3VudDogbnVtYmVyIHwgbnVsbFxuICBsYXN0UGluZ0F0OiBzdHJpbmcgfCBudWxsXG5cbiAgLy8gU2hpcG1lbnQgQXR0cmlidXRlc1xuICBsYW5lVHlwZTogc3RyaW5nIHwgbnVsbCAvLyBcIk1pZGRsZSBNaWxlXCIsIFwiRmlyc3QgTWlsZVwiLCBcIlJldHVyblwiXG4gIG1hbmFnZW1lbnRUeXBlOiBzdHJpbmcgfCBudWxsIC8vIFwiVmVobyBNYW5hZ2VkXCIsIFwiQ2xpZW50IE1hbmFnZWRcIlxuICBjYXJyaWVyOiBzdHJpbmcgfCBudWxsXG59XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TurvoClient } from '../client/turvoClient';
|
|
2
|
+
import { LocationUpdate } from '../types/tracking';
|
|
3
|
+
/**
|
|
4
|
+
* TurvoInternalApi provides access to undocumented Turvo internal APIs.
|
|
5
|
+
* ⚠️ WARNING: These APIs are not officially supported and may break without notice.
|
|
6
|
+
*
|
|
7
|
+
* Current status: STUB - All methods return null. Implementation pending.
|
|
8
|
+
*/
|
|
9
|
+
export declare class TurvoInternalApi {
|
|
10
|
+
private client;
|
|
11
|
+
constructor(client: TurvoClient);
|
|
12
|
+
/**
|
|
13
|
+
* GET /api/locationUpdates/
|
|
14
|
+
* Returns GPS ping history for a shipment
|
|
15
|
+
* ⚠️ Undocumented - may break
|
|
16
|
+
*
|
|
17
|
+
* @param _shipmentId - The shipment ID to fetch location updates for
|
|
18
|
+
* @returns Array of location updates, or null if not available
|
|
19
|
+
*
|
|
20
|
+
* TODO: Implement when internal API is ready
|
|
21
|
+
*/
|
|
22
|
+
getLocationUpdates(shipmentId: string): Promise<LocationUpdate[] | null>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TurvoInternalApi provides access to undocumented Turvo internal APIs.
|
|
3
|
+
* ⚠️ WARNING: These APIs are not officially supported and may break without notice.
|
|
4
|
+
*
|
|
5
|
+
* Current status: STUB - All methods return null. Implementation pending.
|
|
6
|
+
*/
|
|
7
|
+
export class TurvoInternalApi {
|
|
8
|
+
client;
|
|
9
|
+
constructor(client) {
|
|
10
|
+
this.client = client;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* GET /api/locationUpdates/
|
|
14
|
+
* Returns GPS ping history for a shipment
|
|
15
|
+
* ⚠️ Undocumented - may break
|
|
16
|
+
*
|
|
17
|
+
* @param _shipmentId - The shipment ID to fetch location updates for
|
|
18
|
+
* @returns Array of location updates, or null if not available
|
|
19
|
+
*
|
|
20
|
+
* TODO: Implement when internal API is ready
|
|
21
|
+
*/
|
|
22
|
+
async getLocationUpdates(shipmentId) {
|
|
23
|
+
// Stub implementation - will use this.client and shipmentId when ready
|
|
24
|
+
void this.client;
|
|
25
|
+
void shipmentId;
|
|
26
|
+
// TODO: Implement internal API call
|
|
27
|
+
// const httpClient = await this.client.getAuthenticatedClient()
|
|
28
|
+
// return httpClient.sendRequest('/api/locationUpdates/...', ...)
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVydm9JbnRlcm5hbEFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHVydm9JbnRlcm5hbEFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDUDtJQUFwQixZQUFvQixNQUFtQjtRQUFuQixXQUFNLEdBQU4sTUFBTSxDQUFhO0lBQUcsQ0FBQztJQUUzQzs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBa0I7UUFDekMsdUVBQXVFO1FBQ3ZFLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUNoQixLQUFLLFVBQVUsQ0FBQTtRQUNmLG9DQUFvQztRQUNwQyxnRUFBZ0U7UUFDaEUsaUVBQWlFO1FBQ2pFLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHVydm9DbGllbnQgfSBmcm9tICcuLi9jbGllbnQvdHVydm9DbGllbnQnXG5pbXBvcnQgeyBMb2NhdGlvblVwZGF0ZSB9IGZyb20gJy4uL3R5cGVzL3RyYWNraW5nJ1xuXG4vKipcbiAqIFR1cnZvSW50ZXJuYWxBcGkgcHJvdmlkZXMgYWNjZXNzIHRvIHVuZG9jdW1lbnRlZCBUdXJ2byBpbnRlcm5hbCBBUElzLlxuICog4pqg77iPIFdBUk5JTkc6IFRoZXNlIEFQSXMgYXJlIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBhbmQgbWF5IGJyZWFrIHdpdGhvdXQgbm90aWNlLlxuICpcbiAqIEN1cnJlbnQgc3RhdHVzOiBTVFVCIC0gQWxsIG1ldGhvZHMgcmV0dXJuIG51bGwuIEltcGxlbWVudGF0aW9uIHBlbmRpbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBUdXJ2b0ludGVybmFsQXBpIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjbGllbnQ6IFR1cnZvQ2xpZW50KSB7fVxuXG4gIC8qKlxuICAgKiBHRVQgL2FwaS9sb2NhdGlvblVwZGF0ZXMvXG4gICAqIFJldHVybnMgR1BTIHBpbmcgaGlzdG9yeSBmb3IgYSBzaGlwbWVudFxuICAgKiDimqDvuI8gVW5kb2N1bWVudGVkIC0gbWF5IGJyZWFrXG4gICAqXG4gICAqIEBwYXJhbSBfc2hpcG1lbnRJZCAtIFRoZSBzaGlwbWVudCBJRCB0byBmZXRjaCBsb2NhdGlvbiB1cGRhdGVzIGZvclxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBsb2NhdGlvbiB1cGRhdGVzLCBvciBudWxsIGlmIG5vdCBhdmFpbGFibGVcbiAgICpcbiAgICogVE9ETzogSW1wbGVtZW50IHdoZW4gaW50ZXJuYWwgQVBJIGlzIHJlYWR5XG4gICAqL1xuICBhc3luYyBnZXRMb2NhdGlvblVwZGF0ZXMoc2hpcG1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxMb2NhdGlvblVwZGF0ZVtdIHwgbnVsbD4ge1xuICAgIC8vIFN0dWIgaW1wbGVtZW50YXRpb24gLSB3aWxsIHVzZSB0aGlzLmNsaWVudCBhbmQgc2hpcG1lbnRJZCB3aGVuIHJlYWR5XG4gICAgdm9pZCB0aGlzLmNsaWVudFxuICAgIHZvaWQgc2hpcG1lbnRJZFxuICAgIC8vIFRPRE86IEltcGxlbWVudCBpbnRlcm5hbCBBUEkgY2FsbFxuICAgIC8vIGNvbnN0IGh0dHBDbGllbnQgPSBhd2FpdCB0aGlzLmNsaWVudC5nZXRBdXRoZW50aWNhdGVkQ2xpZW50KClcbiAgICAvLyByZXR1cm4gaHR0cENsaWVudC5zZW5kUmVxdWVzdCgnL2FwaS9sb2NhdGlvblVwZGF0ZXMvLi4uJywgLi4uKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { TurvoClient } from '../client/turvoClient';
|
|
2
|
+
import { TurvoApiResult, TurvoFilterShipmentsResultItem, TurvoPagedResult } from '../types/common';
|
|
3
|
+
import { TurvoAssociateTagsApiResult, TurvoCancelShipmentApiResult, TurvoCreateShipmentApiResult, TurvoShipment, TurvoShipmentStatus, TurvoUpdateShipmentStatusApiResult } from '../types/shipment';
|
|
4
|
+
/**
|
|
5
|
+
* Parameters for uploading a shipment to Turvo
|
|
6
|
+
*/
|
|
7
|
+
export interface UploadShipmentParams {
|
|
8
|
+
/** The formatted shipment to upload */
|
|
9
|
+
shipment: TurvoShipment;
|
|
10
|
+
/** The Load ID, solely for logging purposes */
|
|
11
|
+
vehoLoadId: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parameters for associating tags to a shipment
|
|
15
|
+
*/
|
|
16
|
+
export interface AssociateTagsParams {
|
|
17
|
+
/** The shipment ID to associate tags with */
|
|
18
|
+
turvoShipmentId: number;
|
|
19
|
+
/** List of tag names to assign */
|
|
20
|
+
tags: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parameters for cancelling a shipment
|
|
24
|
+
*/
|
|
25
|
+
export interface CancelShipmentParams {
|
|
26
|
+
/** The Turvo system Shipment ID to cancel */
|
|
27
|
+
turvoShipmentId: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Parameters for updating shipment status
|
|
31
|
+
*/
|
|
32
|
+
export interface UpdateShipmentStatusParams {
|
|
33
|
+
/** The Turvo shipment ID */
|
|
34
|
+
turvoShipmentId: number;
|
|
35
|
+
/** The Turvo stop ID */
|
|
36
|
+
turvoStopId: number;
|
|
37
|
+
/** The status code to set */
|
|
38
|
+
turvoStatusCode: TurvoShipmentStatus;
|
|
39
|
+
/** The status date in ISO format */
|
|
40
|
+
statusDate: string;
|
|
41
|
+
/** The timezone for the status date */
|
|
42
|
+
statusTimezone: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parameters for retrieving a shipment
|
|
46
|
+
*/
|
|
47
|
+
export interface GetShipmentParams {
|
|
48
|
+
/** The shipment ID to retrieve */
|
|
49
|
+
shipmentId: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Parameters for filtering shipments
|
|
53
|
+
*/
|
|
54
|
+
export interface FilterShipmentsParams {
|
|
55
|
+
/** Turvo location ID to filter by */
|
|
56
|
+
turvoLocationId: number;
|
|
57
|
+
/** Pickup date start filter (ISO format) */
|
|
58
|
+
pickupDateStart: string;
|
|
59
|
+
/** Optional pagination start offset */
|
|
60
|
+
start?: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* TurvoPublicApi provides access to documented Turvo API endpoints.
|
|
64
|
+
* All shipment management operations (create, update, cancel, query) go through this class.
|
|
65
|
+
*/
|
|
66
|
+
export declare class TurvoPublicApi {
|
|
67
|
+
private client;
|
|
68
|
+
constructor(client: TurvoClient);
|
|
69
|
+
/**
|
|
70
|
+
* GET /v1/shipments/{id}
|
|
71
|
+
* Returns shipment details, stops, status
|
|
72
|
+
*/
|
|
73
|
+
getShipment(params: GetShipmentParams): Promise<TurvoApiResult<TurvoShipment>>;
|
|
74
|
+
/**
|
|
75
|
+
* POST /v1/shipments
|
|
76
|
+
* Upload properly formatted shipment to Turvo
|
|
77
|
+
*/
|
|
78
|
+
uploadShipment(params: UploadShipmentParams): Promise<TurvoApiResult<TurvoCreateShipmentApiResult>>;
|
|
79
|
+
/**
|
|
80
|
+
* PUT /v1/tags/attach/shipment/{id}
|
|
81
|
+
* Associate a list of tags with a shipment by ID
|
|
82
|
+
*/
|
|
83
|
+
associateTagsToShipment(params: AssociateTagsParams): Promise<TurvoApiResult<TurvoAssociateTagsApiResult>>;
|
|
84
|
+
/**
|
|
85
|
+
* PUT /v1/shipments/status/{id}
|
|
86
|
+
* Set shipment status to Cancelled in Turvo
|
|
87
|
+
*/
|
|
88
|
+
cancelShipment(params: CancelShipmentParams): Promise<TurvoApiResult<TurvoCancelShipmentApiResult>>;
|
|
89
|
+
/**
|
|
90
|
+
* PUT /v1/shipments/status/{id}
|
|
91
|
+
* Update shipment status at a specific stop
|
|
92
|
+
*/
|
|
93
|
+
updateShipmentStatus(params: UpdateShipmentStatusParams): Promise<TurvoApiResult<TurvoUpdateShipmentStatusApiResult>>;
|
|
94
|
+
/**
|
|
95
|
+
* GET /v1/shipments/list
|
|
96
|
+
* Query shipments from Turvo with pagination support
|
|
97
|
+
*/
|
|
98
|
+
filterShipments(params: FilterShipmentsParams): Promise<TurvoApiResult<TurvoPagedResult<'shipments', TurvoFilterShipmentsResultItem>>>;
|
|
99
|
+
}
|