karrio-easyship 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 (39) hide show
  1. karrio/mappers/easyship/__init__.py +3 -0
  2. karrio/mappers/easyship/mapper.py +94 -0
  3. karrio/mappers/easyship/proxy.py +155 -0
  4. karrio/mappers/easyship/settings.py +20 -0
  5. karrio/plugins/easyship/__init__.py +20 -0
  6. karrio/providers/easyship/__init__.py +25 -0
  7. karrio/providers/easyship/error.py +38 -0
  8. karrio/providers/easyship/manifest.py +72 -0
  9. karrio/providers/easyship/metadata.json +6985 -0
  10. karrio/providers/easyship/pickup/__init__.py +4 -0
  11. karrio/providers/easyship/pickup/cancel.py +42 -0
  12. karrio/providers/easyship/pickup/create.py +86 -0
  13. karrio/providers/easyship/pickup/update.py +88 -0
  14. karrio/providers/easyship/rate.py +215 -0
  15. karrio/providers/easyship/shipment/__init__.py +9 -0
  16. karrio/providers/easyship/shipment/cancel.py +39 -0
  17. karrio/providers/easyship/shipment/create.py +306 -0
  18. karrio/providers/easyship/tracking.py +110 -0
  19. karrio/providers/easyship/units.py +162 -0
  20. karrio/providers/easyship/utils.py +98 -0
  21. karrio/schemas/easyship/__init__.py +0 -0
  22. karrio/schemas/easyship/error_response.py +17 -0
  23. karrio/schemas/easyship/manifest_request.py +9 -0
  24. karrio/schemas/easyship/manifest_response.py +31 -0
  25. karrio/schemas/easyship/pickup_cancel_response.py +19 -0
  26. karrio/schemas/easyship/pickup_request.py +13 -0
  27. karrio/schemas/easyship/pickup_response.py +85 -0
  28. karrio/schemas/easyship/rate_request.py +100 -0
  29. karrio/schemas/easyship/rate_response.py +124 -0
  30. karrio/schemas/easyship/shipment_cancel_response.py +19 -0
  31. karrio/schemas/easyship/shipment_request.py +147 -0
  32. karrio/schemas/easyship/shipment_response.py +273 -0
  33. karrio/schemas/easyship/tracking_request.py +49 -0
  34. karrio/schemas/easyship/tracking_response.py +54 -0
  35. karrio_easyship-2025.5rc1.dist-info/METADATA +45 -0
  36. karrio_easyship-2025.5rc1.dist-info/RECORD +39 -0
  37. karrio_easyship-2025.5rc1.dist-info/WHEEL +5 -0
  38. karrio_easyship-2025.5rc1.dist-info/entry_points.txt +2 -0
  39. karrio_easyship-2025.5rc1.dist-info/top_level.txt +3 -0
