Skip to content

Commit 5d10264

Browse files
fix(mydhl): replace invalid PackagingType codes with DHL API spec values and make typeCode optional
1 parent 285b707 commit 5d10264

File tree

4 files changed

+34
-17
lines changed

4 files changed

+34
-17
lines changed

modules/connectors/mydhl/karrio/providers/mydhl/pickup/create.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,11 @@ def pickup_request(
156156
unitOfMeasurement="metric",
157157
packages=[
158158
pickup_req.PackageType(
159-
typeCode=provider_units.PackagingType.map(package.packaging_type or "your_packaging").value,
159+
typeCode=lib.identity(
160+
provider_units.PackagingType.map(package.packaging_type).value
161+
if package.packaging_type
162+
else None
163+
),
160164
weight=package.weight.value,
161165
dimensions=pickup_req.DimensionsType(
162166
length=package.length.value,

modules/connectors/mydhl/karrio/providers/mydhl/pickup/update.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,11 @@ def pickup_update_request(
146146
unitOfMeasurement="metric",
147147
packages=[
148148
pickup_req.PackageType(
149-
typeCode=provider_units.PackagingType.map(package.packaging_type or "your_packaging").value,
149+
typeCode=lib.identity(
150+
provider_units.PackagingType.map(package.packaging_type).value
151+
if package.packaging_type
152+
else None
153+
),
150154
weight=package.weight.value,
151155
dimensions=pickup_req.DimensionsType(
152156
length=package.length.value,

modules/connectors/mydhl/karrio/providers/mydhl/shipment/create.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,9 +263,11 @@ def shipment_request(
263263
content=mydhl_req.ContentType(
264264
packages=[
265265
mydhl_req.PackageType(
266-
typeCode=provider_units.PackagingType.map(
267-
package.packaging_type or "your_packaging"
268-
).value,
266+
typeCode=lib.identity(
267+
provider_units.PackagingType.map(package.packaging_type).value
268+
if package.packaging_type
269+
else None
270+
),
269271
weight=package.weight.value,
270272
dimensions=lib.identity(
271273
mydhl_req.DimensionsType(

modules/connectors/mydhl/karrio/providers/mydhl/units.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,39 @@
1313

1414

1515
class PackagingType(lib.StrEnum):
16-
"""DHL Express packaging types (typeCode values)."""
16+
"""DHL Express packaging types (typeCode values).
17+
18+
From DHL API spec v3.1.1 — typeCode is optional; omitting it
19+
defaults to customer packaging.
20+
"""
1721

1822
# DHL branded packaging
19-
mydhl_flyer = "FLY"
20-
mydhl_box_2 = "2BC"
23+
mydhl_card_envelope_imperial = "1CE"
24+
mydhl_box_2_cube = "2BC"
25+
mydhl_box_2_pizza = "2BP"
26+
mydhl_box_2_shoe = "2BX"
2127
mydhl_box_3 = "3BX"
2228
mydhl_box_4 = "4BX"
2329
mydhl_box_5 = "5BX"
2430
mydhl_box_6 = "6BX"
2531
mydhl_box_7 = "7BX"
2632
mydhl_box_8 = "8BX"
27-
mydhl_express_envelope = "3"
28-
mydhl_jumbo_box = "JB"
29-
mydhl_jumbo_box_junior = "JJ"
30-
31-
# Customer packaging
32-
mydhl_customer_packaging = "YP"
33+
mydhl_card_envelope = "CE1"
34+
mydhl_tube_large = "TBL"
35+
mydhl_tube_small = "TBS"
36+
mydhl_bottle_box_1 = "WB1"
37+
mydhl_bottle_box_2 = "WB2"
38+
mydhl_bottle_box_3 = "WB3"
39+
mydhl_bottle_box_6 = "WB6"
40+
mydhl_express_envelope = "XPD"
3341

3442
""" Unified Packaging type mapping """
3543
envelope = mydhl_express_envelope
36-
pak = mydhl_flyer
37-
tube = mydhl_box_2
44+
pak = mydhl_card_envelope
45+
tube = mydhl_tube_small
3846
small_box = mydhl_box_3
3947
medium_box = mydhl_box_5
4048
large_box = mydhl_box_8
41-
your_packaging = mydhl_customer_packaging
4249

4350

4451
class ShippingService(lib.StrEnum):

0 commit comments

Comments
 (0)