karrio-seko 2025.5rc5__py3-none-any.whl → 2025.5rc7__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.
@@ -55,6 +55,7 @@ def rate_request(
55
55
  payload: models.RateRequest,
56
56
  settings: provider_utils.Settings,
57
57
  ) -> lib.Serializable:
58
+ shipper = lib.to_address(payload.shipper)
58
59
  recipient = lib.to_address(payload.recipient)
59
60
  options = lib.to_shipping_options(
60
61
  payload.options,
@@ -65,10 +66,37 @@ def rate_request(
65
66
  options=options,
66
67
  shipping_options_initializer=provider_units.shipping_options_initializer,
67
68
  )
69
+ customs = lib.to_customs_info(
70
+ payload.customs,
71
+ shipper=payload.shipper,
72
+ recipient=payload.recipient,
73
+ weight_unit="KG",
74
+ )
75
+ commodities = lib.identity(customs.commodities if any(customs.commodities) else packages.items)
68
76
 
69
77
  # map data to convert karrio model to seko specific type
70
78
  request = seko.RatingRequestType(
71
79
  DeliveryReference=payload.reference,
80
+ Reference2=options.seko_reference_2.state,
81
+ Reference3=options.seko_reference_3.state,
82
+ Origin=seko.DestinationType(
83
+ Id=options.seko_origin_id.state,
84
+ Name=payload.shipper.company_name,
85
+ Address=seko.AddressType(
86
+ BuildingName=shipper.company_name,
87
+ StreetAddress=shipper.street,
88
+ Suburb=shipper.city,
89
+ City=shipper.state_code,
90
+ PostCode=shipper.postal_code,
91
+ CountryCode=shipper.country_code,
92
+ ),
93
+ ContactPerson=shipper.contact,
94
+ PhoneNumber=shipper.phone_number,
95
+ Email=shipper.email,
96
+ DeliveryInstructions=options.origin_instructions.state,
97
+ RecipientTaxId=shipper.tax_id,
98
+ SendTrackingEmail=None,
99
+ ),
72
100
  Destination=seko.DestinationType(
73
101
  Id=options.seko_destination_id.state,
74
102
  Name=recipient.company_name,
@@ -85,9 +113,29 @@ def rate_request(
85
113
  Email=recipient.email,
86
114
  DeliveryInstructions=options.destination_instructions.state,
87
115
  RecipientTaxId=recipient.tax_id,
116
+ SendTrackingEmail=None,
88
117
  ),
89
118
  IsSaturdayDelivery=options.seko_is_saturday_delivery.state,
90
119
  IsSignatureRequired=options.seko_is_signature_required.state,
120
+ DangerousGoods=None,
121
+ Commodities=[
122
+ seko.CommodityType(
123
+ Description=commodity.description,
124
+ HarmonizedCode=commodity.sku,
125
+ Units=commodity.quantity,
126
+ UnitValue=commodity.value_amount,
127
+ UnitCostValue=commodity.value_amount,
128
+ UnitKg=commodity.weight,
129
+ Currency=commodity.value_currency,
130
+ Country=commodity.country_code,
131
+ IsDG=None,
132
+ itemSKU=commodity.sku,
133
+ ImageURL=commodity.metadata.get("image_url"),
134
+ DangerousGoodsItem=None,
135
+ Manufacturer=None,
136
+ )
137
+ for commodity in commodities
138
+ ],
91
139
  Packages=[
92
140
  seko.PackageType(
93
141
  Height=package.height.CM,
@@ -96,12 +144,32 @@ def rate_request(
96
144
  Width=package.width.CM,
97
145
  Kg=package.weight.KG,
98
146
  Name=lib.text(package.description, max=50),
147
+ PackageCode=None,
99
148
  Type=provider_units.PackagingType.map(
100
149
  package.packaging_type or "your_packaging"
101
150
  ).value,
102
151
  )
103
152
  for package in packages
104
153
  ],
154
+ ShipType=options.seko_ship_type.state,
155
+ CostCentreName=settings.connection_config.cost_centre_name.state,
156
+ CostCentreId=settings.connection_config.cost_centre_id.state,
157
+ CodValue=options.cash_on_delivery.state,
158
+ TaxCollected=options.seko_tax_collected.state,
159
+ AmountCollected=options.seko_amount_collected.state,
160
+ CIFValue=options.seko_cif_value.state,
161
+ FreightValue=options.seko_freight_value.state,
162
+ DutiesAndTaxesByReceiver=lib.identity(
163
+ customs.duty.paid_by == "recipient" if payload.customs else None
164
+ ),
165
+ TaxIds=[
166
+ seko.TaxIDType(
167
+ IdType=option.code,
168
+ IdNumber=option.state,
169
+ )
170
+ for key, option in customs.options.items()
171
+ if key in provider_units.CustomsOption and option.state is not None
172
+ ],
105
173
  )
106
174
 
107
175
  return lib.Serializable(request, lib.to_dict)
@@ -92,6 +92,7 @@ def shipment_request(
92
92
  ) -> lib.Serializable:
93
93
  shipper = lib.to_address(payload.shipper)
94
94
  recipient = lib.to_address(payload.recipient)
95
+ return_address = lib.to_address(payload.return_address or payload.shipper)
95
96
  packages = lib.to_packages(payload.parcels)
96
97
  service = provider_units.ShippingService.map(payload.service).value_or_key
97
98
  options = lib.to_shipping_options(
@@ -144,6 +145,8 @@ def shipment_request(
144
145
  DeliveryInstructions=options.origin_instructions.state,
145
146
  RecipientTaxId=shipper.tax_id,
146
147
  SendTrackingEmail=None,
148
+ SignOffName=None,
149
+ SignOffRole=None,
147
150
  ),
148
151
  Destination=seko.DestinationType(
149
152
  Id=options.seko_destination_id.state,
@@ -164,22 +167,27 @@ def shipment_request(
164
167
  DeliveryInstructions=options.destination_instructions.state,
165
168
  RecipientTaxId=recipient.tax_id,
166
169
  SendTrackingEmail=options.seko_send_tracking_email.state,
170
+ SignOffName=None,
171
+ SignOffRole=None,
167
172
  ),
168
173
  DangerousGoods=None,
169
174
  Commodities=[
170
175
  seko.CommodityType(
171
176
  Description=lib.identity(
172
- lib.text(commodity.description or commodity.title, max=35) or "item"
177
+ lib.text(commodity.description or commodity.title, max=200) or "item"
173
178
  ),
174
179
  HarmonizedCode=commodity.hs_code or "0000.00.00",
175
180
  Units=commodity.quantity,
176
181
  UnitValue=commodity.value_amount,
182
+ UnitCostValue=None,
177
183
  UnitKg=commodity.weight,
178
184
  Currency=commodity.value_currency,
179
185
  Country=commodity.origin_country,
180
186
  IsDG=None,
181
187
  itemSKU=commodity.sku,
188
+ ImageURL=commodity.metadata.get("image_url"),
182
189
  DangerousGoodsItem=None,
190
+ Manufacturer=None,
183
191
  )
184
192
  for commodity in commodities
185
193
  ],
@@ -194,6 +202,8 @@ def shipment_request(
194
202
  provider_units.PackagingType.map(package.packaging_type).value
195
203
  ),
196
204
  OverLabelBarcode=package.reference_number,
205
+ Id=package.options.seko_package_id.state,
206
+ PackageCode=package.reference_number,
197
207
  )
198
208
  for package in packages
199
209
  ],
@@ -212,7 +222,6 @@ def shipment_request(
212
222
  Carrier=options.seko_carrier.state,
213
223
  Service=service,
214
224
  CostCentreName=settings.connection_config.cost_center.state,
215
- CostCentreId=settings.connection_config.cost_center_id.state,
216
225
  CodValue=options.cash_on_delivery.state,
217
226
  TaxCollected=lib.identity(
218
227
  options.seko_tax_collected.state
@@ -225,6 +234,8 @@ def shipment_request(
225
234
  SendLabel="Y" if options.seko_send_label.state else None,
226
235
  LabelBranding=settings.connection_config.label_branding.state,
227
236
  InvoiceData=commercial_invoice,
237
+ CODValue=options.cash_on_delivery.state,
238
+ CostCentreId=settings.connection_config.cost_center_id.state,
228
239
  TaxIds=[
229
240
  seko.TaxIDType(
230
241
  IdType=option.code,
@@ -234,6 +245,31 @@ def shipment_request(
234
245
  if key in provider_units.CustomsOption and option.state is not None
235
246
  ],
236
247
  Outputs=[label_type],
248
+ IsSaturdayDelivery=options.seko_is_saturday_delivery.state,
249
+ IsSignatureRequired=options.seko_is_signature_required.state,
250
+ SpecialInstructions=options.seko_special_instructions.state,
251
+ InsuranceValue=options.seko_insurance_value.state,
252
+ InsuranceCurrency=options.currency.state,
253
+ ReturnAddress=seko.DestinationType(
254
+ Id=return_address.tax_id,
255
+ Name=return_address.company_name,
256
+ Address=seko.AddressType(
257
+ BuildingName=return_address.company_name,
258
+ StreetAddress=return_address.street,
259
+ Suburb=return_address.city,
260
+ City=return_address.state_code,
261
+ PostCode=return_address.postal_code,
262
+ CountryCode=return_address.country_code,
263
+ ),
264
+ ContactPerson=return_address.contact,
265
+ PhoneNumber=return_address.phone_number,
266
+ Email=return_address.email,
267
+ DeliveryInstructions=return_address.instructions,
268
+ RecipientTaxId=None,
269
+ SendTrackingEmail=None,
270
+ SignOffName=None,
271
+ SignOffRole=None,
272
+ ),
237
273
  )
238
274
 
239
275
  return lib.Serializable(
@@ -76,6 +76,19 @@ class ShippingOption(lib.Enum):
76
76
  seko_cif_value = lib.OptionEnum("CIFValue", float)
77
77
  seko_freight_value = lib.OptionEnum("FreightValue", float)
78
78
  seko_send_label = lib.OptionEnum("SendLabel", bool)
79
+ seko_special_instructions = lib.OptionEnum("SpecialInstructions")
80
+ seko_insurance_value = lib.OptionEnum("InsuranceValue", float)
81
+ seko_estimated_delivery_date = lib.OptionEnum("EstimatedDeliveryDate")
82
+ seko_dangerous_goods = lib.OptionEnum("DangerousGoods", bool)
83
+ seko_dg_additional_handling = lib.OptionEnum("DGAdditionalHandling")
84
+ seko_dg_hazchem_code = lib.OptionEnum("DGHazchemCode")
85
+ seko_dg_radioactive = lib.OptionEnum("DGRadioactive", bool)
86
+ seko_dg_cargo_aircraft_only = lib.OptionEnum("DGCargoAircraftOnly", bool)
87
+ seko_dg_limited_quantity = lib.OptionEnum("DGLimitedQuantity", bool)
88
+ seko_dg_total_quantity = lib.OptionEnum("DGTotalQuantity", int)
89
+ seko_dg_total_kg = lib.OptionEnum("DGTotalKg", float)
90
+ seko_dg_signoff_name = lib.OptionEnum("DGSignOffName")
91
+ seko_dg_signoff_role = lib.OptionEnum("DGSignOffRole")
79
92
 
80
93
  """ Unified Option type mapping """
81
94
  saturday_delivery = seko_is_saturday_delivery
@@ -119,8 +132,8 @@ class CustomsOption(lib.Enum):
119
132
  """ Unified Customs Identifier type mapping """
120
133
 
121
134
  ioss = IOSSNUMBER
122
- nip_number = VATNUMBER
123
135
  eori_number = EUEORINumber
136
+ vat_registration_number = VATNUMBER
124
137
 
125
138
 
126
139
  class TrackingStatus(lib.Enum):
@@ -98,6 +98,9 @@ class ConnectionConfig(lib.Enum):
98
98
  currency = lib.OptionEnum("currency", str)
99
99
  cost_center = lib.OptionEnum("cost_center", str)
100
100
  cost_center_id = lib.OptionEnum("cost_center_id", str)
101
+ cost_centre_name = lib.OptionEnum("cost_centre_name", str)
102
+ cost_centre_id = lib.OptionEnum("cost_centre_id", str)
103
+ label_branding = lib.OptionEnum("label_branding", str)
101
104
  shipping_options = lib.OptionEnum("shipping_options", list)
102
105
  shipping_services = lib.OptionEnum("shipping_services", list)
103
106
 
@@ -3,6 +3,59 @@ import jstruct
3
3
  import typing
4
4
 
5
5
 
6
+ @attr.s(auto_attribs=True)
7
+ class DangerousGoodsItemType:
8
+ Description: typing.Optional[str] = None
9
+ ClassOrDivision: typing.Optional[str] = None
10
+ UNorIDNo: typing.Optional[str] = None
11
+ PackingGroup: typing.Optional[str] = None
12
+ SubsidaryRisk: typing.Optional[str] = None
13
+ Packing: typing.Optional[str] = None
14
+ PackingInstr: typing.Optional[str] = None
15
+ Authorization: typing.Optional[str] = None
16
+
17
+
18
+ @attr.s(auto_attribs=True)
19
+ class ManufacturerType:
20
+ ManufacturerMID: typing.Optional[str] = None
21
+ Name: typing.Optional[str] = None
22
+ Address1: typing.Optional[str] = None
23
+ Address2: typing.Optional[str] = None
24
+ City: typing.Optional[str] = None
25
+ State: typing.Optional[str] = None
26
+ Zip: typing.Optional[str] = None
27
+
28
+
29
+ @attr.s(auto_attribs=True)
30
+ class CommodityType:
31
+ Description: typing.Optional[str] = None
32
+ HarmonizedCode: typing.Optional[str] = None
33
+ Units: typing.Optional[int] = None
34
+ UnitValue: typing.Optional[int] = None
35
+ UnitCostValue: typing.Optional[float] = None
36
+ UnitKg: typing.Optional[float] = None
37
+ Currency: typing.Optional[str] = None
38
+ Country: typing.Optional[str] = None
39
+ IsDG: typing.Optional[bool] = None
40
+ itemSKU: typing.Optional[str] = None
41
+ ImageURL: typing.Optional[str] = None
42
+ DangerousGoodsItem: typing.Optional[DangerousGoodsItemType] = jstruct.JStruct[DangerousGoodsItemType]
43
+ Manufacturer: typing.Optional[ManufacturerType] = jstruct.JStruct[ManufacturerType]
44
+
45
+
46
+ @attr.s(auto_attribs=True)
47
+ class DangerousGoodsType:
48
+ AdditionalHandlingInfo: typing.Optional[str] = None
49
+ HazchemCode: typing.Optional[str] = None
50
+ IsRadioActive: typing.Optional[bool] = None
51
+ CargoAircraftOnly: typing.Optional[bool] = None
52
+ IsDGLQ: typing.Optional[bool] = None
53
+ TotalQuantity: typing.Optional[int] = None
54
+ TotalKg: typing.Optional[float] = None
55
+ SignOffName: typing.Optional[str] = None
56
+ SignOffRole: typing.Optional[str] = None
57
+
58
+
6
59
  @attr.s(auto_attribs=True)
7
60
  class AddressType:
8
61
  BuildingName: typing.Optional[str] = None
@@ -19,10 +72,11 @@ class DestinationType:
19
72
  Name: typing.Optional[str] = None
20
73
  Address: typing.Optional[AddressType] = jstruct.JStruct[AddressType]
21
74
  ContactPerson: typing.Optional[str] = None
22
- PhoneNumber: typing.Optional[int] = None
75
+ PhoneNumber: typing.Optional[str] = None
23
76
  Email: typing.Optional[str] = None
24
77
  DeliveryInstructions: typing.Optional[str] = None
25
78
  RecipientTaxId: typing.Optional[int] = None
79
+ SendTrackingEmail: typing.Optional[bool] = None
26
80
 
27
81
 
28
82
  @attr.s(auto_attribs=True)
@@ -37,10 +91,34 @@ class PackageType:
37
91
  Type: typing.Optional[str] = None
38
92
 
39
93
 
94
+ @attr.s(auto_attribs=True)
95
+ class TaxIDType:
96
+ IdType: typing.Optional[str] = None
97
+ IdNumber: typing.Optional[str] = None
98
+
99
+
40
100
  @attr.s(auto_attribs=True)
41
101
  class RatingRequestType:
42
102
  DeliveryReference: typing.Optional[str] = None
103
+ Reference2: typing.Optional[str] = None
104
+ Reference3: typing.Optional[str] = None
105
+ Origin: typing.Optional[DestinationType] = jstruct.JStruct[DestinationType]
43
106
  Destination: typing.Optional[DestinationType] = jstruct.JStruct[DestinationType]
44
107
  IsSaturdayDelivery: typing.Optional[bool] = None
45
108
  IsSignatureRequired: typing.Optional[bool] = None
109
+ DangerousGoods: typing.Optional[DangerousGoodsType] = jstruct.JStruct[DangerousGoodsType]
110
+ Commodities: typing.Optional[typing.List[CommodityType]] = jstruct.JList[CommodityType]
46
111
  Packages: typing.Optional[typing.List[PackageType]] = jstruct.JList[PackageType]
112
+ Carrier: typing.Optional[str] = None
113
+ Service: typing.Optional[str] = None
114
+ ProductCategory: typing.Optional[str] = None
115
+ ShipType: typing.Optional[str] = None
116
+ CostCentreName: typing.Optional[str] = None
117
+ CostCentreId: typing.Optional[str] = None
118
+ CodValue: typing.Optional[float] = None
119
+ TaxCollected: typing.Optional[bool] = None
120
+ AmountCollected: typing.Optional[float] = None
121
+ CIFValue: typing.Optional[float] = None
122
+ FreightValue: typing.Optional[float] = None
123
+ DutiesAndTaxesByReceiver: typing.Optional[bool] = None
124
+ TaxIds: typing.Optional[typing.List[TaxIDType]] = jstruct.JList[TaxIDType]
@@ -17,6 +17,12 @@ class AvailableType:
17
17
  IsSaturdayDelivery: typing.Optional[bool] = None
18
18
  IsFreightForward: typing.Optional[bool] = None
19
19
  CarrierServiceType: typing.Optional[str] = None
20
+ EstimatedDeliveryDays: typing.Optional[int] = None
21
+ TransitTime: typing.Optional[str] = None
22
+ ServiceLevel: typing.Optional[str] = None
23
+ CarrierType: typing.Optional[int] = None
24
+ IsOvernight: typing.Optional[bool] = None
25
+ HasTrackPaks: typing.Optional[bool] = None
20
26
 
21
27
 
22
28
  @attr.s(auto_attribs=True)
@@ -24,18 +30,36 @@ class RejectedType:
24
30
  CarrierName: typing.Optional[str] = None
25
31
  DeliveryType: typing.Optional[str] = None
26
32
  Reason: typing.Optional[str] = None
33
+ CarrierId: typing.Optional[int] = None
34
+ QuoteId: typing.Optional[str] = None
35
+ ErrorCode: typing.Optional[str] = None
36
+ ErrorDetails: typing.Optional[str] = None
37
+
38
+
39
+ @attr.s(auto_attribs=True)
40
+ class SummaryType:
41
+ TotalAvailable: typing.Optional[int] = None
42
+ TotalRejected: typing.Optional[int] = None
43
+ TotalValidationErrors: typing.Optional[int] = None
44
+ Currency: typing.Optional[str] = None
45
+ RequestId: typing.Optional[str] = None
27
46
 
28
47
 
29
48
  @attr.s(auto_attribs=True)
30
- class ValidationErrorsType:
49
+ class ValidationErrorType:
31
50
  Property: typing.Optional[str] = None
32
51
  Message: typing.Optional[str] = None
33
52
  Key: typing.Optional[str] = None
34
53
  Value: typing.Optional[str] = None
54
+ ErrorCode: typing.Optional[str] = None
55
+ Severity: typing.Optional[str] = None
56
+ WarningCode: typing.Optional[str] = None
35
57
 
36
58
 
37
59
  @attr.s(auto_attribs=True)
38
60
  class RatingResponseType:
39
61
  Available: typing.Optional[typing.List[AvailableType]] = jstruct.JList[AvailableType]
40
62
  Rejected: typing.Optional[typing.List[RejectedType]] = jstruct.JList[RejectedType]
41
- ValidationErrors: typing.Optional[ValidationErrorsType] = jstruct.JStruct[ValidationErrorsType]
63
+ ValidationErrors: typing.Optional[typing.List[ValidationErrorType]] = jstruct.JList[ValidationErrorType]
64
+ Summary: typing.Optional[SummaryType] = jstruct.JStruct[SummaryType]
65
+ Warnings: typing.Optional[typing.List[ValidationErrorType]] = jstruct.JList[ValidationErrorType]
@@ -90,6 +90,8 @@ class PackageType:
90
90
  Name: typing.Optional[str] = None
91
91
  Type: typing.Optional[str] = None
92
92
  OverLabelBarcode: typing.Optional[str] = None
93
+ Id: typing.Optional[int] = None
94
+ PackageCode: typing.Optional[str] = None
93
95
 
94
96
 
95
97
  @attr.s(auto_attribs=True)
@@ -129,3 +131,10 @@ class ShippingRequestType:
129
131
  CostCentreId: typing.Optional[str] = None
130
132
  TaxIds: typing.Optional[typing.List[TaxIDType]] = jstruct.JList[TaxIDType]
131
133
  Outputs: typing.Optional[typing.List[str]] = None
134
+ IsSaturdayDelivery: typing.Optional[bool] = None
135
+ IsSignatureRequired: typing.Optional[bool] = None
136
+ EstimatedDeliveryDate: typing.Optional[str] = None
137
+ SpecialInstructions: typing.Optional[str] = None
138
+ InsuranceValue: typing.Optional[float] = None
139
+ InsuranceCurrency: typing.Optional[str] = None
140
+ ReturnAddress: typing.Optional[DestinationType] = jstruct.JStruct[DestinationType]
@@ -7,10 +7,17 @@ import typing
7
7
  class CommodityChangeType:
8
8
  OriginalDescription: typing.Optional[str] = None
9
9
  SuitableDescription: typing.Optional[str] = None
10
- OriginalHSCode: typing.Any = None
10
+ OriginalHSCode: typing.Optional[str] = None
11
11
  SuitableHsCode: typing.Optional[int] = None
12
12
 
13
13
 
14
+ @attr.s(auto_attribs=True)
15
+ class ItemDimensionsType:
16
+ Length: typing.Optional[float] = None
17
+ Width: typing.Optional[float] = None
18
+ Height: typing.Optional[float] = None
19
+
20
+
14
21
  @attr.s(auto_attribs=True)
15
22
  class ItemType:
16
23
  PartNo: typing.Optional[int] = None
@@ -26,6 +33,9 @@ class ItemType:
26
33
  BarcodeText: typing.Optional[str] = None
27
34
  TrackingBarcode: typing.Optional[str] = None
28
35
  TrackingBarcode2: typing.Optional[str] = None
36
+ ItemDescription: typing.Optional[str] = None
37
+ ItemWeight: typing.Optional[float] = None
38
+ ItemDimensions: typing.Optional[ItemDimensionsType] = jstruct.JStruct[ItemDimensionsType]
29
39
 
30
40
 
31
41
  @attr.s(auto_attribs=True)
@@ -44,16 +54,63 @@ class ConsignmentType:
44
54
  IsOvernight: typing.Optional[bool] = None
45
55
  HasTrackPaks: typing.Optional[bool] = None
46
56
  ConsignmentId: typing.Optional[int] = None
57
+ EstimatedDeliveryDate: typing.Optional[str] = None
58
+ ServiceLevel: typing.Optional[str] = None
59
+ TransitTime: typing.Optional[str] = None
47
60
  OutputFiles: typing.Optional[OutputFilesType] = jstruct.JStruct[OutputFilesType]
48
61
  Items: typing.Optional[typing.List[ItemType]] = jstruct.JList[ItemType]
49
62
 
50
63
 
64
+ @attr.s(auto_attribs=True)
65
+ class CustomsInfoType:
66
+ DeclarationNumber: typing.Optional[str] = None
67
+ CustomsValue: typing.Optional[float] = None
68
+ Currency: typing.Optional[str] = None
69
+ DutyPaidBy: typing.Optional[str] = None
70
+ TaxPaidBy: typing.Optional[str] = None
71
+
72
+
51
73
  @attr.s(auto_attribs=True)
52
74
  class ErrorType:
53
75
  Property: typing.Optional[str] = None
54
76
  Message: typing.Optional[str] = None
55
77
  Key: typing.Optional[str] = None
56
78
  Value: typing.Optional[str] = None
79
+ ErrorCode: typing.Optional[str] = None
80
+ Severity: typing.Optional[str] = None
81
+ WarningCode: typing.Optional[str] = None
82
+
83
+
84
+ @attr.s(auto_attribs=True)
85
+ class InsuranceInfoType:
86
+ InsuredValue: typing.Optional[float] = None
87
+ Currency: typing.Optional[str] = None
88
+ InsuranceType: typing.Optional[str] = None
89
+ Premium: typing.Optional[float] = None
90
+
91
+
92
+ @attr.s(auto_attribs=True)
93
+ class NotificationType:
94
+ Type: typing.Optional[str] = None
95
+ Recipient: typing.Optional[str] = None
96
+ Subject: typing.Optional[str] = None
97
+ Message: typing.Optional[str] = None
98
+
99
+
100
+ @attr.s(auto_attribs=True)
101
+ class ReturnInfoType:
102
+ ReturnTrackingNumber: typing.Optional[str] = None
103
+ ReturnLabelUrl: typing.Optional[str] = None
104
+ ReturnInstructions: typing.Optional[str] = None
105
+
106
+
107
+ @attr.s(auto_attribs=True)
108
+ class SummaryType:
109
+ TotalConsignments: typing.Optional[int] = None
110
+ TotalCost: typing.Optional[float] = None
111
+ Currency: typing.Optional[str] = None
112
+ RequestId: typing.Optional[str] = None
113
+ ProcessingTime: typing.Optional[str] = None
57
114
 
58
115
 
59
116
  @attr.s(auto_attribs=True)
@@ -67,13 +124,18 @@ class ShippingResponseType:
67
124
  HasTrackPaks: typing.Optional[bool] = None
68
125
  Message: typing.Optional[str] = None
69
126
  Errors: typing.Optional[typing.List[ErrorType]] = jstruct.JList[ErrorType]
127
+ Warnings: typing.Optional[typing.List[ErrorType]] = jstruct.JList[ErrorType]
70
128
  SiteId: typing.Optional[int] = None
71
129
  Consignments: typing.Optional[typing.List[ConsignmentType]] = jstruct.JList[ConsignmentType]
72
130
  DestinationPort: typing.Optional[str] = None
73
131
  Downloads: typing.Optional[typing.List[typing.Any]] = None
74
132
  CommodityChanges: typing.Optional[typing.List[CommodityChangeType]] = jstruct.JList[CommodityChangeType]
75
133
  CarrierType: typing.Optional[int] = None
76
- AlertPath: typing.Any = None
77
- Notifications: typing.Optional[typing.List[typing.Any]] = None
134
+ AlertPath: typing.Optional[str] = None
135
+ Notifications: typing.Optional[typing.List[NotificationType]] = jstruct.JList[NotificationType]
78
136
  InvoiceResponse: typing.Optional[str] = None
79
137
  LogoPath: typing.Optional[str] = None
138
+ Summary: typing.Optional[SummaryType] = jstruct.JStruct[SummaryType]
139
+ CustomsInfo: typing.Optional[CustomsInfoType] = jstruct.JStruct[CustomsInfoType]
140
+ InsuranceInfo: typing.Optional[InsuranceInfoType] = jstruct.JStruct[InsuranceInfoType]
141
+ ReturnInfo: typing.Optional[ReturnInfoType] = jstruct.JStruct[ReturnInfoType]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: karrio_seko
3
- Version: 2025.5rc5
3
+ Version: 2025.5rc7
4
4
  Summary: Karrio - SEKO Logistics Shipping Extension
5
5
  Author-email: karrio <hello@karrio.io>
6
6
  License-Expression: Apache-2.0
@@ -6,23 +6,23 @@ karrio/plugins/seko/__init__.py,sha256=7BgFvF8_VRy3CKFmGv3iiBs3KJK_0wsAde8473Nl7
6
6
  karrio/providers/seko/__init__.py,sha256=IzIUO4eo-TjsNmZeJ85u4yziUgnVu_uSg4dVct20e9U,527
7
7
  karrio/providers/seko/error.py,sha256=0tcIO-sZSp039qmMy6M5AjJXOBxYo25Nxe3YzQOTkbM,2371
8
8
  karrio/providers/seko/manifest.py,sha256=1r9yenrHGeQeOhacuHw4U28mE2cK0fanR-9pRKEH83w,1915
9
- karrio/providers/seko/rate.py,sha256=I_7tKF4IzlMijsFI69LPv0i8HKIWBpvTHNxMn6bk6pE,3849
9
+ karrio/providers/seko/rate.py,sha256=-7j3nLgFVVm2ssybrWBSI1vLxeg6XdoTKY8tdS8YiVw,6671
10
10
  karrio/providers/seko/tracking.py,sha256=yhwJ0M0dPpC8Swe_z3P__aJ5XjDxLM7f4W_CIr4oMR8,3093
11
- karrio/providers/seko/units.py,sha256=Z9dhwBiWE5jo4JSYJLsIOBsiAG_OiK1aUDRBt8wnoFo,8847
12
- karrio/providers/seko/utils.py,sha256=LaUgTpDuKPC_7u1E5c4ukjJEFU-3V5RXDvJkoPu6f1A,3725
11
+ karrio/providers/seko/units.py,sha256=EXwaMmyNwWNnJvtG1Tvct86fOlT_CsR2TnULT0_8FcQ,9729
12
+ karrio/providers/seko/utils.py,sha256=YWoDTiPqhsi77_NxrBs87fA5yY_O33jwdPiNPt4eoCs,3906
13
13
  karrio/providers/seko/shipment/__init__.py,sha256=lmk_JKKObr83IAEeITBbVefCO-FeypZB8_jGIojIatA,225
14
14
  karrio/providers/seko/shipment/cancel.py,sha256=O5VsuMidTRgpAikTIA5GbIbVSuIy0UCMk1LO3M9oLzk,1812
15
- karrio/providers/seko/shipment/create.py,sha256=-iKaMjhcR_6-bWNqqQzR4UZVgQ0KON3FppF3tZXCpes,9470
15
+ karrio/providers/seko/shipment/create.py,sha256=zwxZ9AhSj4jJL4Jlqb_70UJDoQlRIRWgmYtwblrj0hI,11119
16
16
  karrio/schemas/seko/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  karrio/schemas/seko/error_response.py,sha256=PEcgmhsyboVfWL8BcYhFT_MppXUK5n3XYAv4ANMVWds,254
18
18
  karrio/schemas/seko/manifest_response.py,sha256=KuO0CjtAw9ffhZXMEBQPEfymgsCSnshnPWcR7CTXy48,674
19
- karrio/schemas/seko/rating_request.py,sha256=BkFIuE7mmF1wbzJ6JHD_hID5hcUr6KCUbjbfRi5xOA8,1523
20
- karrio/schemas/seko/rating_response.py,sha256=sPckTvhyLuj78-FUPIohZW50fE72ieNAHyROujEo_4I,1370
21
- karrio/schemas/seko/shipping_request.py,sha256=bbgSzoPWoHJDnB8gWoUBc0BwnAfxGj57RA9RX2UXSwQ,4997
22
- karrio/schemas/seko/shipping_response.py,sha256=WhPbg-1iwLnWjnLvtfegi18Dg7NDppbjLx3sxUsGAXI,2967
19
+ karrio/schemas/seko/rating_request.py,sha256=VfIMBDYGMAp5DsqBuC0wX2XQCl_agXyGFJfdASvTpAo,4648
20
+ karrio/schemas/seko/rating_response.py,sha256=DZJgnP9YJWXy-mABPLD6YcdmE0Z4oVXosMNVXnBnl4k,2422
21
+ karrio/schemas/seko/shipping_request.py,sha256=P7vFsGB1IZDfH85mq8pv4qsIL5tYRGsAWWRJcryfv3U,5481
22
+ karrio/schemas/seko/shipping_response.py,sha256=a-cBMrZyUu9y5OOqgt7VWO7-LJ1mWVuZRWm7ygUY12I,5289
23
23
  karrio/schemas/seko/tracking_response.py,sha256=vWhaKhWP4ZSor5cVZ2h8CvZMxE3h87e4tDXfPAgCsF4,702
24
- karrio_seko-2025.5rc5.dist-info/METADATA,sha256=x36pVGxIQY8gO6Vc8efVzedHJALS47WQFeXxTbgFedw,990
25
- karrio_seko-2025.5rc5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
26
- karrio_seko-2025.5rc5.dist-info/entry_points.txt,sha256=38t4NWTw7ZuhE4-KYDHI3ZAN-PKrfduhrwTofZuhDxg,53
27
- karrio_seko-2025.5rc5.dist-info/top_level.txt,sha256=FZCY8Nwft8oEGHdl--xku8P3TrnOxu5dETEU_fWpRSM,20
28
- karrio_seko-2025.5rc5.dist-info/RECORD,,
24
+ karrio_seko-2025.5rc7.dist-info/METADATA,sha256=mpeT0MImbngC_hdwpYVVnOtCvVeddXG1Y8h8FqyExkA,990
25
+ karrio_seko-2025.5rc7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
26
+ karrio_seko-2025.5rc7.dist-info/entry_points.txt,sha256=38t4NWTw7ZuhE4-KYDHI3ZAN-PKrfduhrwTofZuhDxg,53
27
+ karrio_seko-2025.5rc7.dist-info/top_level.txt,sha256=FZCY8Nwft8oEGHdl--xku8P3TrnOxu5dETEU_fWpRSM,20
28
+ karrio_seko-2025.5rc7.dist-info/RECORD,,