@@ -0,0 +1,9 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class ManifestRequestType:
8
+ courier_account_id: typing.Optional[str] = None
9
+ shipment_ids: typing.Optional[typing.List[str]] = None
@@ -0,0 +1,31 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class DocumentType:
8
+ format: typing.Optional[str] = None
9
+ url: typing.Optional[str] = None
10
+
11
+
12
+ @attr.s(auto_attribs=True)
13
+ class ManifestType:
14
+ courier_account_id: typing.Optional[str] = None
15
+ courier_umbrella_name: typing.Optional[str] = None
16
+ created_at: typing.Optional[str] = None
17
+ document: typing.Optional[DocumentType] = jstruct.JStruct[DocumentType]
18
+ id: typing.Optional[str] = None
19
+ ref_number: typing.Optional[str] = None
20
+ shipments_count: typing.Optional[int] = None
21
+
22
+
23
+ @attr.s(auto_attribs=True)
24
+ class MetaType:
25
+ request_id: typing.Optional[str] = None
26
+
27
+
28
+ @attr.s(auto_attribs=True)
29
+ class ManifestResponseType:
30
+ manifest: typing.Optional[ManifestType] = jstruct.JStruct[ManifestType]
31
+ meta: typing.Optional[MetaType] = jstruct.JStruct[MetaType]
@@ -0,0 +1,19 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class MetaType:
8
+ request_id: typing.Optional[str] = None
9
+
10
+
11
+ @attr.s(auto_attribs=True)
12
+ class SuccessType:
13
+ message: typing.Optional[str] = None
14
+
15
+
16
+ @attr.s(auto_attribs=True)
17
+ class PickupCancelResponseType:
18
+ meta: typing.Optional[MetaType] = jstruct.JStruct[MetaType]
19
+ success: typing.Optional[SuccessType] = jstruct.JStruct[SuccessType]
@@ -0,0 +1,13 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class PickupRequestType:
8
+ courier_id: typing.Optional[str] = None
9
+ easyship_shipment_ids: typing.Optional[typing.List[str]] = None
10
+ selected_date: typing.Optional[str] = None
11
+ selected_from_time: typing.Optional[str] = None
12
+ selected_to_time: typing.Optional[str] = None
13
+ time_slot_id: typing.Optional[str] = None
@@ -0,0 +1,85 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class MetaType:
8
+ available_balance: typing.Optional[int] = None
9
+ easyship_shipment_ids: typing.Optional[typing.List[str]] = None
10
+ request_id: typing.Optional[str] = None
11
+
12
+
13
+ @attr.s(auto_attribs=True)
14
+ class DefaultForType:
15
+ billing: typing.Optional[bool] = None
16
+ pickup: typing.Optional[bool] = None
17
+ default_for_return: typing.Optional[bool] = None
18
+ sender: typing.Optional[bool] = None
19
+
20
+
21
+ @attr.s(auto_attribs=True)
22
+ class HkDistrictType:
23
+ area: typing.Optional[str] = None
24
+ district: typing.Optional[str] = None
25
+ id: typing.Optional[int] = None
26
+ zone: typing.Optional[str] = None
27
+
28
+
29
+ @attr.s(auto_attribs=True)
30
+ class ComparisonType:
31
+ changes: typing.Optional[str] = None
32
+ post: typing.Optional[str] = None
33
+ pre: typing.Optional[str] = None
34
+
35
+
36
+ @attr.s(auto_attribs=True)
37
+ class ValidationType:
38
+ detail: typing.Optional[str] = None
39
+ status: typing.Optional[str] = None
40
+ comparison: typing.Optional[ComparisonType] = jstruct.JStruct[ComparisonType]
41
+
42
+
43
+ @attr.s(auto_attribs=True)
44
+ class AddressType:
45
+ city: typing.Optional[str] = None
46
+ company_name: typing.Optional[str] = None
47
+ contact_email: typing.Optional[str] = None
48
+ contact_name: typing.Optional[str] = None
49
+ contact_phone: typing.Optional[str] = None
50
+ country_alpha2: typing.Optional[str] = None
51
+ default_for: typing.Optional[DefaultForType] = jstruct.JStruct[DefaultForType]
52
+ hk_district: typing.Optional[HkDistrictType] = jstruct.JStruct[HkDistrictType]
53
+ id: typing.Optional[str] = None
54
+ line_1: typing.Optional[str] = None
55
+ line_2: typing.Optional[str] = None
56
+ postal_code: typing.Optional[str] = None
57
+ state: typing.Optional[str] = None
58
+ validation: typing.Optional[ValidationType] = jstruct.JStruct[ValidationType]
59
+
60
+
61
+ @attr.s(auto_attribs=True)
62
+ class CourierType:
63
+ id: typing.Optional[str] = None
64
+ name: typing.Optional[str] = None
65
+
66
+
67
+ @attr.s(auto_attribs=True)
68
+ class PickupType:
69
+ address: typing.Optional[AddressType] = jstruct.JStruct[AddressType]
70
+ courier: typing.Optional[CourierType] = jstruct.JStruct[CourierType]
71
+ easyship_pickup_id: typing.Optional[str] = None
72
+ pickup_fee: typing.Optional[int] = None
73
+ pickup_reference_number: typing.Optional[str] = None
74
+ pickup_state: typing.Optional[str] = None
75
+ provider_name: typing.Optional[str] = None
76
+ selected_from_time: typing.Optional[str] = None
77
+ selected_to_time: typing.Optional[str] = None
78
+ shipments_count: typing.Optional[int] = None
79
+ total_actual_weight: typing.Optional[float] = None
80
+
81
+
82
+ @attr.s(auto_attribs=True)
83
+ class PickupResponseType:
84
+ meta: typing.Optional[MetaType] = jstruct.JStruct[MetaType]
85
+ pickup: typing.Optional[PickupType] = jstruct.JStruct[PickupType]
@@ -0,0 +1,100 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class CourierSelectionType:
8
+ apply_shipping_rules: typing.Optional[bool] = None
9
+ show_courier_logo_url: typing.Optional[bool] = None
10
+
11
+
12
+ @attr.s(auto_attribs=True)
13
+ class ComparisonType:
14
+ changes: typing.Optional[str] = None
15
+ post: typing.Optional[str] = None
16
+ pre: typing.Optional[str] = None
17
+
18
+
19
+ @attr.s(auto_attribs=True)
20
+ class ValidationType:
21
+ detail: typing.Optional[str] = None
22
+ status: typing.Optional[str] = None
23
+ comparison: typing.Optional[ComparisonType] = jstruct.JStruct[ComparisonType]
24
+
25
+
26
+ @attr.s(auto_attribs=True)
27
+ class NAddressType:
28
+ country_alpha2: typing.Optional[str] = None
29
+ city: typing.Optional[str] = None
30
+ company_name: typing.Optional[str] = None
31
+ contact_email: typing.Optional[str] = None
32
+ contact_name: typing.Optional[str] = None
33
+ contact_phone: typing.Optional[str] = None
34
+ line_1: typing.Optional[str] = None
35
+ line_2: typing.Optional[str] = None
36
+ postal_code: typing.Optional[str] = None
37
+ state: typing.Optional[str] = None
38
+ validation: typing.Optional[ValidationType] = jstruct.JStruct[ValidationType]
39
+
40
+
41
+ @attr.s(auto_attribs=True)
42
+ class InsuranceType:
43
+ insured_amount: typing.Optional[float] = None
44
+ insured_currency: typing.Optional[str] = None
45
+ is_insured: typing.Optional[bool] = None
46
+
47
+
48
+ @attr.s(auto_attribs=True)
49
+ class BoxType:
50
+ height: typing.Optional[int] = None
51
+ length: typing.Optional[int] = None
52
+ width: typing.Optional[int] = None
53
+ slug: typing.Optional[str] = None
54
+
55
+
56
+ @attr.s(auto_attribs=True)
57
+ class ItemType:
58
+ contains_battery_pi966: typing.Optional[bool] = None
59
+ contains_battery_pi967: typing.Optional[bool] = None
60
+ contains_liquids: typing.Optional[bool] = None
61
+ declared_currency: typing.Optional[str] = None
62
+ dimensions: typing.Optional[BoxType] = jstruct.JStruct[BoxType]
63
+ origin_country_alpha2: typing.Optional[str] = None
64
+ quantity: typing.Optional[int] = None
65
+ actual_weight: typing.Optional[int] = None
66
+ category: typing.Optional[str] = None
67
+ declared_customs_value: typing.Optional[int] = None
68
+ description: typing.Optional[str] = None
69
+ sku: typing.Optional[str] = None
70
+ hs_code: typing.Optional[str] = None
71
+
72
+
73
+ @attr.s(auto_attribs=True)
74
+ class ParcelType:
75
+ box: typing.Optional[BoxType] = jstruct.JStruct[BoxType]
76
+ items: typing.Optional[typing.List[ItemType]] = jstruct.JList[ItemType]
77
+ total_actual_weight: typing.Optional[int] = None
78
+
79
+
80
+ @attr.s(auto_attribs=True)
81
+ class UnitsType:
82
+ dimensions: typing.Optional[str] = None
83
+ weight: typing.Optional[str] = None
84
+
85
+
86
+ @attr.s(auto_attribs=True)
87
+ class ShippingSettingsType:
88
+ output_currency: typing.Optional[str] = None
89
+ units: typing.Optional[UnitsType] = jstruct.JStruct[UnitsType]
90
+
91
+
92
+ @attr.s(auto_attribs=True)
93
+ class RateRequestType:
94
+ courier_selection: typing.Optional[CourierSelectionType] = jstruct.JStruct[CourierSelectionType]
95
+ destination_address: typing.Optional[NAddressType] = jstruct.JStruct[NAddressType]
96
+ incoterms: typing.Optional[str] = None
97
+ insurance: typing.Optional[InsuranceType] = jstruct.JStruct[InsuranceType]
98
+ origin_address: typing.Optional[NAddressType] = jstruct.JStruct[NAddressType]
99
+ parcels: typing.Optional[typing.List[ParcelType]] = jstruct.JList[ParcelType]
100
+ shipping_settings: typing.Optional[ShippingSettingsType] = jstruct.JStruct[ShippingSettingsType]
@@ -0,0 +1,124 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class PaginationType:
8
+ count: typing.Optional[int] = None
9
+ next: typing.Optional[str] = None
10
+ page: typing.Optional[int] = None
11
+
12
+
13
+ @attr.s(auto_attribs=True)
14
+ class MetaType:
15
+ pagination: typing.Optional[PaginationType] = jstruct.JStruct[PaginationType]
16
+ request_id: typing.Optional[str] = None
17
+
18
+
19
+ @attr.s(auto_attribs=True)
20
+ class DiscountType:
21
+ amount: typing.Optional[int] = None
22
+ origin_amount: typing.Optional[int] = None
23
+
24
+
25
+ @attr.s(auto_attribs=True)
26
+ class DetailType:
27
+ fee: typing.Optional[int] = None
28
+ name: typing.Optional[str] = None
29
+ origin_fee: typing.Optional[int] = None
30
+
31
+
32
+ @attr.s(auto_attribs=True)
33
+ class OtherSurchargesType:
34
+ details: typing.Optional[typing.List[DetailType]] = jstruct.JList[DetailType]
35
+ total_fee: typing.Optional[int] = None
36
+
37
+
38
+ @attr.s(auto_attribs=True)
39
+ class RatesInOriginCurrencyType:
40
+ additional_services_surcharge: typing.Optional[int] = None
41
+ currency: typing.Optional[str] = None
42
+ ddp_handling_fee: typing.Optional[int] = None
43
+ estimated_import_duty: typing.Optional[int] = None
44
+ estimated_import_tax: typing.Optional[float] = None
45
+ fuel_surcharge: typing.Optional[int] = None
46
+ import_duty_charge: typing.Optional[int] = None
47
+ import_tax_charge: typing.Optional[int] = None
48
+ import_tax_non_chargeable: typing.Optional[int] = None
49
+ insurance_fee: typing.Optional[int] = None
50
+ minimum_pickup_fee: typing.Optional[int] = None
51
+ oversized_surcharge: typing.Optional[int] = None
52
+ provincial_sales_tax: typing.Optional[int] = None
53
+ remote_area_surcharge: typing.Optional[int] = None
54
+ residential_discounted_fee: typing.Optional[int] = None
55
+ residential_full_fee: typing.Optional[int] = None
56
+ sales_tax: typing.Optional[int] = None
57
+ shipment_charge: typing.Optional[int] = None
58
+ shipment_charge_total: typing.Optional[int] = None
59
+ total_charge: typing.Optional[int] = None
60
+ warehouse_handling_fee: typing.Optional[int] = None
61
+
62
+
63
+ @attr.s(auto_attribs=True)
64
+ class DestinationType:
65
+ base: typing.Optional[int] = None
66
+ name: typing.Optional[str] = None
67
+
68
+
69
+ @attr.s(auto_attribs=True)
70
+ class RemoteAreaSurchargesType:
71
+ destination: typing.Optional[DestinationType] = jstruct.JStruct[DestinationType]
72
+ origin: typing.Optional[DestinationType] = jstruct.JStruct[DestinationType]
73
+
74
+
75
+ @attr.s(auto_attribs=True)
76
+ class RateType:
77
+ additional_services_surcharge: typing.Optional[int] = None
78
+ available_handover_options: typing.Optional[typing.List[typing.Any]] = None
79
+ cost_rank: typing.Optional[int] = None
80
+ courier_id: typing.Optional[str] = None
81
+ courier_logo_url: typing.Optional[str] = None
82
+ courier_name: typing.Optional[str] = None
83
+ courier_remarks: typing.Optional[str] = None
84
+ currency: typing.Optional[str] = None
85
+ ddp_handling_fee: typing.Optional[int] = None
86
+ delivery_time_rank: typing.Optional[int] = None
87
+ description: typing.Optional[str] = None
88
+ discount: typing.Optional[DiscountType] = jstruct.JStruct[DiscountType]
89
+ easyship_rating: typing.Optional[int] = None
90
+ estimated_import_duty: typing.Optional[int] = None
91
+ estimated_import_tax: typing.Optional[float] = None
92
+ fuel_surcharge: typing.Optional[int] = None
93
+ full_description: typing.Optional[str] = None
94
+ import_duty_charge: typing.Optional[int] = None
95
+ import_tax_charge: typing.Optional[int] = None
96
+ import_tax_non_chargeable: typing.Optional[int] = None
97
+ incoterms: typing.Optional[str] = None
98
+ insurance_fee: typing.Optional[int] = None
99
+ is_above_threshold: typing.Optional[bool] = None
100
+ max_delivery_time: typing.Optional[int] = None
101
+ min_delivery_time: typing.Optional[int] = None
102
+ minimum_pickup_fee: typing.Optional[int] = None
103
+ other_surcharges: typing.Optional[OtherSurchargesType] = jstruct.JStruct[OtherSurchargesType]
104
+ oversized_surcharge: typing.Optional[int] = None
105
+ payment_recipient: typing.Optional[str] = None
106
+ provincial_sales_tax: typing.Optional[int] = None
107
+ rates_in_origin_currency: typing.Optional[RatesInOriginCurrencyType] = jstruct.JStruct[RatesInOriginCurrencyType]
108
+ remote_area_surcharge: typing.Optional[int] = None
109
+ remote_area_surcharges: typing.Optional[RemoteAreaSurchargesType] = jstruct.JStruct[RemoteAreaSurchargesType]
110
+ residential_discounted_fee: typing.Optional[int] = None
111
+ residential_full_fee: typing.Optional[int] = None
112
+ sales_tax: typing.Optional[int] = None
113
+ shipment_charge: typing.Optional[int] = None
114
+ shipment_charge_total: typing.Optional[int] = None
115
+ total_charge: typing.Optional[int] = None
116
+ tracking_rating: typing.Optional[int] = None
117
+ value_for_money_rank: typing.Optional[int] = None
118
+ warehouse_handling_fee: typing.Optional[int] = None
119
+
120
+
121
+ @attr.s(auto_attribs=True)
122
+ class RateResponseType:
123
+ meta: typing.Optional[MetaType] = jstruct.JStruct[MetaType]
124
+ rates: typing.Optional[typing.List[RateType]] = jstruct.JList[RateType]
@@ -0,0 +1,19 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class MetaType:
8
+ request_id: typing.Optional[str] = None
9
+
10
+
11
+ @attr.s(auto_attribs=True)
12
+ class SuccessType:
13
+ message: typing.Optional[str] = None
14
+
15
+
16
+ @attr.s(auto_attribs=True)
17
+ class ShipmentCancelResponseType:
18
+ meta: typing.Optional[MetaType] = jstruct.JStruct[MetaType]
19
+ success: typing.Optional[SuccessType] = jstruct.JStruct[SuccessType]
@@ -0,0 +1,147 @@
1
+ import attr
2
+ import jstruct
3
+ import typing
4
+
5
+
6
+ @attr.s(auto_attribs=True)
7
+ class BuyerRegulatoryIdentifiersType:
8
+ ein: typing.Optional[str] = None
9
+ vat_number: typing.Optional[str] = None
10
+
11
+
12
+ @attr.s(auto_attribs=True)
13
+ class CourierSelectionType:
14
+ allow_courier_fallback: typing.Optional[bool] = None
15
+ apply_shipping_rules: typing.Optional[bool] = None
16
+ list_unavailable_couriers: typing.Optional[bool] = None
17
+ selected_courier_id: typing.Optional[str] = None
18
+
19
+
20
+ @attr.s(auto_attribs=True)
21
+ class AddressType:
22
+ city: typing.Optional[str] = None
23
+ company_name: typing.Optional[str] = None
24
+ contact_email: typing.Optional[str] = None
25
+ contact_name: typing.Optional[str] = None
26
+ contact_phone: typing.Optional[str] = None
27
+ country_alpha2: typing.Optional[str] = None
28
+ line_1: typing.Optional[str] = None
29
+ line_2: typing.Optional[str] = None
30
+ postal_code: typing.Optional[str] = None
31
+ state: typing.Optional[str] = None
32
+
33
+
34
+ @attr.s(auto_attribs=True)
35
+ class InsuranceType:
36
+ is_insured: typing.Optional[bool] = None
37
+
38
+
39
+ @attr.s(auto_attribs=True)
40
+ class OrderDataType:
41
+ buyer_notes: typing.Optional[str] = None
42
+ buyer_selected_courier_name: typing.Optional[str] = None
43
+ order_created_at: typing.Optional[str] = None
44
+ platform_name: typing.Optional[str] = None
45
+ platform_order_number: typing.Optional[str] = None
46
+ order_tag_list: typing.Optional[typing.List[str]] = None
47
+ seller_notes: typing.Optional[str] = None
48
+
49
+
50
+ @attr.s(auto_attribs=True)
51
+ class BoxType:
52
+ height: typing.Optional[int] = None
53
+ length: typing.Optional[int] = None
54
+ width: typing.Optional[int] = None
55
+ slug: typing.Optional[str] = None
56
+
57
+
58
+ @attr.s(auto_attribs=True)
59
+ class ItemType:
60
+ actual_weight: typing.Optional[int] = None
61
+ category: typing.Any = None
62
+ contains_battery_pi966: typing.Optional[bool] = None
63
+ contains_battery_pi967: typing.Optional[bool] = None
64
+ contains_liquids: typing.Optional[bool] = None
65
+ declared_currency: typing.Optional[str] = None
66
+ declared_customs_value: typing.Optional[int] = None
67
+ description: typing.Optional[str] = None
68
+ dimensions: typing.Optional[BoxType] = jstruct.JStruct[BoxType]
69
+ hs_code: typing.Optional[int] = None
70
+ origin_country_alpha2: typing.Optional[str] = None
71
+ quantity: typing.Optional[int] = None
72
+ sku: typing.Optional[str] = None
73
+
74
+
75
+ @attr.s(auto_attribs=True)
76
+ class ParcelType:
77
+ box: typing.Optional[BoxType] = jstruct.JStruct[BoxType]
78
+ items: typing.Optional[typing.List[ItemType]] = jstruct.JList[ItemType]
79
+ total_actual_weight: typing.Optional[int] = None
80
+
81
+
82
+ @attr.s(auto_attribs=True)
83
+ class RegulatoryIdentifiersType:
84
+ eori: typing.Optional[str] = None
85
+ ioss: typing.Optional[str] = None
86
+ vat_number: typing.Optional[str] = None
87
+
88
+
89
+ @attr.s(auto_attribs=True)
90
+ class AdditionalServicesType:
91
+ delivery_confirmation: typing.Optional[str] = None
92
+ qr_code: typing.Optional[str] = None
93
+
94
+
95
+ @attr.s(auto_attribs=True)
96
+ class B13AFilingType:
97
+ option: typing.Optional[str] = None
98
+ option_export_compliance_statement: typing.Optional[str] = None
99
+ permit_number: typing.Optional[str] = None
100
+
101
+
102
+ @attr.s(auto_attribs=True)
103
+ class PrintingOptionsType:
104
+ commercial_invoice: typing.Optional[str] = None
105
+ format: typing.Optional[str] = None
106
+ label: typing.Optional[str] = None
107
+ packing_slip: typing.Optional[str] = None
108
+ remarks: typing.Optional[str] = None
109
+
110
+
111
+ @attr.s(auto_attribs=True)
112
+ class UnitsType:
113
+ dimensions: typing.Optional[str] = None
114
+ weight: typing.Optional[str] = None
115
+
116
+
117
+ @attr.s(auto_attribs=True)
118
+ class ShippingSettingsType:
119
+ additional_services: typing.Optional[AdditionalServicesType] = jstruct.JStruct[AdditionalServicesType]
120
+ b13_a_filing: typing.Optional[B13AFilingType] = jstruct.JStruct[B13AFilingType]
121
+ buy_label: typing.Optional[bool] = None
122
+ buy_label_synchronous: typing.Optional[bool] = None
123
+ printing_options: typing.Optional[PrintingOptionsType] = jstruct.JStruct[PrintingOptionsType]
124
+ units: typing.Optional[UnitsType] = jstruct.JStruct[UnitsType]
125
+
126
+
127
+ @attr.s(auto_attribs=True)
128
+ class ShipmentRequestType:
129
+ buyer_regulatory_identifiers: typing.Optional[BuyerRegulatoryIdentifiersType] = jstruct.JStruct[BuyerRegulatoryIdentifiersType]
130
+ courier_selection: typing.Optional[CourierSelectionType] = jstruct.JStruct[CourierSelectionType]
131
+ destination_address: typing.Optional[AddressType] = jstruct.JStruct[AddressType]
132
+ consignee_tax_id: typing.Optional[int] = None
133
+ eei_reference: typing.Optional[int] = None
134
+ incoterms: typing.Optional[str] = None
135
+ metadata: typing.Optional[typing.List[typing.Any]] = None
136
+ insurance: typing.Optional[InsuranceType] = jstruct.JStruct[InsuranceType]
137
+ order_data: typing.Optional[OrderDataType] = jstruct.JStruct[OrderDataType]
138
+ origin_address: typing.Optional[AddressType] = jstruct.JStruct[AddressType]
139
+ regulatory_identifiers: typing.Optional[RegulatoryIdentifiersType] = jstruct.JStruct[RegulatoryIdentifiersType]
140
+ shipment_request_return: typing.Optional[bool] = None
141
+ return_address: typing.Optional[AddressType] = jstruct.JStruct[AddressType]
142
+ return_address_id: typing.Optional[str] = None
143
+ sender_address: typing.Optional[AddressType] = jstruct.JStruct[AddressType]
144
+ sender_address_id: typing.Optional[str] = None
145
+ set_as_residential: typing.Optional[bool] = None
146
+ shipping_settings: typing.Optional[ShippingSettingsType] = jstruct.JStruct[ShippingSettingsType]
147
+ parcels: typing.Optional[typing.List[ParcelType]] = jstruct.JList[ParcelType]