Raw schema
{
"type": "object",
"properties": {
"equipmentCode": {
"description": "Equipment code, e.g. 40HC (see list_equipment). Omit to auto right-size.",
"type": "string"
},
"mode": {
"default": "sea",
"description": "Transport mode — scopes auto right-size to usable equipment (sea→containers, road→trucks, air→ULDs). Ignored when equipmentCode is given.",
"type": "string",
"enum": [
"sea",
"road",
"air"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Your reference for this cargo line"
},
"type": {
"default": "box",
"description": "Cargo shape: drum/cylinder/roll hex-nest; bigbag/sack load on top, never crushed",
"type": "string",
"enum": [
"box",
"pallet",
"drum",
"cylinder",
"bigbag",
"roll",
"sack"
]
},
"length": {
"type": "number",
"description": "mm"
},
"width": {
"type": "number",
"description": "mm"
},
"height": {
"type": "number",
"description": "mm"
},
"weight": {
"type": "number",
"description": "kg per unit"
},
"quantity": {
"default": 1,
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"stackable": {
"default": true,
"description": "Whether anything may be stacked on top",
"type": "boolean"
},
"thisSideUp": {
"default": false,
"description": "Must stay upright — restricts the packer to upright orientations",
"type": "boolean"
},
"bulky": {
"default": false,
"description": "Bulky/awkward — never takes a load on top and needs handling clearance",
"type": "boolean"
},
"deliveryStop": {
"description": "Multi-drop delivery-stop order (1 = first delivered, loaded last at the doors). ≥2 distinct stops + sequenceStops zones the load nose→doors.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"refrigerated": {
"default": false,
"description": "Needs the cold chain (reefer only)",
"type": "boolean"
},
"hazmatClass": {
"description": "IMDG dangerous-goods class (e.g. \"3\", \"5.1\") — drives 7.2.4 segregation. Omit for non-hazardous.",
"type": "string"
},
"unNumber": {
"description": "UN number, e.g. \"UN1263\" or \"1263\". When set, the engine DERIVES the IMDG class, packing group, subsidiary risks, marine-pollutant status, segregation groups, stowage category and EmS from the curated Dangerous Goods List — no need to hand-enter each. Explicit DG fields override the derived ones.",
"type": "string"
},
"packingGroup": {
"description": "IMDG packing group. Derived from the UN number when unNumber is set.",
"type": "string",
"enum": [
"I",
"II",
"III"
]
},
"marinePollutant": {
"description": "Marine pollutant (IMDG 2.10 / MARPOL Annex III). Derived from the DGL.",
"type": "boolean"
},
"limitedQuantity": {
"description": "Shipped as a limited quantity (IMDG 3.4) — exempt from most segregation except vs class 1/7.",
"type": "boolean"
},
"subsidiaryHazards": {
"description": "IMDG subsidiary hazard classes, e.g. [\"6.1\", \"8\"].",
"type": "array",
"items": {
"type": "string"
}
},
"segregationGroups": {
"description": "IMDG 2.7.2.5 segregation groups this substance belongs to.",
"type": "array",
"items": {
"type": "string"
}
},
"segregateFromGroups": {
"description": "IMDG segregation groups to keep this substance away from (its DGL column-16b provisions).",
"type": "array",
"items": {
"type": "string"
}
},
"compatibilityGroup": {
"description": "Class-1 explosives compatibility group (A–S).",
"type": "string"
},
"maxStackWeightKg": {
"description": "Your crush limit: max kg allowed on top of one unit. Omit for a generous default; 0 = nothing may stack on it.",
"type": "number",
"minimum": 0
},
"boardEctLbIn": {
"description": "Corrugated edge-crush test (lb/in) → physical McKee crush limit for cartons",
"type": "number",
"exclusiveMinimum": 0
},
"boardCaliperMm": {
"description": "Corrugated board thickness (mm)",
"type": "number",
"exclusiveMinimum": 0
},
"doubleWall": {
"description": "Double-wall corrugated (vs single)",
"type": "boolean"
}
},
"required": [
"id",
"length",
"width",
"height",
"weight"
]
},
"description": "Cargo lines to load"
},
"vgm": {
"description": "SOLAS Verified Gross Mass declaration (else a tare+cargo estimate is reported)",
"type": "object",
"properties": {
"declaredKg": {
"description": "Shipper-declared SOLAS VGM per container (kg), index-aligned to containers used",
"type": "array",
"items": {
"type": "number",
"minimum": 0
}
},
"method": {
"description": "VGM method: M1 = weighbridge of the packed container, M2 = certified calculated sum",
"type": "string",
"enum": [
"M1",
"M2"
]
},
"dunnageKg": {
"description": "Dunnage/securing mass (kg) to fold into the calculated VGM estimate",
"type": "number",
"minimum": 0
}
}
},
"jurisdiction": {
"description": "Road jurisdiction for the axle / gross-weight compliance check (default EU). Set CN for China GB 1589 drayage limits.",
"type": "string",
"enum": [
"EU",
"US",
"CN"
]
},
"sequenceStops": {
"default": false,
"description": "Delivery-stop sequencing: with ≥2 distinct deliveryStop values, zone the load nose→doors in reverse delivery order.",
"type": "boolean"
},
"vesselMotion": {
"description": "IMO CSS Annex 13 vessel motion + stowage position. When set, the sea leg uses the position-dependent DYNAMIC acceleration field (a container on deck forward sees a far harsher case than one low amidships) instead of the flat sea-area coefficient.",
"type": "object",
"properties": {
"lengthFraction": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Longitudinal stowage position as a fraction of ship length from the aft perpendicular (0=aft, 1=fore)."
},
"stowageZone": {
"type": "string",
"enum": [
"onDeckHigh",
"onDeckLow",
"tweendeck",
"lowerHold"
],
"description": "Vertical stowage zone."
},
"lengthM": {
"description": "Ship length between perpendiculars (m); with speedKn, derives the Annex 13 length/speed correction (50–300 m).",
"type": "number",
"exclusiveMinimum": 0
},
"speedKn": {
"description": "Service speed (kn); pairs with lengthM.",
"type": "number",
"exclusiveMinimum": 0
},
"bOverGm": {
"description": "Beam / metacentric-height ratio B/GM; derives the Annex 13 transverse B/GM correction.",
"type": "number",
"exclusiveMinimum": 0
},
"lengthSpeedFactor": {
"description": "Explicit IMO CSS Annex 13 length/speed correction factor (fallback when lengthM/speedKn absent).",
"type": "number",
"exclusiveMinimum": 0
},
"bGmFactor": {
"description": "Explicit IMO CSS Annex 13 B/GM correction factor (fallback when bOverGm absent).",
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"lengthFraction",
"stowageZone"
]
}
},
"required": [
"items"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}