The DCSA Bill of Lading API is specified on SwaggerHub.
Publications related to the Bill of Lading API:
- Glossary of Terms maintained on the dcsa.org website
- Bill of Lading maintained on the dcsa.org website (contains documents and publications)
- Bill of Lading Issuance maintained here on GitHub
- Bill of Lading Surrender maintained here on GitHub
This is a patch version for the DCSA Bill of Lading API. The primary reason for this patch is adding the Direct Transport Document amendment flow. It is also possible to Cancel a Shipping Instructions.
- update API description to include the Direct Transport Document amendment flow. Direct Transport Document amendment is optional to support.
- added 3 new endpoints:
GET /v3/transport-documents/{transportDocumentReference}/amendment- fetches a Transport Document amendmentPUT /v3/transport-documents/{transportDocumentReference}/amendment- updates a Transport Document amendmentDELETE /v3/transport-documents/{transportDocumentReference}/amendment- cancels a Transport Document amendment
- added 3 new endpoints:
- improved property and endpoint descriptions
- update Transport Document amendment endpoint
- added new Direct Transport Document amendment examples
- added
amendedTransportDocumentStatusto the Transport Transport Document Notification and to the amended Transport Document endpoint (the Transport Document object has NOT changed). Following states are possible:AMENDMENT_RECEIVED(An amendment to a Transport Document is waiting to be processed)AMENDMENT_CONFIRMED(An amendment to a Transport Document has been confirmed)AMENDMENT_CANCELLED(An amendment to a Transport Document is discontinued by consumer)AMENDMENT_DECLINED(An amendment to a Transport Document is discontinued by provider)
- improved the
CancelShippingInstructionsUpdatedescription and content. When using this object - it is either possible to cancel an update or the entire Shipping Instructions shippingInstructionsStatusnow has 2 new states:CANCELLED(The Shipping Instructions have been cancelled by Shipper)DECLINED(The Shipping Instructions have been declined by Carrier)
- Transport Document Notification object now also contains:
amendedTransportDocumentStatusamendedTransportDocument
Shipping Instructionupdates:- added new
shippingInstructionsRevisionNumber transportDocumentReferencedescription updated to reflectICS2requirements- many description updates (typos and gramatical errors fixed)
shippingInstructionsStatustwo new status codes added (see above)
- added new
errorCodedescription updatedAddressHBLobject created to improve the description for House B/L party objectsPartyShipperobject created to improve the description for parties provided by the Shipper (as part of the Shipping Instructions) vs parties provided by the carrier (as part of the Transport Document)- Party objects previously shared between SI and TD have now been split into two. Objects created for SI have been prefixed with
Shipper(as they are provided by the shipper). There are no structural changes - only changes to the descriptrions. This goes for:ShipperShipperobject addedOnBehalfOfShipperShipperobject addedOnBehalfOfConsigneeShipperobject addednotifyPartyShipperobject addedpartyShipperobject added
eblPlatformadded to:Shipper,Consignee,ConsigneeShipper,EndorseeandEndorseeShipperparty objects- an unstructured address object called
addressLinesadded to the following party objects:Shipper,OnBehalfOfShipper,Consignee,ConsigneeShipper,OnBehalfOfConsignee,Endorsee,EndorseeShipper,CarriersAgentAtDestination,NotifyParty,Seller,Buyer,PartyShipper,IssuingPartyandShippingInstructionsRequestor sendToPlatformandcodeListProviderlists updated with platforms that have been onboarded to the DCSA eBL APIsDOCU(DocuTrade)AEOT(AEOTrade)SGTD(SGTraDex)
HSCodesmarked as deprecated everywhere,extendedHSCodesto be used insteadextendedHSCodesadded in order to support 12 character codesnationalCommodityCodesmarked as deprecated everywhere,extendedNationalCommodityCodesto be used insteadextendedNationalCommodityCodesadded in order to support 16 character codesdescriptionOfGoodsForCustomsadded as part of theConsignmentItemin the SI (only)shippingMarksForCustomsadded as part of theConsignmentItemin the SI (only)innerPackagingscan now have a nestedinnerPackagingsto allow multiple innerPackaging-layersroleadded toVesselVoyagein order to specify the vessel as being:FIRST_SEA_GOING(First sea giong vessel) orMOTHER(Mother vessel)- the following objects have
addressLines(an unstructured address object) andfacilityNameadded:PlaceOfReceipt,PlaceOfDeliveryandOnwardInlandRouting
chargeNamemarked as deprecated - useextendedChargeNameinstead which covers 100 characters (instead of 50 characters)
This is a patch version for the DCSA Bill of Lading API. The primary reason for this patch is adding the OnBehalfOf parties, allowing ZZ as a countryCode and updating eBL Solution Providers:
- condition clarified for:
numberOfOriginalsWithChargesandnumberOfOriginalsWithoutCharges countryCodedescription inTaxLegalReference,NationalCommodityCode,CustomsReference,Address,PartyAddress,City,PlaceOfIssue,AdvanceManifestFiling,PlaceOfAcceptanceandPlaceOfFinalDeliveryupdated to allow the use ofZZin case it is not known- two new DocumentParties added:
OnBehalfOfShipperandOnBehalfOfConsignee Issue To Partydescription updatedESSDassendToPlatformandcodeListProviderhave been deprecated -IDTshould be usedBLOC(BlockPeer Technologies) added as a newsendToPlatformandcodeListProvider- add
transportDocumentSubReferenceto the Notifications - add
feedbacksobject toTransportDocument - clarify in
latitudeandlongitudedescription that the value is expressed using ISO 6709 data interchange numeric format
- descriptions added to the following properties/objects:
CancelShippingInstructionsUpdate,ApproveTransportDocument,IdentifyingCode,Transports - updated some examples with
transportDocumentSubReference
This is a patch version for the DCSA Bill of Lading API. The primary reason for this patch is the ShippingInstructionRequestor party and adding a transportDocumentReference by Shipper, but other improvements have been added as well:
- added
shippingInstructionsRequestoras an optional party - added
transportDocumentReferenceas an optional property when creating and updating aShipping Instructions - removed
nullable=falseas false is the default - updated
partyFunctionCodefor theTransportDocumentas it was wrongly aligned withShippingInstructions(CS(Consolidator),MF(Manufacturer) andWH(Warehouse Keeper) removed) - added
carrierCodeandcarrierCodeListProviderto identify which carrier a ShippingInstructions should be sent to
- removed Servers list that was wrongly added (no Virtual Servers are connected to DCSA APIs)
- added an extra Note on the
displayedAdressmentioning that some carriers might allow for more than 2 lines for physical Bill of Ladings - updated spelling for Jerricans -> Jerrycans
- updated some typos
- removed the reference to
ISO 8601(all dateTime fields must comply with RFC 3339, section 5.6) - fixed some formatting in the
transportDocumentStatusdescription and some places referring toTransport Document codeListProviderandsendToPlatformupdated with the following values:COVA(Covantis),ETIT(e-title),KTNE(KTNET) andCRED(Credore)- clarifies which party
partyContactDetailsrefers to
This is the final version 3.0.0 for the DCSA Bill of Lading API. Compared to latest snapshot released 8 November the following has changed:
BuyerandSellerobjects duplicated in order to have different requirements on House B/L level (onDocumentPartiesHBL) vs Master B/L level (onDocumentParties)PartyContactDetailobject duplicated in order to have different requirements on House B/L level vs Master B/L level (regular expression pattern on thephonediffers)
- the API follows
API Design & Implementation Principlesv2.0 instead of v2.1 - Link to create a GitHub issue has been updated to point to DCSA Contact Us page
- License url has been updated to secure socket (http --> https)
- typos fixed: everywhere EBL was mentioned has been changed to eBL
- a
nullhas been inserted into the empty202response values - typo fixed: Jarricans --> Jerricans in DG-examples
- type fixed: timeperiod --> time period
- typo fixed: cosumer --> consumer
- the following object titles have been updated:
- In
ShippingInstructionsDatatitle has been updated fromData-->Shipping Instructions Data - In
ShippingInstructionsFullNotificationtitle has been updated fromShipping Instructions-->Shipping Instructions Full Notification - In
TransportDocumentDatatitle has been updated fromData-->Transport Document Data - In
TransportDocumentFullNotificationtitle has been updated fromTransport Document-->Transport Document Full Notification - In
InvoicePayableAtShippingInstructionstitle has been updated fromInvoice Payable At-->Invoice Payable At (Shipping Instructions) - In
DocumentPartiesShippingInstructionstitle has been updated fromDocument Parties-->Document Parties (Shipping Instructions) - In
DocumentPartiesHouseBLtitle has been updated fromDocument Parties-->Document Parties (House B/L)
- In
- The following conditions have been made more clear:
ConsigneeandEndorseeconditions updated:identifyingCodesis mandatory so no need to mention as a conditiondeclaredValueCurrencyshould not be provided ifdeclaredValueis not providedtemperatureUnitshould not be provided iftemperatureSetpointis not providedairExchangeUnitshould not be provided ifairExchangeis not provided
- typo fixed in
o2Setpoint(CO2 --> O2) PlaceOfReceiptandPlaceOfDeliverydescription updated (wrong reference toGeo Coordinateremoved)- description updated for
PlaceOfIssue - typo fixed in
reference(inImportLicenseandImportLicenseShipper) (athorizes --> authorizes)
Snapshot as of 8 of November 2024 for EBL 3.0.0 Beta.
- Made it more clear in the
PUT /v3/shipping-instructions/{documentReference}endPoint that an update can update an ongoing update-request - fixed the bad
IdentifyingCodesexamples in endPoint payloads - split
ConsigneeandEndorseeinto aShippingInstructions- and aTransportDocument-version since the "TransportDocument-versions" MUST have at least 1identifyingCodesprovided
- properties modified:
identifyingCodesis now mandatory and has aminItems: 1onConsigneeandEndorsee
- removed wrongly added condition on
IssuingPartyandidentifyingCodesonIssuingParty
Snapshot as of 25 of October 2024 for EBL 3.0.0 Beta.
identifyingCodesdescription updated to require one of 'address' or 'identifyingCode'- On
Consignee,Endorsee,NotifyParty,IssuingPartyandPartynow has a condition that eitheraddressoridentifyingCodesshould be provided in theShipping Instructions identifyingCodesnow has aminItems: 1and is a required property onIssueToParty- removed the array type on
OuterPackagingfor House B/Ls - going forward there is a 1:1 mapping betweenOuterPackagingandCargoItem
- properties added:
- properties modified:
- all House parties now link to
PartyContactDetailHBL - On
Consignee,Endorsee,NotifyParty,IssuingPartyandPartynow has a condition that eitheraddressoridentifyingCodesshould be provided identifyingCodesnow has aminItems: 1and is a required property onIssueToParty- removed the array type on
OuterPackaging- going forward there is a 1:1 mapping betweenOuterPackagingandCargoItem
- all House parties now link to
- properties removed:
- descriptions have been updated to make it more clear that 'one of X or Y' should be provided instead of 'either X or Y'
requestedCarrierClauseslink updated to include newly added Clausesunitdescriptions aligned between weights and volumes- removed the condition on House B/L
OuterPackagingproperty onCargoItem declaredValueCurrencyis now a conditional property based ondeclaredValuebeing provided
Snapshot as of 11 of October 2024 for EBL 3.0.0 Beta.
- many ICS2 updates
transportDocumentSubReferenceadded toTransportDocumentExportLicenseandImportLicenseadded toTransportDocument
methodOfPaymentremoved fromShipping InstructionsroutingOfConsignmentCountriesremoved fromShipping InstructionsisCargoDeliveredInICS2Zoneadded as a mandatory property toShipping InstructionsexportLicenseandimportLicenseadded toShipping InstructionsisHBLIssuedrenamed toisHouseBillOfLadingsIssued, description updated and Condition addedexportLicenseandimportLicenseadded toShipping Instructions,ConsignmentItemShipperandCargoItemShippercarrierBookingReferenceno longer has a ConditionemptyIndicatorCodeadded toUtilizedTransportEquipmentShipper
The above changes are applicable to:
CreateShippingInstructionsused inPOST /v3/shipping-instructionsendPointUpdateShippingInstructionsused inPUT /v3/shipping-instructions/{documentReference}endPointShippingInstructionsused inGET /v3/shipping-instructions/{documentReference}endPoint
transportDocumentSubReferenceadded toTransportDocumentroutingOfConsignmentCountriesremoved fromTransportDocumentexportLicenseandimportLicenseadded toTransportDocument,ConsignmentItemandCargoItemcarrierBookingReferenceno longer has a ConditionemptyIndicatorCodeadded toUtilizedTransportEquipment
- properties added:
isCargoDeliveredInICS2Zoneadded toShipping InstructionsexportLicenseandimportLicenseadded toShipping InstructionspartyContactDetailsadded toSellerandBuyerpartiesPartyHBLobject addedPartyContactDetailHBLobject added to include a pattern forphonetransportDocumentSubReferenceadded toTransportDocumentConsignmentItemHBLadded toHouseBillofLadingCargoItemHBLadded toConsignmentItemHBLOuterPackagingHBLadded toCargoItemHBLemptyIndicatorCodeadded toUtilizedTransportEquipmentandUtilizedTransportEquipmentShipperUtilizedTransportEquipmentHBLadded toHouseBillofLading- following properties added to
HouseBillofLading:isCargoDeliveredInICS2Zone,routingOfConsignmentCountries,consignmentItemsandutilizedTransportEquipments ExportLicense,ImportLicense,ExportLicenseShipperandImportLicenseShipperobjects added with the following properties:isRequired,reference,issueDateandexpiryDate
- properties modified:
isHBLIssuedrenamed toisHouseBillOfLadingsIssuedpartyFunctionCodesupdated:CSR->CS(Consolidator)MFR->MF(Manufacturer)WHK->WH(Warehouse Keeper)
typeOfPersonnow mandatory onShipperHBL,ConsigneeHBL,NotifyPartyHBL,Seller,BuyerpartyContactDetailsnow mandatory onNotifyPartyHBLcarrierBookingReferenceno longer has a ConditioncountryCodeis now optional onNationalCommodityCodeunNumberandnaNumberrenamed toUNNumberandNANumberinDangerous GoodssupplementaryDeclarantEORINumberrenamed toidentificationNumberinAdvanceManifestFilingand description updated and condition addedcountryCodemade optional inAdvanceManifestFiling
- properties removed:
methodOfPaymentremoved fromShipping InstructionsroutingOfConsignmentCountriesremoved fromShipping Instructions
- endPoint examples updated
- 2 new Carrier Classes that can be requested by the Shipper has been added:
- Shipper's Load, Stow, Weight and Count
- In transit clause
- all "House B/L" related objects (that have a "duplicate" MBL object) have
(House B/L)suffixed to their titles OtherDocumentPartyHBLlinks to aPartyHBLinstead ofPartyobjectShipperHBL,ConsigneeHBL,NotifyPartyHBL,Seller,Buyernow link toAddressinstead ofPartyAddresstypeOfPersonnow mandatory onShipperHBL,ConsigneeHBL,NotifyPartyHBL,Seller,BuyerTRACdescription updated fromTRACE OriginaltoEnigio trace:original- condition added to
NotifyPartyHBLwhich also now haspartyContactDetailsas a mandatory property EUremoved fromcodeListProviderinIdentifyingCodeEORIremoved fromcodeListNameinIdentifyingCodeTaxLegalReferencedescription updated with extra example- description of
descriptionOfGoodsinConsignmentItemupdated NationalCommodityCodeexample added- updated
CustomsReferencedescription and examples - examples of
AdvanceManifestFilingupdated methodOfPaymentdescription updated onHouseBillofLadingPlaceOfAcceptanceandPlaceOfFinalDeliverydescription updated and:locationNameupdatedaddress,facilityandgeoCoordinateremovedcountryCodeadded
buyerandsellerare now conditional onDocumentPartiesShipperandDocumentPartiesHouseBLshipperis a required party onHouseBillofLading
Snapshot as of 27 of September 2024 for EBL 3.0.0 Beta.
- Converted all inner defined objects to globally defined objects. The following objects are now global:
CreateShippingInstructionsResponsepreviously defined as inner object on thePOST /v3/shipping-instructionsendPointCancelShippingInstructionsUpdatepreviously defined as inner object on thePATCH /v3/shipping-instructions/{documentReference}endPoint- description on
GET /v3/transport-documents/{transportDocumentReference}endPoint updated so it now requires that "the order of ALL lists/arrays MUST be preserved as by the provider of the API" ApproveTransportDocumentpreviously defined as inner object on thePATCH /v3/transport-documents/{transportDocumentReference}endPointShippingInstructionsNotificationobject split into multiple global objects:dataproperty of the CloudEvent now defined asShippingInstructionsData- the
shippingInstructionsproperty of thedataobject now defined asShippingInstructionsFullNotification - the
updatedShippingInstructionsproperty of thedataobject now defined asUpdatedShippingInstructionsFullNotification ShippingInstructionsFullNotificationdefined as anallOfof theShippingInstructionsobjectUpdatedShippingInstructionsFullNotificationdefined as anallOfof theShippingInstructionsobject
TransportDocumentNotificationobject split into multiple global objects:dataproperty of the CloudEvent now defined asTransportDocumentData- the
transportDocumentproperty of thedataobject now defined asTransportDocumentFullNotification TransportDocumentFullNotificationdefined as anallOfof theTransportDocumentobject
PlaceOfIssuepreviously defined as inner object onShipping InstructionsandTransportDocumentInvoicePayableAtpreviously defined as inner object onShipping InstructionsandTransportDocumentDocumentPartiespreviously defined as inner object onShipping Instructions,HouseBillofLadingandTransportDocumentCargoGrossWeightandCargoGrossVolumepreviously defined as inner object onCargoItemGrossWeight,NetWeight,NetExplosiveContentandNetVolumepreviously defined as inner object onDangerousGoodsTareWeightpreviously defined as inner object onEquipmentandRequiredEquipment
- description clearly updated on properties that are lists/arrays where order needs to be preserved. This goes for:
- 4x
displayedNameForXXXonShipping InstructionsandTransport Documentroot level routingOfConsignmentCountriesonShipping InstructionsandTransport Documentroot leveldisplayedAddresson the Party objectsdescriptionOfGoodsonConsignmentItemshippingMarksonConsignmentItemandUtilizedTransportEquipment
- 4x
- description update on the
numberOf[Copies|Originals][With|Without]Chargesto better explain the conditions as to how the properties are to be used - 4x
displayedNameForXXXdescription updated to clearly indicate the order of the items in the list must be preserved - converted
placeOfIssueto a $ref instead of defining it inline - converted
invoicePayableAtto a $ref instead of defining it inline - converted
documentPartiesto a $ref instead of defining it inline routingOfConsignmentCountriesdescription updated to clearly indicate the order of the items in the list must be preservedShipperandConsigneenow allows for a list ofpurchaseOrderReferencesIssueToPartydescription updated- description updated on
sendToPlatformproperty onIssueToPartyand it is now an optional property ConsignmentItemnow allowsSPO(Shipper's Purchase Order) andCPO(Consignee's Purchase Order) as ReferencesgrossWeightandgrossVolumerenamed tocargoGrossWeightandcargoGrossVolumeonCargoItemcargoNetWeightandcargoNetVolumeadded onCargoItem- converted the following properties:
GrossWeight,NetWeight,NetExplosiveContentandNetVolumeonDangerousGoodsto a $ref instead of defining it inline - converted
tareWeightto a $ref instead of defining it inline
The above changes are applicable to:
CreateShippingInstructionsused inPOST /v3/shipping-instructionsendPointUpdateShippingInstructionsused inPUT /v3/shipping-instructions/{documentReference}endPointShippingInstructionsused inGET /v3/shipping-instructions/{documentReference}endPoint
- description update on the
numberOf[Copies|Originals][With|Without]Chargesto better explain the conditions as to how the properties are to be used - 4x
displayedNameForXXXdescription updated to clearly indicate the order of the items in the list must be preserved - converted
placeOfIssueto a $ref instead of defining it inline - converted
invoicePayableAtto a $ref instead of defining it inline - converted
documentPartiesto a $ref instead of defining it inline ShipperandConsigneenow allows for a list ofpurchaseOrderReferencesConsignmentItemnow allowsSPO(Shipper's Purchase Order) andCPO(Consignee's Purchase Order) as ReferencesroutingOfConsignmentCountriesdescription updated to clearly indicate the order of the items in the list must be preservedgrossWeightandgrossVolumerenamed tocargoGrossWeightandcargoGrossVolumeonCargoItemcargoNetWeightandcargoNetVolumeadded onCargoItem- converted the following properties:
GrossWeight,NetWeight,NetExplosiveContentandNetVolumeonDangerousGoodsto a $ref instead of defining it inline - converted
tareWeightto a $ref instead of defining it inline
- properties added:
cargoNetWeightandcargoNetVolumeadded onCargoItemreferencesonConsignmentItemnow allowsSPO(Shipper's Purchase Order) andCPO(Consignee's Purchase Order)
- properties modified:
POboxrenamed toPOBox(with capitalB)purchaseOrderReferenceonShipperandConsigneerenamed topurchaseOrderReferencesand now allows a list of valuesgrossWeightandgrossVolumerenamed tocargoGrossWeightandcargoGrossVolumeonCargoItemnumberOfPackagesonOuterPackagingupper limit set to 99999999
- properties removed:
- No properties have been removed in this release
- API description update
- examples in endPoint payloads updated to comply with schema
- Link to the standardized
errorCodein theErrorobject updated to a public page: Error codes as specified by DCSA - description updates to properties in the
AddressandCityobjects (the object can be used for other things than just a Party-address) phonedescription updated to include ITU-T recommendation E.123ReferenceConsignmentItemobject created to, in addition, allowSPO(Shipper's Purchase Order) andCPO(Consignee's Purchase Order) onConsignmentItem
Snapshot as of 13 of September 2024 for EBL 3.0.0 Beta.
POST,PUTandPATCHendPoints only return202(Accepted) as a success response code- changed all PseudoEnum values so they no longer include spaces (
) - links to specific standardisation bodies versions replaced with more "general" links (Wikipedia links replaced with links to www.iso.org)
- structure of
weightandvolume(valueandunit) specifications changed to object containing two mandatory properties:valueandunitinstead of conditional properties volumerenamed tonetVolumein DG (Dangerous Goods)
- Added a link to API Design & Implementation Principles
- multiple typos fixed
- API endPoint descriptions and examples updated
- anything but
200(OK) and201(Created) removed as response codes forPOSt,PUTandPATCH - title property inserted on objects where it is missing
shippingInstructionsStatusandupdatedShippingInstructionsStatusvalues updated, all spaces () have been replaced with underscore (_). Reference data links removedoriginChargesPaymentTermanddestinationChargesPaymentTermproperties now reference objects instead of defining properties inlinesendToPlatformremoved from SI and TD root level as it has been replaced by theIssue TopartyrequestedCarrierCertificatesandrequestedCarroerClausesnow have the string defined inline as part of the array rather than referencing a String "object"declaredValueCurrencydescription link changedcarrierCodedescription updated to make it more clear that it is aSCACcodeShippingInstructionsRefStatus,ShippingInstructionsRefCancelStatusandTransportDocumentRefStatusobjects deleted as they are no longer needed as part of the response payloads- changed
errorDateTimeexample to UTC instead of timeZone specific facilityCodedescription link updated to a more general page instead of a specific versiontypeOfPersonvalues no longer contain space ()IssueToPartydescription updatedsendToPlatformreference data link in description removed fromIssueToPartyobjectTaxLegalReferenceobject updated:- description updated to no longer link to reference data (it is currently out of scope for DCSA to maintain this list)
countryCodeexample updated to align with type example
transportDocumentStatusvalues no longer contain space ()descriptionOfGoodschanged from string to string array with amaxItemsof 150 and amaxLengthof 35HSCodesdescription link updated to a general link instead of a specific versionshippingMarksmaxItemsis now 50 and length of each line is 35SCHEDULE Bupdated toSCHEDULE_Bas a value in the type in NationalCommodityCode to avoid the space ()CustomsReferenceobject updated:- description updated to no longer link to reference data (it is currently out of scope for DCSA to maintain this list)
countryCodeexample updated to align with type example
equipmentReferencedescription link updated to www.iso.org instead of WikipediaweightandvolumeofCargoItemrenamed togrossWeightandgrossVolumeand structure changed to object containing mandatoryvalueandunitpackageCodedescription link updated to a general link instead of a specific versionimoPackagingCodedescription updatedwoodDeclarationvalues no longer contain space ()imoClassreference data link removedfumigationDateTimeexample updated to use UTC timevolumerenamed tonetVolumein DG (Dangerous Goods)ISOEquipmentCodedescription link updated and example modifiedtareWeightandweightUnitmerged into one optional object containing mandatoryvalueandunitAdvanceManifestFilingobject updated:- description updated to no longer link to reference data (it is currently out of scope for DCSA to maintain this list)
manifestTypeCodedescription link to reference data removedsupplementaryDeclarantEORInumberrenamed tosupplementaryDeclarantEORINumber(n-->N)
PlaceOfAcceptance,PlaceOfFinalDelivery,PlaceOfReceipt,PortOfLoading,PortOfDischarge,PlaceOfDeliveryandOnwardInlandRoutingcondition added to make sure if multiple ways of expressing a location is used that always point to the same locationcurrencyCodedescription link changedRequestedCarrierCertificateandRequestedCarrierClauseobjects deletedOriginChargesPaymentTermandDestinationChargesPaymentTermobjects created
Snapshot as of 30 of August 2024 for EBL 3.0.0 Beta.
- Semantics for
202responseCode changed ICS2addedIssueToPartyobject addedHouseBillOfLadingobject added- many new parties added
partyName,street,ContactDetailNameandcitymaxLength modified to be compatible with EDIFeedbackobject inserted as a communication fromCarrier-->Shipper(no morereasonproperty)
- API endPoint descriptions updated
- API examples updated
409responseCode added toGETShippingInstructions andPATCHTransportDocument endPointsShippingInstructionsNotificationobject updated:reasonproperty replaced withfeedbacksarrayshippingInstructionsandupdatedShippingInstructionsproperties aligned withShippingInstructionsobject
TransportDocumentNotificationobject updated:reasonproperty replaced withfeedbacksarraytransportDocumentproperty aligned withTransportDocumentobject
CreateShippingInstructions,UpdateShippingInstructionsandShippingInstructionsobject updated:methodOfPaymentaddednumberOfCopiesWithCharges,numberOfCopiesWithoutCharges,numberOfOriginalsWithChargesandnumberOfOriginalsWithoutChargesdescriptions updated (conditions removed)issueTo,seller,buyerandnotifyPartiesadded todocumentPartiesroutingOfConsignmentCountriesaddedisHBLIssuedandhouseBillOfLadingsproperties added
ShippingInstructionsobject andShippingInstructionsRefStatusobject hasreasonproperty removed andfeedbacksdescription updated to remove the conditionShippingInstructionsRefCancelStatusobject hasreasonreplaced withfeedbacksmessagemaxLength updated from 500 --> 5000 inFeedbackobjecterrorCodeMessagemaxLength updated from 200 --> 5000 inDetailedErrorobjectpartyFunctionCodeinOtherDocumentPartyhas additional values:CSR(Consolidator)MFR(Manufacturer)WHK(Warehouse Keeper)
- special
Partyobjects forICS2created:OtherDocumentPartyHBL,ShipperHBL,ConsigneeHBL,NotifyPartyHBL - new Party objects added:
IssueToParty,NotifyParty,SellerandBuyerobject added IssuingPartyobject changes:partyNamemaxLength changed from 100 --> 70
commoditySubreferenceis no longer a mandatory property inConsignmentItemShipperobjecthouseBillOfLadingReferenceadded toCargoItemin theShippingInstructionsAdvanceManifestFilingobject updated- description updated
advanceManifestFilingsHouseBLPerformedByvalueSHIPPERchanged toSELF(and everywhereSHIPPERvalue is referred,SELFis used)supplementaryDeclarantEORInumberadded
HouseBillOfLadingobject addedPlaceOfAcceptanceobject addedPlaceOfFinalDeliveryobject addedTransportDocumentobject updated:numberOfCopiesWithCharges,numberOfCopiesWithoutCharges,numberOfOriginalsWithChargesandnumberOfOriginalsWithoutChargesdescriptions updated (conditions removed)displayedShippedOnBoardReceivedForShipmentaddedcarrierCodeListProviderdescription forNMFTAis updatedissuingPartymoved from root level -->documentPartiesnotifyPartiesadded as adocumentParty(split frompartyFunctionCodein "Other Document Parties")routingOfConsignmentCountriesadded
namemaxLength changed from 100 --> 35 inPartyContactDetailobjectSchedule Bchanged toSCHEDULE Bin type inNationalCommodityCodeobject and a typo was fixed in the descriptionnationalCommodityCodesadded onCargoItemlevelwoodDeclarationpseudoEnum values changed to CAPITALIZATIONisCompetentAuthorityApprovalProvidedrenamed toisCompetentAuthorityApprovalRequiredin Dangerous Goods (DG)shippingMarksdescription updatedsealSourcedescription updated (condition added)AddressandPartyAddressobjects updates:streetmaxLength changed from 100 --> 70POboxadded as propertycitymaxLength changed from 65 --> 35
partyFunctionCodevalues updated (NotifyPartyvalues removed)Shipperobject changes:partyNamemaxLength changed from 100 --> 70typeOfPersonaddeddisplayedAddressmaxItems changed from 999 --> 6 and a condition has been added for physical BLsshippersReferencerenamed toreferenceshippersPurchaseOrderReferencerenamed topurchaseOrderReference
Consigneeobject changes:partyNamemaxLength changed from 100 --> 70typeOfPersonaddeddisplayedAddressmaxItems changed from 999 --> 6 and a condition has been added for physical BLsconsigneesReferencerenamed toreferenceconsigneesPurchaseOrderReferencerenamed topurchaseOrderReference
Endorseeobject changes:partyNamemaxLength changed from 100 --> 70displayedAddressmaxItems changed from 999 --> 6 and a condition has been added for physical BLs
CarriersAgentAtDestinationobject changes:partyNamemaxLength changed from 100 --> 70
NotifyPartyobject addedPartyandIssuingPartyobjects changes:partyNamemaxLength changed from 100 --> 70
Snapshot as of 16 of August 2024 for EBL 3.0.0 Beta.
202response code added to all endPoints- maxLength of
valueproperty of all references changed from100-->35(in order to align with EDI) CustomReferencenow allows a list of values
- API description updated
- all endPoint descriptions updated to support
202response 202response code added to all endPoints404(Not Found) added toPUTSI-endPoint,GETTD-endPoint andPATCHTD-endPointdeclaredValuedescription updatedmaxLength=100changed tomaxLength=35(in order to be EDI compatible):- in
shippersReferenceinShipperparty object - in
shippersPurchaseOrderReferenceinShipperparty object - in
consigneesReferenceinConsigneeparty object - in
consigneesPurchaseOrderReferenceinConsigneeparty object - in
referenceinPartyobject - in
valueinTaxLegalReferenceobject - in
valueinReferenceandReferenceShipperobjects (which also has apatternadded)
- in
CustomReferenceobject has the following changes:maxLength=100changed tomaxLength=35for thevalueproperty- the
valueproperty has been renamed tovaluesand is now a list of values instead of a single value
Snapshot as of 26 of July 2024 for EBL 3.0.0 Beta.
- Notification endPoints added (supporting both
LightweightandFull State TransferNotifications) requestedChangesreplaced byFeedbackobject- locations no longer use
oneOfbut is now a set of optional properties
- API description updated
- endPoint examples updated
/v3/shipping-instructions-notificationsadded to include:Lightweight Notificationsfor Shipping InstructionsFull State Transfer Notificationsfor Shipping Instructions- Notifications use the
CloudEventstructure (and is merged from the deprecated Bill of Lading Notification API)
/v3/transport-document-notificationsadded to includeLightweight Notificationsfor Transport DocumentFull State Transfer Notificationsfor Transport Document- Notifications use the
CloudEventstructure (and is merged from the deprecated Bill of Lading Notification API)
ShippingInstructionsNotificationandTransportDocumentNotificationobjects added- in
CreateShippingInstructions,UpdateShippingInstructions,ShippingInstructionsandTransportDocumentobject the following changes have been done:placeOfIssueis no longer defined inline but is now $ref aPlaceOfIssueobject
- in
CreateShippingInstructions,UpdateShippingInstructionsandShippingInstructionsobject the following changes have been done:isCarriersAgentAtDestinationRequiredlocation in object moved
requestedChangesreplaced byfeedbacksfor better "feedback" from provider --> consumer in the following objects:ShippingInstructionsandShippingInstructionsRefStatusRequestedChangesobject deletedFeedback objectadded- locations are handled differently going forward. Locations are no longer defined using a
oneOfbut rather via optional properties. This impacts:AddressLocationobject deleted as it is no longer neededCityLocationrenamed toCityand modified to no longer havelocationTypenor a nestedCityobjectFacilityLocationrenamed toFacilityand modified to no longer havelocationTypeUnLocationLocationobject deleted as it is no longer neededGeoCoordinateobject added
streetNumberis no longer a mandatory field in theAddressnorPartyAddressobjectsshippersReferenceandshippersPurchaseOrderReferenceadded toShipperobjectconsigneesReferenceandconsigneesPurchaseOrderReferenceadded toConsigneeobjectreferenceadded toPartyobject- values removed from
typeinreference(FF,SI,SPO,CPO,AAO,ECR,CSI,BPR,BIDandSACall removed andAKGadded) nationalCommodityCodesadded toConsignmentItemandConsignmentItemShipperobjectsNationalCommodityCodeobject addedwoodDeclarationadded toOuterPackagingandOuterPackagingShipperobjects- fixed typo in required fields of
Transports(vesselVoyage-->vesselVoyages) MULTIMODALadded as aMode of TransporttopreCarriageByandonCarriageByPlaceOfReceipt,PortOfLoading,PortOfDischarge,PlaceOfDeliveryandOnwardInlandRoutingobjects changed from using aoneOfinto an object where all location types are optional and can be used at the same time
Snapshot as of 14 of June 2024 for EBL 3.0.0 Beta.
sendToPlatformupdated:pattern: ^\S+$added- 2 new values have been added
TRAC(TRACE Original) andBRIT(BRITC eBL)
- boolean property
isCarriersAgentAtDestinationRequiredadded to SI minItems=1added when providing thedisplayedNameForPlaceOfReceipt,displayedNameForPortOfLoad,displayedNameForPlaceOfDeliveryanddisplayedNameForPortOfDischargepattern: ^\S(?:.*\S)?$has been added to thelocationNameof theAddressLocationinterface- Follow changes has been done on the
Addressobjectnameproperty removed- for
postCode:maxLengthchanged from 50 --> 10 nullable=trueremoved onstateRegionstreet,streetNumberandcityhave been added as required properties (namehas been removed)
CityLocationinterface has the following changes:maxLength: 4added tolocationTypenullable=trueremoved onstateRegion- wronly defined
countryhas been changed tocountryCodeas a required property
- in
PartyAddressobject:postCodemaxlengthhas been changed from 50 --> 10nullable=trueremoved fromstateRegion
CarriersAgentAtDestinationadded as aDocument PartyTRAC(TRACE Original) andBRIT(BRITC eBL) added as values forcodeListProviderinIdentifyingCodeobject- in
DangerousGoodsthe following has changed:netWeightproperty must now be >= 0netExplosiveContentproperty must now be >= 0netExplosiveContentunit now also allow:LBR(Pounds) andONZ(Ounce)volumeproperty object must now be >= 0
ShippingMarksadded toUtilizedTransportEquipmentandUtilizedTransportEquipmentShippervesselVoyagerenamed tovesselVoyagesin theTransportsobject
ConsignmentItemCarrierrenamed toConsignmentItemand updated to no longer need anallOfConsignmentItemShipperupdated to no longer need anallOfCargoItemCarrierrenamed toCargoItemOuterPackagingCarrierrenamed toOuterPackagingUtilizedTransportEquipmentCarrierrenamed toUtilizedTransportEquipmentVesselVoyagecreated instead of having as inline object
##Minor changes
- example changes for endPoints: typo
UNCO-->UNLO titleproperty added to all objects (titleproperty removed on thereasonproperty)- examples added/updated where needed
- descriptions updated
Going forward Beta 3 will not be updated anymore. The new way of working will be that we update the final v3.0.0 continuously. Every once in a while we release "Snapshots". An example of this is the Snapshot of 14 June 2024 just above.
Beta 2 release of the DCSA OpenAPI definitions for EBL 3.0.0.
This is a list of high-level business changes:
DocumentPartiesstructure has been changed so it no longer is a "one-size fits all" solution.[Origin|Destination]ChargesPaymentTermshave been updated to allow a differentiation betweenport,haulageandotherpayment codes (PREorCOL).- longer
vesselNameandvesselIMONumberallowed codeListProviderlist cleaned up and all SP (Solution Providers) have been addedUNLocationCodeadded as a property on Party-addresses- calculated fields have been removed from
UtilizedTransportEquipmentandConsignmentItems ShippingMarkshave been moved fromConsignmentItem-->CargoItemTransportsobject now allows for an array ofVesselVoyagesSealno longer supportstypenor can thesourcebe:PHY(Phytosanitary)- support for multiple
Vessel/VouyageonTransportDocument(e.g. the first sea going vessel and the mother vessel)
This is a list of high-level technical changes:
- The API is now developed using ShopLight instead of SwaggerHub-editor. This means that we are no longer using Domains but now have everything defined inline.
- As a new principle:
- no $ref pointing outside the yaml file
- all
simpleTypesare now specified "inline" in objects - all
objectsare now PascalCased and have atitleproperty set with a presentable version of the object name in Title Case (all representations of snake_case or Pascal_Snake_Case have been removed)
- all strings having a pattern that matches
^\S+(\s+\S+)*$have been changed to\S(?:.*\S)?$in order to prevent Catastrophic Backtracking additionalProperties= falsehave been added to theUNLocationLocationin order to prevent schema errors whenUNLocationis used together with aFacilityLocationin aoneOfconstruction (prevents schema error: should be valid to one and only one schema, but 2 are valid)
- API description has been updated with new link to Information Model and Interface documents. Link to the Stats API has been updated
- all endPoint examples have been updated to reflect changes
CreateShippingInstructionsobject has the following changes:titlechanged fromShipping Instructions-->Create Shipping InstructionsoriginChargesPaymentTermCodeanddestinationChargesPaymentTermCodehas changed from being a string to being a structure with the following properties:haulageChargesPaymentTermCode,portChargesPaymentTermCodeandotherChargesPaymentTermCodewhich can all be either Prepaid (PRE) or Collect (COL). Both properties have also been renamed tooriginChargesPaymentTermanddestinationChargesPaymentTerm(so the name no longer ends withCode)sendToPlatformnow supports 2 extra SP (Solution Providers):IDT(ICE Digital Trade) andETEU(eTEU)placeOfBLIssuestructure changed to a more simple structure. It is now aoneOfbetween aUNLocationCodeand acountryCodeinvoicePayableAtstructure changed - it is no longer aoneOfbetween aUNLocationLocationand anAddressLocation.invoicePayableAtis now an object consisting of a single property:UNLocationCodewhich is requiredpartyContactDetailsnow has aminItemsof 1documentPartiesstructure changed - it is no longer a list ofDocumentPartiesbut an object containing a requiredShipperand optionalConsignee,EndorseeandotherdocumentParties.Shipperis a required fieldconsignmentItemsandutilizedTransportEquipmentswrongly hadminLength=1, this is now changed tominItems=1invoicePayableAtis no longer a required field
UpdateShippingInstructionsobject has the same changes asCreateShippingInstructionsexcept:titlechanged fromShipping Instructions-->Update Shipping Instructions
ShippingInstructions(used for the GET request) object has the same changes asCreateShippingInstructionsexcept:titlestays asShipping Instructions
ShippingInstructionsRefCancelStatustitle changed toShipping Instructions Cancel ResponseRequestedChangeobject has split thefieldproperty into 2 properties:propertyandjsonPathin order to align with theDetailedErrorobject- fixed some typos in the
ErrorResponseproperties descriptions - in the
Addressobject thecountryproperty has been changed tocountryCode CityLocationobject has extratitleproperty and thecountryproperty has been changed tocountryCodeFacilityLocationobject has extratitlepropertyUNLocationCodein theFacilityLocationhas been fixed (all properties were missing)UNLocationLocationinterface hasadditionalProperties= falsein order to prevent schema violations when included in aoneOfconstruction together with aFacilityLocationin properties defining a locationDocumentPartyhas been renamed toOtherDocumentPartyandisToBeNotifiedhas been removedpartyFunctionhas been reduced to only contain:SCO(Service Contract Owner)DDR(Consignor's freight forwarder)DDS(Consignee's freight forwarder)COW(Invoice payer on behalf of the consignor (shipper))COX(Invoice payer on behalf of the consignee)N1(First Notify Party)N2(Second Notify Party)NI(Other Notify Party)
- new
PartyAddressobject created wherestreet,streetNumber,cityandcountryCodeare required fieldsUNLocationCodeis addedcountryis now acountryCode
- added 3 new "Document Party" objects:
Shipper,ConsigneeandEndorseeto be used in the newdocumentPariesstructure - updated
Partyobject with:- use
PartyAddressobject instead of theAddressobject - removed
minItemsof 1 onpartyContactDetails
- use
- created a new
IssuingPartyobject which is similar toPartyobject except theaddressis a required field IdentifyingCodestructure has the following changes:codeListProviderhas changedmaxLengthfrom 5 --> 100codeListProviderhas a new list of allowed values:WAVE(Wave),CARX(CargoX),ESSD(EssDOCS),IDT(ICE Digital Trade),BOLE(Bolero),EDOX(EdoxOnline),IQAX(IQAX),SECR(Secro),TRGO(TradeGO),ETEU(eTEU),GSBN(Global Shipping Business Network),WISE(WiseTech),GLEIF(Global Legal Entity Identifier Foundation),W3C(World Wide Web Consortium),DNB(Dun and Bradstreet),FMC(Federal Maritime Commission),DCSA(Digital Container Shipping Association) andZZZ(Mutually defined)codeListProviderexample updatedcodeListNamedescription changed
ConsignmentItemhas the follow changes:- all calculated fields have been removed - this means:
weight,weightUnit,volumeandvolumeUnithave been removed descriptionOfGoodsexample updated to not include "number Of Packages value"HSCodeswrongly hadminLength=1, this is now changed tominItems=1- added
ShippingMarkswhich has been moved fromCargoItems
- all calculated fields have been removed - this means:
ConsignmentItem_CARhas been renamed toConsignmentItemCarrierConsignmentItem_SHIhas been renamed toConsignmentItemShipper- fixed typo in
CustomsReferencestitleproperty CargoItem_CARhas been renamed toCargoItemCarrierCargoItem_SHIhas been renamed toCargoItemShipperouterPackagingis no longer a required field onCargoItemShipperobjectOuterPackaging_SHIrenamed toOuterPackagingShipperpackageCodeminLengthandmaxLengthset to 2 in order to allow exactly 2 charactersdescriptionis now a required field onOuterPackagingShipperOuterPackaging_CARrenamed toOuterPackagingCarrierimoPackagingCodeminLengthandmaxLengthset to 1 and 5 in order to allow exactly 1-5 charactersdescriptionis now a required field onOuterPackagingCarrierDangerousGoods_CARandDangerousGoodsconsolidated into one object:DangerousGoodsunNumber,naNumberandcodedVariantListminLengthandmaxLengthset to 4 in order to allow exactly 4 characterssubsidiaryRisk[1|2]minLengthandmaxLengthset to 1 and 3 in order to allow strings of length 1-3- typo in
inhalationZonedescription fixed volumeproperty of DG now has both properties (valueandunit) as required propertiesUtilizedTransportEquipment_CARrenamed toUtilizedTransportEquipmentCarrierUtilizedTransportEquipmentCarrierhas the follow changes:- all calculated fields have been removed - this means:
cargoGrossWeight,cargoGrossWeightUnit,cargoGrossVolumeandcargoGrossVolumeUnithave been removed sealswrongly hadminLength=1, this is now changed tominItems=1
- all calculated fields have been removed - this means:
UtilizedTransportEquipment_SHIrenamed toUtilizedTransportEquipmentShippersealsonUtilizedTransportEquipmentShipperwrongly hadminLength=1, this is now changed tominItems=1titleproperty onRequiredEquipmentaddedtypeproperty removed from theSealobjectPHY(Phytosanitary) removed as asealSourceAdvanceManifestFiling_BKGandAdvanceManifestFiling_EBLconsolidated into one object calledAdvanceManifestFilingand example modified
TransportDocumenthas the following changes:- all strings pattern matching
^\S+(\s+\S+)*$have been changed to\S(?:.*\S)?$in order to prevent Catastrophic Backtracking originChargesPaymentTermCodeanddestinationChargesPaymentTermCodehave been removeddeclaredValueCurrencyadded aminLengthof 3 (as thedeclaredValueCurrencymust be exactly 3 characters long)issuingPartynow uses aIssuingPartyobject instead of aPartyobject (theaddressproperty is now required)placeOfBLIssuestructure changed to a more simple structure. It is now aoneOfbetween aUNLocationCodeand acountryCodeand not aoneOfbetween aUNLocationLocationinterface and anAddressLocationinterfaceinvoicePayableAtstructure changed into a more simple structure. It is now aoneOfbetween aUNLocationCodeand afreeTextfield and not aoneOfbetween aUNLocationLocationinterface and anAddressLocationinterface. ThefreeTextis only to be used when theinvoicePayableAtcannot be expressed as aUNLocationCodeminItemsof 1 onpartyContactDetailsas it is a required fielddocumentPartiesstructure changed - it is no longer a list ofDocumentPartiesbut an object containing a requiredShipperand optionalConsignee,EndorseeandotherdocumentParties.Shipperis a required fieldconsignmentItemsandutilizedTransportEquipmentswrongly hadminLength=1, this is now changed tominItems=1freightPaymentTermCodeis no longer a required property
- all strings pattern matching
Transportsobject changed:- new object
vesselVoyagehas been added. The object is a list of "Vessel" and "Voyage" information allowing for multiple Vessels to be mentioned on theTransportDocument vesselNamehas changedmaxLengthfrom 35 --> 50universalExportVoyageReferenceminLengthandmaxLengthset to 5 in order to allow exactly 5 characters
- new object
titleproperty onPlaceOfReceipt,PortOfLoading,PortOfDischarge,PlaceOfDeliveryandOnwardInlandRoutingaddedcurrencyCodeminLengthset to 3 in order to allow exactly 3 characters
- PLUS changes listed in the objects defined above that the
TransportDocumentlinks to
Beta 1 release of the DCSA OpenAPI definitions for Bill of Lading 3.0.0. This release adds Active Reefer Settings (Phase 1) and Dangerous Goods. It removes the Events endPoint and now supports the Notification pattern.
- Bump Documentation_Domain to version 3.0.0 (was previously v2.1.0)
- Bump Error_Domain to version 3.0.0 (was previously v2.0.0)
- Bump DCSA_Domain to version 3.1.0 (was previously v2.0.3)
- Event_Domain no longer needed
- Check above Domains to see changes of objects since last version
summary-endPoints removed- amendment flow changed.
- amendments to
ActiveReeferSettingsandDangerous Goodsmust be done via aBooking Amendment. - amendments to a
Shipping Instructionsmust be done via anShipping Instructions updateand can be monitored via theupdatedShippingInstructionsStatusstatus property
- amendments to
eventsendPoint removed and a notification API added to support Push Notifications- multiple examples added to most endPoints
- descriptions improved to all endPoints explaining flows