karrio-spring 2026.1.3__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.
- karrio/mappers/spring/__init__.py +3 -0
- karrio/mappers/spring/mapper.py +53 -0
- karrio/mappers/spring/proxy.py +71 -0
- karrio/mappers/spring/settings.py +33 -0
- karrio/plugins/spring/__init__.py +20 -0
- karrio/providers/spring/__init__.py +12 -0
- karrio/providers/spring/error.py +48 -0
- karrio/providers/spring/shipment/__init__.py +9 -0
- karrio/providers/spring/shipment/cancel.py +54 -0
- karrio/providers/spring/shipment/create.py +242 -0
- karrio/providers/spring/tracking.py +142 -0
- karrio/providers/spring/units.py +382 -0
- karrio/providers/spring/utils.py +34 -0
- karrio/schemas/spring/__init__.py +0 -0
- karrio/schemas/spring/error_response.py +9 -0
- karrio/schemas/spring/shipment_cancel_request.py +16 -0
- karrio/schemas/spring/shipment_cancel_response.py +16 -0
- karrio/schemas/spring/shipment_request.py +98 -0
- karrio/schemas/spring/shipment_response.py +75 -0
- karrio/schemas/spring/tracking_request.py +16 -0
- karrio/schemas/spring/tracking_response.py +49 -0
- karrio_spring-2026.1.3.dist-info/METADATA +44 -0
- karrio_spring-2026.1.3.dist-info/RECORD +26 -0
- karrio_spring-2026.1.3.dist-info/WHEEL +5 -0
- karrio_spring-2026.1.3.dist-info/entry_points.txt +2 -0
- karrio_spring-2026.1.3.dist-info/top_level.txt +3 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import attr
|
|
2
|
+
import jstruct
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@attr.s(auto_attribs=True)
|
|
7
|
+
class AddressType:
|
|
8
|
+
Name: typing.Optional[str] = None
|
|
9
|
+
Company: typing.Optional[str] = None
|
|
10
|
+
AddressLine1: typing.Optional[str] = None
|
|
11
|
+
AddressLine2: typing.Optional[str] = None
|
|
12
|
+
AddressLine3: typing.Optional[str] = None
|
|
13
|
+
City: typing.Optional[str] = None
|
|
14
|
+
State: typing.Optional[str] = None
|
|
15
|
+
Zip: typing.Optional[str] = None
|
|
16
|
+
Country: typing.Optional[str] = None
|
|
17
|
+
Phone: typing.Optional[str] = None
|
|
18
|
+
Email: typing.Optional[str] = None
|
|
19
|
+
Vat: typing.Optional[str] = None
|
|
20
|
+
PudoLocationId: typing.Optional[str] = None
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@attr.s(auto_attribs=True)
|
|
24
|
+
class ConsignorAddressType:
|
|
25
|
+
Name: typing.Optional[str] = None
|
|
26
|
+
Company: typing.Optional[str] = None
|
|
27
|
+
AddressLine1: typing.Optional[str] = None
|
|
28
|
+
AddressLine2: typing.Optional[str] = None
|
|
29
|
+
AddressLine3: typing.Optional[str] = None
|
|
30
|
+
City: typing.Optional[str] = None
|
|
31
|
+
State: typing.Optional[str] = None
|
|
32
|
+
Zip: typing.Optional[str] = None
|
|
33
|
+
Country: typing.Optional[str] = None
|
|
34
|
+
Phone: typing.Optional[str] = None
|
|
35
|
+
Email: typing.Optional[str] = None
|
|
36
|
+
Vat: typing.Optional[str] = None
|
|
37
|
+
Eori: typing.Optional[str] = None
|
|
38
|
+
NlVat: typing.Optional[str] = None
|
|
39
|
+
EuEori: typing.Optional[str] = None
|
|
40
|
+
GbEori: typing.Optional[str] = None
|
|
41
|
+
Ioss: typing.Optional[str] = None
|
|
42
|
+
LocalTaxNumber: typing.Optional[str] = None
|
|
43
|
+
Art23: typing.Optional[str] = None
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@attr.s(auto_attribs=True)
|
|
47
|
+
class ProductType:
|
|
48
|
+
Description: typing.Optional[str] = None
|
|
49
|
+
Sku: typing.Optional[str] = None
|
|
50
|
+
HsCode: typing.Optional[str] = None
|
|
51
|
+
OriginCountry: typing.Optional[str] = None
|
|
52
|
+
ImgUrl: typing.Optional[str] = None
|
|
53
|
+
PurchaseUrl: typing.Optional[str] = None
|
|
54
|
+
Quantity: typing.Optional[str] = None
|
|
55
|
+
Value: typing.Optional[str] = None
|
|
56
|
+
Weight: typing.Optional[str] = None
|
|
57
|
+
DaysForReturn: typing.Optional[str] = None
|
|
58
|
+
NonReturnable: typing.Optional[str] = None
|
|
59
|
+
PreferentialOriginTag: typing.Optional[str] = None
|
|
60
|
+
BondedGoods: typing.Optional[str] = None
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@attr.s(auto_attribs=True)
|
|
64
|
+
class ShipmentType:
|
|
65
|
+
LabelFormat: typing.Optional[str] = None
|
|
66
|
+
ShipperReference: typing.Optional[str] = None
|
|
67
|
+
OrderReference: typing.Optional[str] = None
|
|
68
|
+
OrderDate: typing.Optional[str] = None
|
|
69
|
+
DisplayId: typing.Optional[str] = None
|
|
70
|
+
InvoiceNumber: typing.Optional[str] = None
|
|
71
|
+
Service: typing.Optional[str] = None
|
|
72
|
+
Weight: typing.Optional[str] = None
|
|
73
|
+
WeightUnit: typing.Optional[str] = None
|
|
74
|
+
Length: typing.Optional[str] = None
|
|
75
|
+
Width: typing.Optional[str] = None
|
|
76
|
+
Height: typing.Optional[str] = None
|
|
77
|
+
DimUnit: typing.Optional[str] = None
|
|
78
|
+
Value: typing.Optional[str] = None
|
|
79
|
+
ShippingValue: typing.Optional[str] = None
|
|
80
|
+
Currency: typing.Optional[str] = None
|
|
81
|
+
CustomsDuty: typing.Optional[str] = None
|
|
82
|
+
Description: typing.Optional[str] = None
|
|
83
|
+
DeclarationType: typing.Optional[str] = None
|
|
84
|
+
DangerousGoods: typing.Optional[str] = None
|
|
85
|
+
Source: typing.Optional[str] = None
|
|
86
|
+
ExportCarrierName: typing.Optional[str] = None
|
|
87
|
+
ExportAwb: typing.Optional[str] = None
|
|
88
|
+
ConsignorAddress: typing.Optional[ConsignorAddressType] = jstruct.JStruct[ConsignorAddressType]
|
|
89
|
+
ConsigneeAddress: typing.Optional[AddressType] = jstruct.JStruct[AddressType]
|
|
90
|
+
ImporterAddress: typing.Optional[AddressType] = jstruct.JStruct[AddressType]
|
|
91
|
+
Products: typing.Optional[typing.List[ProductType]] = jstruct.JList[ProductType]
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@attr.s(auto_attribs=True)
|
|
95
|
+
class ShipmentRequestType:
|
|
96
|
+
Apikey: typing.Optional[str] = None
|
|
97
|
+
Command: typing.Optional[str] = None
|
|
98
|
+
Shipment: typing.Optional[ShipmentType] = jstruct.JStruct[ShipmentType]
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import attr
|
|
2
|
+
import jstruct
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@attr.s(auto_attribs=True)
|
|
7
|
+
class CalculatedTotalType:
|
|
8
|
+
sourceValue: typing.Optional[float] = None
|
|
9
|
+
destinationValue: typing.Optional[float] = None
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@attr.s(auto_attribs=True)
|
|
13
|
+
class ProductType:
|
|
14
|
+
hs6code: typing.Optional[str] = None
|
|
15
|
+
commodityCode: typing.Optional[str] = None
|
|
16
|
+
value: typing.Optional[CalculatedTotalType] = jstruct.JStruct[CalculatedTotalType]
|
|
17
|
+
description: typing.Optional[str] = None
|
|
18
|
+
percentageDutyRate: typing.Optional[int] = None
|
|
19
|
+
taxRate: typing.Optional[float] = None
|
|
20
|
+
dutyValue: typing.Optional[CalculatedTotalType] = jstruct.JStruct[CalculatedTotalType]
|
|
21
|
+
taxValue: typing.Optional[CalculatedTotalType] = jstruct.JStruct[CalculatedTotalType]
|
|
22
|
+
productTotal: typing.Optional[CalculatedTotalType] = jstruct.JStruct[CalculatedTotalType]
|
|
23
|
+
hs6codeDescription: typing.Optional[str] = None
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@attr.s(auto_attribs=True)
|
|
27
|
+
class LandedCostType:
|
|
28
|
+
requestId: typing.Optional[str] = None
|
|
29
|
+
sourceCountry: typing.Optional[str] = None
|
|
30
|
+
sourceCurrency: typing.Optional[str] = None
|
|
31
|
+
destinationCountry: typing.Optional[str] = None
|
|
32
|
+
destinationCurrency: typing.Optional[str] = None
|
|
33
|
+
convertCurrency: typing.Optional[bool] = None
|
|
34
|
+
currencyExchange: typing.Optional[str] = None
|
|
35
|
+
exchangeRate: typing.Optional[float] = None
|
|
36
|
+
rateLastUpdated: typing.Optional[str] = None
|
|
37
|
+
shippingValue: typing.Optional[CalculatedTotalType] = jstruct.JStruct[CalculatedTotalType]
|
|
38
|
+
products: typing.Optional[typing.List[ProductType]] = jstruct.JList[ProductType]
|
|
39
|
+
productRawTotal: typing.Optional[CalculatedTotalType] = jstruct.JStruct[CalculatedTotalType]
|
|
40
|
+
calculatedTotal: typing.Optional[CalculatedTotalType] = jstruct.JStruct[CalculatedTotalType]
|
|
41
|
+
totalTax: typing.Optional[CalculatedTotalType] = jstruct.JStruct[CalculatedTotalType]
|
|
42
|
+
totalDuty: typing.Optional[CalculatedTotalType] = jstruct.JStruct[CalculatedTotalType]
|
|
43
|
+
isError: typing.Optional[bool] = None
|
|
44
|
+
errorCode: typing.Optional[int] = None
|
|
45
|
+
notes: typing.Optional[str] = None
|
|
46
|
+
generatedDate: typing.Optional[str] = None
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@attr.s(auto_attribs=True)
|
|
50
|
+
class DdpInfoType:
|
|
51
|
+
requestId: typing.Optional[str] = None
|
|
52
|
+
landedCost: typing.Optional[LandedCostType] = jstruct.JStruct[LandedCostType]
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@attr.s(auto_attribs=True)
|
|
56
|
+
class ShipmentType:
|
|
57
|
+
TrackingNumber: typing.Optional[str] = None
|
|
58
|
+
ShipperReference: typing.Optional[str] = None
|
|
59
|
+
DisplayId: typing.Optional[str] = None
|
|
60
|
+
Service: typing.Optional[str] = None
|
|
61
|
+
Carrier: typing.Optional[str] = None
|
|
62
|
+
CarrierTrackingNumber: typing.Optional[str] = None
|
|
63
|
+
CarrierLocalTrackingNumber: typing.Optional[str] = None
|
|
64
|
+
CarrierTrackingUrl: typing.Optional[str] = None
|
|
65
|
+
LabelFormat: typing.Optional[str] = None
|
|
66
|
+
LabelType: typing.Optional[str] = None
|
|
67
|
+
LabelImage: typing.Optional[str] = None
|
|
68
|
+
DdpInfo: typing.Optional[DdpInfoType] = jstruct.JStruct[DdpInfoType]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@attr.s(auto_attribs=True)
|
|
72
|
+
class ShipmentResponseType:
|
|
73
|
+
ErrorLevel: typing.Optional[int] = None
|
|
74
|
+
Error: typing.Optional[str] = None
|
|
75
|
+
Shipment: typing.Optional[ShipmentType] = jstruct.JStruct[ShipmentType]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import attr
|
|
2
|
+
import jstruct
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@attr.s(auto_attribs=True)
|
|
7
|
+
class ShipmentType:
|
|
8
|
+
TrackingNumber: typing.Optional[str] = None
|
|
9
|
+
ShipperReference: typing.Optional[str] = None
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@attr.s(auto_attribs=True)
|
|
13
|
+
class TrackingRequestType:
|
|
14
|
+
Apikey: typing.Optional[str] = None
|
|
15
|
+
Command: typing.Optional[str] = None
|
|
16
|
+
Shipment: typing.Optional[ShipmentType] = jstruct.JStruct[ShipmentType]
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import attr
|
|
2
|
+
import jstruct
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@attr.s(auto_attribs=True)
|
|
7
|
+
class ConsigneeAddressType:
|
|
8
|
+
Name: typing.Optional[str] = None
|
|
9
|
+
City: typing.Optional[str] = None
|
|
10
|
+
State: typing.Optional[str] = None
|
|
11
|
+
Zip: typing.Optional[str] = None
|
|
12
|
+
Country: typing.Optional[str] = None
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@attr.s(auto_attribs=True)
|
|
16
|
+
class EventType:
|
|
17
|
+
Timestamp: typing.Optional[int] = None
|
|
18
|
+
DateTime: typing.Optional[str] = None
|
|
19
|
+
Country: typing.Optional[str] = None
|
|
20
|
+
City: typing.Optional[str] = None
|
|
21
|
+
State: typing.Optional[str] = None
|
|
22
|
+
Zip: typing.Optional[str] = None
|
|
23
|
+
Code: typing.Optional[int] = None
|
|
24
|
+
Description: typing.Optional[str] = None
|
|
25
|
+
CarrierCode: typing.Optional[str] = None
|
|
26
|
+
CarrierDescription: typing.Optional[str] = None
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@attr.s(auto_attribs=True)
|
|
30
|
+
class ShipmentType:
|
|
31
|
+
TrackingNumber: typing.Optional[str] = None
|
|
32
|
+
ShipperReference: typing.Optional[str] = None
|
|
33
|
+
DisplayId: typing.Optional[str] = None
|
|
34
|
+
Service: typing.Optional[str] = None
|
|
35
|
+
Carrier: typing.Optional[str] = None
|
|
36
|
+
CarrierTrackingNumber: typing.Optional[str] = None
|
|
37
|
+
CarrierLocalTrackingNumber: typing.Optional[str] = None
|
|
38
|
+
CarrierTrackingUrl: typing.Optional[str] = None
|
|
39
|
+
Weight: typing.Optional[str] = None
|
|
40
|
+
WeightUnit: typing.Optional[str] = None
|
|
41
|
+
ConsigneeAddress: typing.Optional[ConsigneeAddressType] = jstruct.JStruct[ConsigneeAddressType]
|
|
42
|
+
Events: typing.Optional[typing.List[EventType]] = jstruct.JList[EventType]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@attr.s(auto_attribs=True)
|
|
46
|
+
class TrackingResponseType:
|
|
47
|
+
ErrorLevel: typing.Optional[int] = None
|
|
48
|
+
Error: typing.Optional[str] = None
|
|
49
|
+
Shipment: typing.Optional[ShipmentType] = jstruct.JStruct[ShipmentType]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: karrio_spring
|
|
3
|
+
Version: 2026.1.3
|
|
4
|
+
Summary: Karrio - Spring Shipping Extension
|
|
5
|
+
Author-email: karrio <hello@karrio.io>
|
|
6
|
+
License-Expression: LGPL-3.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/karrioapi/karrio
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Requires-Python: >=3.11
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: karrio
|
|
14
|
+
|
|
15
|
+
# karrio.spring
|
|
16
|
+
|
|
17
|
+
This package is a Spring extension of the [karrio](https://pypi.org/project/karrio) multi carrier shipping SDK.
|
|
18
|
+
|
|
19
|
+
## Requirements
|
|
20
|
+
|
|
21
|
+
`Python 3.11+`
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pip install karrio.spring
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
import karrio.sdk as karrio
|
|
33
|
+
from karrio.mappers.spring.settings import Settings
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# Initialize a carrier gateway
|
|
37
|
+
spring = karrio.gateway["spring"].create(
|
|
38
|
+
Settings(
|
|
39
|
+
...
|
|
40
|
+
)
|
|
41
|
+
)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Check the [Karrio Mutli-carrier SDK docs](https://docs.karrio.io) for Shipping API requests
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
karrio/mappers/spring/__init__.py,sha256=438dGr0HApbPM25SffA5OJHRp7B_8qsbdbGBQhRr80k,145
|
|
2
|
+
karrio/mappers/spring/mapper.py,sha256=aPE2dCeQvNkBtVjESILmRpUQ8pSa0nT-i7A-A8LtXd8,2072
|
|
3
|
+
karrio/mappers/spring/proxy.py,sha256=LreFfH55hvRQxMYOa6FiuvNOjnceo1AvsRfMGTJDUeI,2546
|
|
4
|
+
karrio/mappers/spring/settings.py,sha256=PhFLpSzjwtCk6C7oMk_Z9ok-nMISw48NgAIM10xgaEg,1024
|
|
5
|
+
karrio/plugins/spring/__init__.py,sha256=igwmn6DoWVijnsqGWbKEfcTSgxyEILO1BFSCWwYiynE,519
|
|
6
|
+
karrio/providers/spring/__init__.py,sha256=M304FzXhCriZNNhuuvATJIXGWvMm1WmwrjI4dviB7V4,353
|
|
7
|
+
karrio/providers/spring/error.py,sha256=SJCnfpzoSRV7ndWZwwBoUNMKF6wpmUrlwI0TiftmVsk,1411
|
|
8
|
+
karrio/providers/spring/tracking.py,sha256=8rAP3XxwkpKVUrQDSLFO5Js9eNsoM22VoxaA8o9Mfcg,5092
|
|
9
|
+
karrio/providers/spring/units.py,sha256=pbMjDAHsSruB05s-0Qu_v7pAs3kUwr-HyElNNtKwaug,12710
|
|
10
|
+
karrio/providers/spring/utils.py,sha256=bz-zo1Vmii9Ilc_3xJg1VtSZA5nDqvIGS-1kXXhDmMU,760
|
|
11
|
+
karrio/providers/spring/shipment/__init__.py,sha256=GWbrHT_bmYJRGXlEKLMs_dNjhd3dEfRTILSj06Ril4E,229
|
|
12
|
+
karrio/providers/spring/shipment/cancel.py,sha256=QIe12TH071e1VthzRr71qehXDAhEQI9hn5_pYzBr7nM,1674
|
|
13
|
+
karrio/providers/spring/shipment/create.py,sha256=TJkkZYi4a8jbhMzsgJ-Hc0M0Js-q7q4j-CGhcj7u4sQ,9423
|
|
14
|
+
karrio/schemas/spring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
karrio/schemas/spring/error_response.py,sha256=6093kbnpPtbXjSdMSHZziwXrhvoUMf3nWyeBIVF_rus,178
|
|
16
|
+
karrio/schemas/spring/shipment_cancel_request.py,sha256=7sRpwCB3L_1vY_byexuVUd-YcvWAXt6fueVP7FHfm_A,407
|
|
17
|
+
karrio/schemas/spring/shipment_cancel_response.py,sha256=X7CUtVwYn1TGj7NM31tiCR1mSC7k9Dx9ttMKxNvi07g,410
|
|
18
|
+
karrio/schemas/spring/shipment_request.py,sha256=CTGheaCI4Uug6cn7p_-oGOr3WL6dloWbNaFWKvtoWww,3687
|
|
19
|
+
karrio/schemas/spring/shipment_response.py,sha256=Od-buOvkSwjNeOXsao02L3_IJgvRucKeBZuUFuz25r0,3136
|
|
20
|
+
karrio/schemas/spring/tracking_request.py,sha256=hWlDQGbyCfb_ch_qmAAEoQMgYEdGX3w9N5xRPWUYoiI,401
|
|
21
|
+
karrio/schemas/spring/tracking_response.py,sha256=JKyCljOZQmlST_IszIsOZsZszuq4yVHsI5wIlDCGKLg,1675
|
|
22
|
+
karrio_spring-2026.1.3.dist-info/METADATA,sha256=UUT92o0jYVviVInI7veO4ZyntvIzE_B92Dklvq-njkc,982
|
|
23
|
+
karrio_spring-2026.1.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
24
|
+
karrio_spring-2026.1.3.dist-info/entry_points.txt,sha256=WCJdc5iA3UM-nVymOa0w2AkbGjawBoh3FLW6lxvKsL8,57
|
|
25
|
+
karrio_spring-2026.1.3.dist-info/top_level.txt,sha256=FZCY8Nwft8oEGHdl--xku8P3TrnOxu5dETEU_fWpRSM,20
|
|
26
|
+
karrio_spring-2026.1.3.dist-info/RECORD,,
|