karrio-fedex 2025.5rc1__py3-none-any.whl

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.
Files changed (42) hide show
  1. karrio/mappers/fedex/__init__.py +3 -0
  2. karrio/mappers/fedex/mapper.py +89 -0
  3. karrio/mappers/fedex/proxy.py +144 -0
  4. karrio/mappers/fedex/settings.py +24 -0
  5. karrio/plugins/fedex/__init__.py +23 -0
  6. karrio/providers/fedex/__init__.py +24 -0
  7. karrio/providers/fedex/document.py +88 -0
  8. karrio/providers/fedex/error.py +66 -0
  9. karrio/providers/fedex/pickup/__init__.py +9 -0
  10. karrio/providers/fedex/pickup/cancel.py +79 -0
  11. karrio/providers/fedex/pickup/create.py +148 -0
  12. karrio/providers/fedex/pickup/update.py +162 -0
  13. karrio/providers/fedex/rate.py +357 -0
  14. karrio/providers/fedex/shipment/__init__.py +9 -0
  15. karrio/providers/fedex/shipment/cancel.py +46 -0
  16. karrio/providers/fedex/shipment/create.py +748 -0
  17. karrio/providers/fedex/tracking.py +154 -0
  18. karrio/providers/fedex/units.py +501 -0
  19. karrio/providers/fedex/utils.py +199 -0
  20. karrio/schemas/fedex/__init__.py +0 -0
  21. karrio/schemas/fedex/cancel_pickup_request.py +31 -0
  22. karrio/schemas/fedex/cancel_pickup_response.py +24 -0
  23. karrio/schemas/fedex/cancel_request.py +17 -0
  24. karrio/schemas/fedex/cancel_response.py +25 -0
  25. karrio/schemas/fedex/error_response.py +16 -0
  26. karrio/schemas/fedex/paperless_request.py +30 -0
  27. karrio/schemas/fedex/paperless_response.py +21 -0
  28. karrio/schemas/fedex/pickup_request.py +106 -0
  29. karrio/schemas/fedex/pickup_response.py +25 -0
  30. karrio/schemas/fedex/rating_request.py +478 -0
  31. karrio/schemas/fedex/rating_responses.py +208 -0
  32. karrio/schemas/fedex/shipping_request.py +731 -0
  33. karrio/schemas/fedex/shipping_responses.py +584 -0
  34. karrio/schemas/fedex/tracking_document_request.py +30 -0
  35. karrio/schemas/fedex/tracking_document_response.py +30 -0
  36. karrio/schemas/fedex/tracking_request.py +23 -0
  37. karrio/schemas/fedex/tracking_response.py +350 -0
  38. karrio_fedex-2025.5rc1.dist-info/METADATA +45 -0
  39. karrio_fedex-2025.5rc1.dist-info/RECORD +42 -0
  40. karrio_fedex-2025.5rc1.dist-info/WHEEL +5 -0
  41. karrio_fedex-2025.5rc1.dist-info/entry_points.txt +2 -0
  42. karrio_fedex-2025.5rc1.dist-info/top_level.txt +3 -0
@@ -0,0 +1,584 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class AlertType:
8
+ code: typing.Optional[str] = None
9
+ alertType: typing.Optional[str] = None
10
+ message: typing.Optional[str] = None
11
+ parameterList: typing.Optional[typing.List[typing.Any]] = None
12
+
13
+
14
+ @attr.s(auto_attribs=True)
15
+ class AccessorDetailType:
16
+ password: typing.Optional[str] = None
17
+ role: typing.Optional[str] = None
18
+ emailLabelUrl: typing.Optional[str] = None
19
+ userId: typing.Optional[str] = None
20
+
21
+
22
+ @attr.s(auto_attribs=True)
23
+ class AccessDetailType:
24
+ accessorDetails: typing.Optional[typing.List[AccessorDetailType]] = jstruct.JList[AccessorDetailType]
25
+
26
+
27
+ @attr.s(auto_attribs=True)
28
+ class UploadDocumentReferenceDetailType:
29
+ documentType: typing.Optional[str] = None
30
+ documentReference: typing.Optional[str] = None
31
+ description: typing.Optional[str] = None
32
+ documentId: typing.Optional[str] = None
33
+
34
+
35
+ @attr.s(auto_attribs=True)
36
+ class CompletedEtdDetailType:
37
+ folderId: typing.Optional[str] = None
38
+ type: typing.Optional[str] = None
39
+ uploadDocumentReferenceDetails: typing.Optional[typing.List[UploadDocumentReferenceDetailType]] = jstruct.JList[UploadDocumentReferenceDetailType]
40
+
41
+
42
+ @attr.s(auto_attribs=True)
43
+ class AddressType:
44
+ streetLines: typing.Optional[typing.List[str]] = None
45
+ city: typing.Optional[str] = None
46
+ stateOrProvinceCode: typing.Optional[str] = None
47
+ postalCode: typing.Optional[int] = None
48
+ countryCode: typing.Optional[str] = None
49
+ residential: typing.Optional[bool] = None
50
+
51
+
52
+ @attr.s(auto_attribs=True)
53
+ class ContactType:
54
+ personName: typing.Optional[str] = None
55
+ tollFreePhoneNumber: typing.Optional[int] = None
56
+ emailAddress: typing.Optional[str] = None
57
+ phoneNumber: typing.Optional[int] = None
58
+ phoneExtension: typing.Optional[int] = None
59
+ faxNumber: typing.Optional[int] = None
60
+ pagerNumber: typing.Optional[int] = None
61
+ companyName: typing.Optional[str] = None
62
+ title: typing.Optional[str] = None
63
+
64
+
65
+ @attr.s(auto_attribs=True)
66
+ class HoldingLocationType:
67
+ address: typing.Optional[AddressType] = jstruct.JStruct[AddressType]
68
+ contact: typing.Optional[ContactType] = jstruct.JStruct[ContactType]
69
+
70
+
71
+ @attr.s(auto_attribs=True)
72
+ class CompletedHoldAtLocationDetailType:
73
+ holdingLocationType: typing.Optional[str] = None
74
+ holdingLocation: typing.Optional[HoldingLocationType] = jstruct.JStruct[HoldingLocationType]
75
+
76
+
77
+ @attr.s(auto_attribs=True)
78
+ class WeightType:
79
+ units: typing.Optional[str] = None
80
+ value: typing.Optional[float] = None
81
+
82
+
83
+ @attr.s(auto_attribs=True)
84
+ class HazardousCommodityDescriptionType:
85
+ sequenceNumber: typing.Optional[int] = None
86
+ packingInstructions: typing.Optional[str] = None
87
+ subsidiaryClasses: typing.Optional[typing.List[str]] = None
88
+ labelText: typing.Optional[str] = None
89
+ tunnelRestrictionCode: typing.Optional[str] = None
90
+ specialProvisions: typing.Optional[str] = None
91
+ properShippingNameAndDescription: typing.Optional[str] = None
92
+ technicalName: typing.Optional[str] = None
93
+ symbols: typing.Optional[str] = None
94
+ authorization: typing.Optional[str] = None
95
+ attributes: typing.Optional[typing.List[str]] = None
96
+ id: typing.Optional[int] = None
97
+ packingGroup: typing.Optional[str] = None
98
+ properShippingName: typing.Optional[str] = None
99
+ hazardClass: typing.Optional[str] = None
100
+
101
+
102
+ @attr.s(auto_attribs=True)
103
+ class NetExplosiveDetailType:
104
+ amount: typing.Optional[int] = None
105
+ units: typing.Optional[str] = None
106
+ type: typing.Optional[str] = None
107
+
108
+
109
+ @attr.s(auto_attribs=True)
110
+ class PackingDetailsType:
111
+ packingInstructions: typing.Optional[str] = None
112
+ cargoAircraftOnly: typing.Optional[bool] = None
113
+
114
+
115
+ @attr.s(auto_attribs=True)
116
+ class OptionsDescriptionType:
117
+ sequenceNumber: typing.Optional[int] = None
118
+ processingOptions: typing.Optional[typing.List[str]] = None
119
+ subsidiaryClasses: typing.Optional[typing.List[str]] = None
120
+ labelText: typing.Optional[str] = None
121
+ technicalName: typing.Optional[str] = None
122
+ packingDetails: typing.Optional[PackingDetailsType] = jstruct.JStruct[PackingDetailsType]
123
+ authorization: typing.Optional[str] = None
124
+ reportableQuantity: typing.Optional[bool] = None
125
+ percentage: typing.Optional[float] = None
126
+ id: typing.Optional[int] = None
127
+ packingGroup: typing.Optional[str] = None
128
+ properShippingName: typing.Optional[str] = None
129
+ hazardClass: typing.Optional[str] = None
130
+
131
+
132
+ @attr.s(auto_attribs=True)
133
+ class QuantityType:
134
+ quantityType: typing.Optional[str] = None
135
+ amount: typing.Optional[float] = None
136
+ units: typing.Optional[str] = None
137
+
138
+
139
+ @attr.s(auto_attribs=True)
140
+ class InnerReceptacleType:
141
+ quantity: typing.Optional[QuantityType] = jstruct.JStruct[QuantityType]
142
+
143
+
144
+ @attr.s(auto_attribs=True)
145
+ class OptionsOptionsType:
146
+ labelTextOption: typing.Optional[str] = None
147
+ customerSuppliedLabelText: typing.Optional[str] = None
148
+
149
+
150
+ @attr.s(auto_attribs=True)
151
+ class HazardousCommodityOptionsType:
152
+ quantity: typing.Optional[QuantityType] = jstruct.JStruct[QuantityType]
153
+ innerReceptacles: typing.Optional[typing.List[InnerReceptacleType]] = jstruct.JList[InnerReceptacleType]
154
+ options: typing.Optional[OptionsOptionsType] = jstruct.JStruct[OptionsOptionsType]
155
+ description: typing.Optional[OptionsDescriptionType] = jstruct.JStruct[OptionsDescriptionType]
156
+
157
+
158
+ @attr.s(auto_attribs=True)
159
+ class HazardousCommodityType:
160
+ quantity: typing.Optional[QuantityType] = jstruct.JStruct[QuantityType]
161
+ options: typing.Optional[HazardousCommodityOptionsType] = jstruct.JStruct[HazardousCommodityOptionsType]
162
+ description: typing.Optional[HazardousCommodityDescriptionType] = jstruct.JStruct[HazardousCommodityDescriptionType]
163
+ netExplosiveDetail: typing.Optional[NetExplosiveDetailType] = jstruct.JStruct[NetExplosiveDetailType]
164
+ massPoints: typing.Optional[int] = None
165
+
166
+
167
+ @attr.s(auto_attribs=True)
168
+ class ContainerType:
169
+ qvalue: typing.Optional[int] = None
170
+ hazardousCommodities: typing.Optional[typing.List[HazardousCommodityType]] = jstruct.JList[HazardousCommodityType]
171
+
172
+
173
+ @attr.s(auto_attribs=True)
174
+ class HazardousPackageDetailType:
175
+ regulation: typing.Optional[str] = None
176
+ accessibility: typing.Optional[str] = None
177
+ labelType: typing.Optional[str] = None
178
+ containers: typing.Optional[typing.List[ContainerType]] = jstruct.JList[ContainerType]
179
+ cargoAircraftOnly: typing.Optional[bool] = None
180
+ referenceId: typing.Optional[int] = None
181
+ radioactiveTransportIndex: typing.Optional[float] = None
182
+
183
+
184
+ @attr.s(auto_attribs=True)
185
+ class BarcodeType:
186
+ type: typing.Optional[str] = None
187
+ value: typing.Optional[str] = None
188
+
189
+
190
+ @attr.s(auto_attribs=True)
191
+ class BarcodesType:
192
+ binaryBarcodes: typing.Optional[typing.List[BarcodeType]] = jstruct.JList[BarcodeType]
193
+ stringBarcodes: typing.Optional[typing.List[BarcodeType]] = jstruct.JList[BarcodeType]
194
+
195
+
196
+ @attr.s(auto_attribs=True)
197
+ class OperationalInstructionType:
198
+ number: typing.Optional[int] = None
199
+ content: typing.Optional[str] = None
200
+
201
+
202
+ @attr.s(auto_attribs=True)
203
+ class CompletedPackageDetailOperationalDetailType:
204
+ astraHandlingText: typing.Optional[str] = None
205
+ barcodes: typing.Optional[BarcodesType] = jstruct.JStruct[BarcodesType]
206
+ operationalInstructions: typing.Optional[typing.List[OperationalInstructionType]] = jstruct.JList[OperationalInstructionType]
207
+
208
+
209
+ @attr.s(auto_attribs=True)
210
+ class PackageRateDetailSurchargeType:
211
+ amount: typing.Optional[str] = None
212
+ surchargeType: typing.Optional[str] = None
213
+ level: typing.Optional[str] = None
214
+ description: typing.Optional[str] = None
215
+
216
+
217
+ @attr.s(auto_attribs=True)
218
+ class PackageRateDetailType:
219
+ ratedWeightMethod: typing.Optional[str] = None
220
+ totalFreightDiscounts: typing.Optional[float] = None
221
+ totalTaxes: typing.Optional[float] = None
222
+ minimumChargeType: typing.Optional[str] = None
223
+ baseCharge: typing.Optional[float] = None
224
+ totalRebates: typing.Optional[float] = None
225
+ rateType: typing.Optional[str] = None
226
+ billingWeight: typing.Optional[WeightType] = jstruct.JStruct[WeightType]
227
+ netFreight: typing.Optional[float] = None
228
+ surcharges: typing.Optional[typing.List[PackageRateDetailSurchargeType]] = jstruct.JList[PackageRateDetailSurchargeType]
229
+ totalSurcharges: typing.Optional[float] = None
230
+ netFedExCharge: typing.Optional[float] = None
231
+ netCharge: typing.Optional[float] = None
232
+ currency: typing.Optional[str] = None
233
+
234
+
235
+ @attr.s(auto_attribs=True)
236
+ class PackageRatingType:
237
+ effectiveNetDiscount: typing.Optional[int] = None
238
+ actualRateType: typing.Optional[str] = None
239
+ packageRateDetails: typing.Optional[typing.List[PackageRateDetailType]] = jstruct.JList[PackageRateDetailType]
240
+
241
+
242
+ @attr.s(auto_attribs=True)
243
+ class TrackingIDType:
244
+ formId: typing.Optional[str] = None
245
+ trackingIdType: typing.Optional[str] = None
246
+ uspsApplicationId: typing.Optional[int] = None
247
+ trackingNumber: typing.Optional[str] = None
248
+
249
+
250
+ @attr.s(auto_attribs=True)
251
+ class CompletedPackageDetailType:
252
+ sequenceNumber: typing.Optional[int] = None
253
+ operationalDetail: typing.Optional[CompletedPackageDetailOperationalDetailType] = jstruct.JStruct[CompletedPackageDetailOperationalDetailType]
254
+ signatureOption: typing.Optional[str] = None
255
+ trackingIds: typing.Optional[typing.List[TrackingIDType]] = jstruct.JList[TrackingIDType]
256
+ groupNumber: typing.Optional[int] = None
257
+ oversizeClass: typing.Optional[str] = None
258
+ packageRating: typing.Optional[PackageRatingType] = jstruct.JStruct[PackageRatingType]
259
+ dryIceWeight: typing.Optional[WeightType] = jstruct.JStruct[WeightType]
260
+ hazardousPackageDetail: typing.Optional[HazardousPackageDetailType] = jstruct.JStruct[HazardousPackageDetailType]
261
+
262
+
263
+ @attr.s(auto_attribs=True)
264
+ class GenerationDetailType:
265
+ type: typing.Optional[str] = None
266
+ minimumCopiesRequired: typing.Optional[int] = None
267
+ letterhead: typing.Optional[str] = None
268
+ electronicSignature: typing.Optional[str] = None
269
+
270
+
271
+ @attr.s(auto_attribs=True)
272
+ class DocumentRequirementsType:
273
+ requiredDocuments: typing.Optional[typing.List[str]] = None
274
+ prohibitedDocuments: typing.Optional[typing.List[str]] = None
275
+ generationDetails: typing.Optional[typing.List[GenerationDetailType]] = jstruct.JList[GenerationDetailType]
276
+
277
+
278
+ @attr.s(auto_attribs=True)
279
+ class LicenseOrPermitDetailType:
280
+ number: typing.Optional[int] = None
281
+ effectiveDate: typing.Optional[str] = None
282
+ expirationDate: typing.Optional[str] = None
283
+
284
+
285
+ @attr.s(auto_attribs=True)
286
+ class AdrLicenseType:
287
+ licenseOrPermitDetail: typing.Optional[LicenseOrPermitDetailType] = jstruct.JStruct[LicenseOrPermitDetailType]
288
+
289
+
290
+ @attr.s(auto_attribs=True)
291
+ class ProcessingOptionsType:
292
+ options: typing.Optional[typing.List[str]] = None
293
+
294
+
295
+ @attr.s(auto_attribs=True)
296
+ class DryIceDetailType:
297
+ totalWeight: typing.Optional[WeightType] = jstruct.JStruct[WeightType]
298
+ packageCount: typing.Optional[int] = None
299
+ processingOptions: typing.Optional[ProcessingOptionsType] = jstruct.JStruct[ProcessingOptionsType]
300
+
301
+
302
+ @attr.s(auto_attribs=True)
303
+ class HazardousSummaryDetailType:
304
+ smallQuantityExceptionPackageCount: typing.Optional[int] = None
305
+
306
+
307
+ @attr.s(auto_attribs=True)
308
+ class HazardousShipmentDetailType:
309
+ hazardousSummaryDetail: typing.Optional[HazardousSummaryDetailType] = jstruct.JStruct[HazardousSummaryDetailType]
310
+ adrLicense: typing.Optional[AdrLicenseType] = jstruct.JStruct[AdrLicenseType]
311
+ dryIceDetail: typing.Optional[DryIceDetailType] = jstruct.JStruct[DryIceDetailType]
312
+
313
+
314
+ @attr.s(auto_attribs=True)
315
+ class CompletedShipmentDetailOperationalDetailType:
316
+ originServiceArea: typing.Optional[str] = None
317
+ serviceCode: typing.Optional[str] = None
318
+ airportId: typing.Optional[str] = None
319
+ postalCode: typing.Optional[int] = None
320
+ scac: typing.Optional[str] = None
321
+ deliveryDay: typing.Optional[str] = None
322
+ originLocationId: typing.Optional[str] = None
323
+ countryCode: typing.Optional[str] = None
324
+ astraDescription: typing.Optional[str] = None
325
+ originLocationNumber: typing.Optional[int] = None
326
+ deliveryDate: typing.Optional[str] = None
327
+ deliveryEligibilities: typing.Optional[typing.List[str]] = None
328
+ ineligibleForMoneyBackGuarantee: typing.Optional[bool] = None
329
+ maximumTransitTime: typing.Optional[str] = None
330
+ destinationLocationStateOrProvinceCode: typing.Optional[str] = None
331
+ astraPlannedServiceLevel: typing.Optional[str] = None
332
+ destinationLocationId: typing.Optional[str] = None
333
+ transitTime: typing.Optional[str] = None
334
+ stateOrProvinceCode: typing.Optional[str] = None
335
+ destinationLocationNumber: typing.Optional[int] = None
336
+ packagingCode: typing.Optional[str] = None
337
+ commitDate: typing.Optional[str] = None
338
+ publishedDeliveryTime: typing.Optional[str] = None
339
+ ursaSuffixCode: typing.Optional[str] = None
340
+ ursaPrefixCode: typing.Optional[str] = None
341
+ destinationServiceArea: typing.Optional[str] = None
342
+ commitDay: typing.Optional[str] = None
343
+ customTransitTime: typing.Optional[str] = None
344
+
345
+
346
+ @attr.s(auto_attribs=True)
347
+ class NameType:
348
+ type: typing.Optional[str] = None
349
+ encoding: typing.Optional[str] = None
350
+ value: typing.Optional[str] = None
351
+
352
+
353
+ @attr.s(auto_attribs=True)
354
+ class ServiceDescriptionType:
355
+ serviceType: typing.Optional[str] = None
356
+ code: typing.Optional[str] = None
357
+ names: typing.Optional[typing.List[NameType]] = jstruct.JList[NameType]
358
+ operatingOrgCodes: typing.Optional[typing.List[str]] = None
359
+ astraDescription: typing.Optional[str] = None
360
+ description: typing.Optional[str] = None
361
+ serviceId: typing.Optional[str] = None
362
+ serviceCategory: typing.Optional[str] = None
363
+
364
+
365
+ @attr.s(auto_attribs=True)
366
+ class PartType:
367
+ documentPartSequenceNumber: typing.Optional[int] = None
368
+ image: typing.Optional[str] = None
369
+
370
+
371
+ @attr.s(auto_attribs=True)
372
+ class ShipmentDocumentType:
373
+ type: typing.Optional[str] = None
374
+ shippingDocumentDisposition: typing.Optional[str] = None
375
+ imageType: typing.Optional[str] = None
376
+ resolution: typing.Optional[int] = None
377
+ copiesToPrint: typing.Optional[int] = None
378
+ parts: typing.Optional[typing.List[PartType]] = jstruct.JList[PartType]
379
+
380
+
381
+ @attr.s(auto_attribs=True)
382
+ class CurrencyExchangeRateType:
383
+ rate: typing.Optional[float] = None
384
+ fromCurrency: typing.Optional[str] = None
385
+ intoCurrency: typing.Optional[str] = None
386
+
387
+
388
+ @attr.s(auto_attribs=True)
389
+ class FreightDiscountType:
390
+ amount: typing.Optional[float] = None
391
+ rateDiscountType: typing.Optional[str] = None
392
+ percent: typing.Optional[float] = None
393
+ description: typing.Optional[str] = None
394
+
395
+
396
+ @attr.s(auto_attribs=True)
397
+ class ShipmentRateDetailSurchargeType:
398
+ amount: typing.Optional[typing.Union[float, str]] = None
399
+ surchargeType: typing.Optional[str] = None
400
+ level: typing.Optional[str] = None
401
+ description: typing.Optional[str] = None
402
+
403
+
404
+ @attr.s(auto_attribs=True)
405
+ class TaxType:
406
+ amount: typing.Optional[float] = None
407
+ level: typing.Optional[str] = None
408
+ description: typing.Optional[str] = None
409
+ type: typing.Optional[str] = None
410
+
411
+
412
+ @attr.s(auto_attribs=True)
413
+ class ShipmentRateDetailType:
414
+ rateZone: typing.Optional[str] = None
415
+ ratedWeightMethod: typing.Optional[str] = None
416
+ totalDutiesTaxesAndFees: typing.Optional[float] = None
417
+ pricingCode: typing.Optional[str] = None
418
+ totalFreightDiscounts: typing.Optional[float] = None
419
+ totalTaxes: typing.Optional[float] = None
420
+ totalDutiesAndTaxes: typing.Optional[float] = None
421
+ totalAncillaryFeesAndTaxes: typing.Optional[float] = None
422
+ taxes: typing.Optional[typing.List[TaxType]] = jstruct.JList[TaxType]
423
+ totalRebates: typing.Optional[float] = None
424
+ fuelSurchargePercent: typing.Optional[float] = None
425
+ currencyExchangeRate: typing.Optional[CurrencyExchangeRateType] = jstruct.JStruct[CurrencyExchangeRateType]
426
+ totalNetFreight: typing.Optional[float] = None
427
+ totalNetFedExCharge: typing.Optional[float] = None
428
+ shipmentLegRateDetails: typing.Optional[typing.List[typing.Any]] = None
429
+ dimDivisor: typing.Optional[int] = None
430
+ rateType: typing.Optional[str] = None
431
+ surcharges: typing.Optional[typing.List[ShipmentRateDetailSurchargeType]] = jstruct.JList[ShipmentRateDetailSurchargeType]
432
+ totalSurcharges: typing.Optional[float] = None
433
+ totalBillingWeight: typing.Optional[WeightType] = jstruct.JStruct[WeightType]
434
+ freightDiscounts: typing.Optional[typing.List[FreightDiscountType]] = jstruct.JList[FreightDiscountType]
435
+ rateScale: typing.Optional[str] = None
436
+ totalNetCharge: typing.Optional[float] = None
437
+ totalBaseCharge: typing.Optional[float] = None
438
+ totalNetChargeWithDutiesAndTaxes: typing.Optional[float] = None
439
+ currency: typing.Optional[str] = None
440
+
441
+
442
+ @attr.s(auto_attribs=True)
443
+ class ShipmentRatingType:
444
+ actualRateType: typing.Optional[str] = None
445
+ shipmentRateDetails: typing.Optional[typing.List[ShipmentRateDetailType]] = jstruct.JList[ShipmentRateDetailType]
446
+
447
+
448
+ @attr.s(auto_attribs=True)
449
+ class CompletedShipmentDetailType:
450
+ completedPackageDetails: typing.Optional[typing.List[CompletedPackageDetailType]] = jstruct.JList[CompletedPackageDetailType]
451
+ operationalDetail: typing.Optional[CompletedShipmentDetailOperationalDetailType] = jstruct.JStruct[CompletedShipmentDetailOperationalDetailType]
452
+ carrierCode: typing.Optional[str] = None
453
+ completedHoldAtLocationDetail: typing.Optional[CompletedHoldAtLocationDetailType] = jstruct.JStruct[CompletedHoldAtLocationDetailType]
454
+ completedEtdDetail: typing.Optional[CompletedEtdDetailType] = jstruct.JStruct[CompletedEtdDetailType]
455
+ packagingDescription: typing.Optional[str] = None
456
+ masterTrackingId: typing.Optional[TrackingIDType] = jstruct.JStruct[TrackingIDType]
457
+ serviceDescription: typing.Optional[ServiceDescriptionType] = jstruct.JStruct[ServiceDescriptionType]
458
+ usDomestic: typing.Optional[bool] = None
459
+ hazardousShipmentDetail: typing.Optional[HazardousShipmentDetailType] = jstruct.JStruct[HazardousShipmentDetailType]
460
+ shipmentRating: typing.Optional[ShipmentRatingType] = jstruct.JStruct[ShipmentRatingType]
461
+ documentRequirements: typing.Optional[DocumentRequirementsType] = jstruct.JStruct[DocumentRequirementsType]
462
+ exportComplianceStatement: typing.Optional[str] = None
463
+ accessDetail: typing.Optional[AccessDetailType] = jstruct.JStruct[AccessDetailType]
464
+ shipmentDocuments: typing.Optional[typing.List[ShipmentDocumentType]] = jstruct.JList[ShipmentDocumentType]
465
+
466
+
467
+ @attr.s(auto_attribs=True)
468
+ class CustomerReferenceType:
469
+ customerReferenceType: typing.Optional[str] = None
470
+ value: typing.Optional[int] = None
471
+
472
+
473
+ @attr.s(auto_attribs=True)
474
+ class DocumentType:
475
+ contentKey: typing.Optional[str] = None
476
+ copiesToPrint: typing.Optional[int] = None
477
+ contentType: typing.Optional[str] = None
478
+ trackingNumber: typing.Optional[str] = None
479
+ docType: typing.Optional[str] = None
480
+ alerts: typing.Optional[typing.List[AlertType]] = jstruct.JList[AlertType]
481
+ encodedLabel: typing.Optional[str] = None
482
+ url: typing.Optional[str] = None
483
+
484
+
485
+ @attr.s(auto_attribs=True)
486
+ class TransactionDetailType:
487
+ transactionDetails: typing.Optional[str] = None
488
+ transactionId: typing.Optional[int] = None
489
+
490
+
491
+ @attr.s(auto_attribs=True)
492
+ class PieceResponseType:
493
+ netChargeAmount: typing.Optional[float] = None
494
+ transactionDetails: typing.Optional[typing.List[TransactionDetailType]] = jstruct.JList[TransactionDetailType]
495
+ packageDocuments: typing.Optional[typing.List[DocumentType]] = jstruct.JList[DocumentType]
496
+ acceptanceTrackingNumber: typing.Optional[str] = None
497
+ serviceCategory: typing.Optional[str] = None
498
+ listCustomerTotalCharge: typing.Optional[str] = None
499
+ deliveryTimestamp: typing.Optional[str] = None
500
+ trackingIdType: typing.Optional[str] = None
501
+ additionalChargesDiscount: typing.Optional[float] = None
502
+ netListRateAmount: typing.Optional[float] = None
503
+ baseRateAmount: typing.Optional[float] = None
504
+ packageSequenceNumber: typing.Optional[int] = None
505
+ netDiscountAmount: typing.Optional[float] = None
506
+ codcollectionAmount: typing.Optional[float] = None
507
+ masterTrackingNumber: typing.Optional[str] = None
508
+ acceptanceType: typing.Optional[str] = None
509
+ trackingNumber: typing.Optional[str] = None
510
+ successful: typing.Optional[bool] = None
511
+ customerReferences: typing.Optional[typing.List[CustomerReferenceType]] = jstruct.JList[CustomerReferenceType]
512
+ netRateAmount: typing.Optional[float] = None
513
+ currency: typing.Optional[str] = None
514
+
515
+
516
+ @attr.s(auto_attribs=True)
517
+ class ParameterType:
518
+ id: typing.Optional[str] = None
519
+ value: typing.Optional[str] = None
520
+
521
+
522
+ @attr.s(auto_attribs=True)
523
+ class AdvisoryType:
524
+ code: typing.Optional[str] = None
525
+ text: typing.Optional[str] = None
526
+ parameters: typing.Optional[typing.List[ParameterType]] = jstruct.JList[ParameterType]
527
+ localizedText: typing.Optional[str] = None
528
+
529
+
530
+ @attr.s(auto_attribs=True)
531
+ class WaiverType:
532
+ advisories: typing.Optional[typing.List[AdvisoryType]] = jstruct.JList[AdvisoryType]
533
+ description: typing.Optional[str] = None
534
+ id: typing.Optional[str] = None
535
+
536
+
537
+ @attr.s(auto_attribs=True)
538
+ class ProhibitionType:
539
+ derivedHarmonizedCode: typing.Optional[str] = None
540
+ advisory: typing.Optional[AdvisoryType] = jstruct.JStruct[AdvisoryType]
541
+ commodityIndex: typing.Optional[int] = None
542
+ source: typing.Optional[str] = None
543
+ categories: typing.Optional[typing.List[str]] = None
544
+ type: typing.Optional[str] = None
545
+ waiver: typing.Optional[WaiverType] = jstruct.JStruct[WaiverType]
546
+ status: typing.Optional[str] = None
547
+
548
+
549
+ @attr.s(auto_attribs=True)
550
+ class RegulatoryAdvisoryType:
551
+ prohibitions: typing.Optional[typing.List[ProhibitionType]] = jstruct.JList[ProhibitionType]
552
+
553
+
554
+ @attr.s(auto_attribs=True)
555
+ class ShipmentAdvisoryDetailsType:
556
+ regulatoryAdvisory: typing.Optional[RegulatoryAdvisoryType] = jstruct.JStruct[RegulatoryAdvisoryType]
557
+
558
+
559
+ @attr.s(auto_attribs=True)
560
+ class TransactionShipmentType:
561
+ serviceType: typing.Optional[str] = None
562
+ shipDatestamp: typing.Optional[str] = None
563
+ serviceCategory: typing.Optional[str] = None
564
+ shipmentDocuments: typing.Optional[typing.List[DocumentType]] = jstruct.JList[DocumentType]
565
+ pieceResponses: typing.Optional[typing.List[PieceResponseType]] = jstruct.JList[PieceResponseType]
566
+ serviceName: typing.Optional[str] = None
567
+ alerts: typing.Optional[typing.List[AlertType]] = jstruct.JList[AlertType]
568
+ completedShipmentDetail: typing.Optional[CompletedShipmentDetailType] = jstruct.JStruct[CompletedShipmentDetailType]
569
+ shipmentAdvisoryDetails: typing.Optional[ShipmentAdvisoryDetailsType] = jstruct.JStruct[ShipmentAdvisoryDetailsType]
570
+ masterTrackingNumber: typing.Optional[str] = None
571
+
572
+
573
+ @attr.s(auto_attribs=True)
574
+ class OutputType:
575
+ transactionShipments: typing.Optional[typing.List[TransactionShipmentType]] = jstruct.JList[TransactionShipmentType]
576
+ alerts: typing.Optional[typing.List[AlertType]] = jstruct.JList[AlertType]
577
+ jobId: typing.Optional[str] = None
578
+
579
+
580
+ @attr.s(auto_attribs=True)
581
+ class ShippingResponseType:
582
+ transactionId: typing.Optional[str] = None
583
+ customerTransactionId: typing.Optional[str] = None
584
+ output: typing.Optional[OutputType] = jstruct.JStruct[OutputType]
@@ -0,0 +1,30 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class TrackDocumentDetailType:
8
+ documentType: typing.Optional[str] = None
9
+ documentFormat: typing.Optional[str] = None
10
+
11
+
12
+ @attr.s(auto_attribs=True)
13
+ class TrackingNumberInfoType:
14
+ trackingNumber: typing.Optional[str] = None
15
+ carrierCode: typing.Optional[str] = None
16
+ trackingNumberUniqueId: typing.Optional[str] = None
17
+
18
+
19
+ @attr.s(auto_attribs=True)
20
+ class TrackDocumentSpecificationType:
21
+ trackingNumberInfo: typing.Optional[TrackingNumberInfoType] = jstruct.JStruct[TrackingNumberInfoType]
22
+ shipDateBegin: typing.Optional[str] = None
23
+ shipDateEnd: typing.Optional[str] = None
24
+ accountNumber: typing.Optional[str] = None
25
+
26
+
27
+ @attr.s(auto_attribs=True)
28
+ class TrackingDocumentRequestType:
29
+ trackDocumentDetail: typing.Optional[TrackDocumentDetailType] = jstruct.JStruct[TrackDocumentDetailType]
30
+ trackDocumentSpecification: typing.Optional[typing.List[TrackDocumentSpecificationType]] = jstruct.JList[TrackDocumentSpecificationType]
@@ -0,0 +1,30 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class AlertType:
8
+ code: typing.Optional[str] = None
9
+ message: typing.Optional[str] = None
10
+
11
+
12
+ @attr.s(auto_attribs=True)
13
+ class LocalizationType:
14
+ localeCode: typing.Optional[str] = None
15
+ languageCode: typing.Optional[str] = None
16
+
17
+
18
+ @attr.s(auto_attribs=True)
19
+ class OutputType:
20
+ alerts: typing.Optional[typing.List[AlertType]] = jstruct.JList[AlertType]
21
+ localization: typing.Optional[LocalizationType] = jstruct.JStruct[LocalizationType]
22
+ documentType: typing.Optional[str] = None
23
+ documentFormat: typing.Optional[str] = None
24
+ documents: typing.Optional[typing.List[str]] = None
25
+
26
+
27
+ @attr.s(auto_attribs=True)
28
+ class TrackingDocumentResponseType:
29
+ transactionId: typing.Optional[str] = None
30
+ output: typing.Optional[OutputType] = jstruct.JStruct[OutputType]
@@ -0,0 +1,23 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class TrackingNumberInfoType:
8
+ trackingNumber: typing.Optional[str] = None
9
+ carrierCode: typing.Optional[str] = None
10
+ trackingNumberUniqueId: typing.Optional[str] = None
11
+
12
+
13
+ @attr.s(auto_attribs=True)
14
+ class TrackingInfoType:
15
+ shipDateBegin: typing.Optional[str] = None
16
+ shipDateEnd: typing.Optional[str] = None
17
+ trackingNumberInfo: typing.Optional[TrackingNumberInfoType] = jstruct.JStruct[TrackingNumberInfoType]
18
+
19
+
20
+ @attr.s(auto_attribs=True)
21
+ class TrackingRequestType:
22
+ includeDetailedScans: typing.Optional[bool] = None
23
+ trackingInfo: typing.Optional[typing.List[TrackingInfoType]] = jstruct.JList[TrackingInfoType]