From fd0126f6d66f0ca57f872d38227456643f3cb35a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Helm=C3=B8=20Larsen?= Date: Thu, 28 Sep 2023 09:44:38 +0200 Subject: [PATCH 1/4] Inital commit --- .../domain/persistence/entity/Party.java | 5 ++ .../entity/TaxAndLegalReference.java | 48 +++++++++++++++++++ .../edocumentation/service/PartyService.java | 10 ++++ .../TaxAndLegalReferenceTO.java | 28 +++++++++++ .../TaxAndLegalReferenceValidation.java | 24 ++++++++++ .../TaxAndLegalReferenceValidator.java | 24 ++++++++++ 6 files changed, 139 insertions(+) create mode 100644 edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/TaxAndLegalReference.java create mode 100644 edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/TaxAndLegalReferenceTO.java create mode 100644 edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidation.java create mode 100644 edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidator.java diff --git a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/Party.java b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/Party.java index 8dcb5415..a1b1ae09 100644 --- a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/Party.java +++ b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/Party.java @@ -43,6 +43,11 @@ public class Party { @OneToMany(mappedBy = "party") private Set<@Valid PartyContactDetails> partyContactDetails; + @ToString.Exclude + @EqualsAndHashCode.Exclude + @OneToMany(mappedBy = "party") + private Set<@Valid TaxAndLegalReference> taxAndLegalReferences; + @ToString.Exclude @EqualsAndHashCode.Exclude @OneToMany(mappedBy = "party") diff --git a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/TaxAndLegalReference.java b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/TaxAndLegalReference.java new file mode 100644 index 00000000..1f503445 --- /dev/null +++ b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/TaxAndLegalReference.java @@ -0,0 +1,48 @@ +package org.dcsa.edocumentation.domain.persistence.entity; + +import jakarta.persistence.*; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.*; + +import java.util.UUID; + +@Data +@Builder(toBuilder = true) +@NoArgsConstructor +@AllArgsConstructor +@Setter(AccessLevel.PRIVATE) +@Entity +@Table(name = "tax_and_legal_reference") +public class TaxAndLegalReference { + + @Id + @GeneratedValue + @Column(name = "id", nullable = false) + private UUID taxAndLegalReferenceID; + + @Column(name = "tax_and_legal_reference_type_code") + @Size(max = 50) + @NotBlank + private String type; + + @Column(name = "tax_and_legal_reference_country_code") + @Size(max = 2) + @NotBlank + private String countryCode; + + @Column(name = "tax_and_legal_reference_value") + @Size(max = 100) + @NotBlank + private String value; + +// @JoinColumn(name = "party_id") +// @Column(name = "party_id") +// private UUID partyID; + + @ToString.Exclude + @EqualsAndHashCode.Exclude + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "party_id") + private Party party; +} diff --git a/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/PartyService.java b/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/PartyService.java index c7b7bfc1..e761fb88 100755 --- a/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/PartyService.java +++ b/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/PartyService.java @@ -11,6 +11,7 @@ import org.dcsa.edocumentation.transferobjects.PartyContactDetailsTO; import org.dcsa.edocumentation.transferobjects.PartyIdentifyingCodeTO; import org.dcsa.edocumentation.transferobjects.PartyTO; +import org.dcsa.edocumentation.transferobjects.TaxAndLegalReferenceTO; import org.springframework.stereotype.Service; @RequiredArgsConstructor @@ -20,6 +21,7 @@ public class PartyService { private final PartyRepository partyRepository; private final PartyMapper partyMapper; private final PartyContactDetailsRepository partyContactDetailsRepository; + private final TaxAndLegalReferenceRepository taxAndLegalReferenceRepository; private final PartyIdentifyingCodeRepository partyIdentifyingCodeRepository; @Transactional @@ -35,6 +37,14 @@ public Party createParty(PartyTO partyTO) { .toList()); } + List taxAndLegalReferences = partyTO.taxAndLegalpartyContactDetails(); + if (partyContactDetails != null && !partyContactDetails.isEmpty()) { + partyContactDetailsRepository.saveAll( + partyContactDetails.stream() + .map(partyContactDetailsTO -> partyMapper.toDAO(partyContactDetailsTO, party)) + .toList()); + } + List identifyingCodes = partyTO.identifyingCodes(); if (identifyingCodes != null && !identifyingCodes.isEmpty()) { partyIdentifyingCodeRepository.saveAll( diff --git a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/TaxAndLegalReferenceTO.java b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/TaxAndLegalReferenceTO.java new file mode 100644 index 00000000..10b16644 --- /dev/null +++ b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/TaxAndLegalReferenceTO.java @@ -0,0 +1,28 @@ +package org.dcsa.edocumentation.transferobjects; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.Builder; +import org.dcsa.edocumentation.transferobjects.validation.TaxAndLegalReferenceValidation; + +@TaxAndLegalReferenceValidation +public record TaxAndLegalReferenceTO( + + @NotBlank + @Size(max = 50) + @Pattern(regexp = "^\\S+$", message = "The Tax and Legal Reference Type cannot start nor end with whitespace characters") + String type, + + @NotBlank + @Size(max = 2) + @Pattern(regexp = "^[A-Z]{2}$", message = "Not a valid country code") + String countryCode, + + @NotBlank @Size(max = 100) + @Pattern(regexp = "^\\S+(\\s+\\S+)*$", message = "The Tax and Legal Reference Value cannot contain whitespace characters") + String value + + @Builder(toBuilder = true) + public TaxAndLegalReferenceTO {} +} diff --git a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidation.java b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidation.java new file mode 100644 index 00000000..d9b1ebfe --- /dev/null +++ b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidation.java @@ -0,0 +1,24 @@ +package org.dcsa.edocumentation.transferobjects.validation; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}) +@Retention(RUNTIME) +@Documented +@Constraint(validatedBy = TaxAndLegalReferenceValidator.class) +public @interface TaxAndLegalReferenceValidation { + + String message() default "Invalid combination of Tax and Legal Reference type and country code"; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidator.java b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidator.java new file mode 100644 index 00000000..0e2c437e --- /dev/null +++ b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidator.java @@ -0,0 +1,24 @@ +package org.dcsa.edocumentation.transferobjects.validation; + + +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; +import org.dcsa.edocumentation.transferobjects.TaxAndLegalReferenceTO; + +public class TaxAndLegalReferenceValidator implements ConstraintValidator { + + + private static final CodeCache VALID_TAX_AND_LEGAL_CODES = + CodeCache.of("taxandlegalreferences.csv", "Tax and Legal Reference Type", "Country Code"); + @Override + public boolean isValid(TaxAndLegalReferenceTO value, ConstraintValidatorContext context) { + if (value == null) { + return true; + } + try { + return VALID_TAX_AND_LEGAL_CODES.isValid(value.type(),value.countryCode()); + } catch (IllegalArgumentException e) { + } + return false; + } +} From 5105a6c68cc266693cce2018a3e462cf8513d211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Helm=C3=B8=20Larsen?= Date: Fri, 13 Oct 2023 09:33:32 +0200 Subject: [PATCH 2/4] Add Tax and Legal References --- .../domain/persistence/entity/Party.java | 15 +++--- .../entity/TaxAndLegalReference.java | 18 +++---- .../TaxAndLegalReferenceRepository.java | 10 ++++ .../domain/validations/PartyValidation.java | 26 +++++++++ .../domain/validations/PartyValidator.java | 54 +++++++++++++++++++ .../TaxAndLegalReferenceValidation.java | 6 ++- .../TaxAndLegalReferenceValidator.java | 30 +++++++++++ .../db/migration/V3_0__dcsa_im_v3.sql | 11 ++-- .../db/testdata.d/V8_4__test_data_bkg.sql | 1 - .../edocumentation/service/PartyService.java | 11 ++-- .../service/mapping/PartyMapper.java | 8 +++ .../mapping/TaxAndLegalReferenceMapper.java | 20 +++++++ .../datafactories/PartyDataFactory.java | 7 --- .../transferobjects/PartyTO.java | 18 ++----- .../TaxAndLegalReferenceTO.java | 12 ++--- .../TaxAndLegalReferenceValidator.java | 24 --------- postman_collection.json | 8 +-- 17 files changed, 194 insertions(+), 85 deletions(-) create mode 100644 edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/repository/TaxAndLegalReferenceRepository.java create mode 100644 edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/PartyValidation.java create mode 100644 edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/PartyValidator.java rename {edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation => edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations}/TaxAndLegalReferenceValidation.java (74%) create mode 100644 edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/TaxAndLegalReferenceValidator.java create mode 100644 edocumentation-service/src/main/java/org/dcsa/edocumentation/service/mapping/TaxAndLegalReferenceMapper.java delete mode 100644 edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidator.java diff --git a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/Party.java b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/Party.java index a1b1ae09..b87093f1 100644 --- a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/Party.java +++ b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/Party.java @@ -4,6 +4,10 @@ import lombok.*; import jakarta.persistence.*; +import org.dcsa.edocumentation.domain.validations.AsyncShipperProvidedDataValidation; +import org.dcsa.edocumentation.domain.validations.PartyValidation; + +import java.util.List; import java.util.Set; import java.util.UUID; @@ -14,6 +18,7 @@ @Setter(AccessLevel.PRIVATE) @Entity @Table(name = "party") +@PartyValidation(groups = AsyncShipperProvidedDataValidation.class) public class Party { @Id @GeneratedValue @@ -23,15 +28,6 @@ public class Party { @Column(name = "party_name", length = 100) private String partyName; - @Column(name = "tax_reference_1", length = 20) - private String taxReference1; - - @Column(name = "tax_reference_2", length = 20) - private String taxReference2; - - @Column(name = "public_key", length = 100) - private String publicKey; - @ToString.Exclude @EqualsAndHashCode.Exclude @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @@ -45,6 +41,7 @@ public class Party { @ToString.Exclude @EqualsAndHashCode.Exclude + @OrderColumn(name = "list_order") @OneToMany(mappedBy = "party") private Set<@Valid TaxAndLegalReference> taxAndLegalReferences; diff --git a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/TaxAndLegalReference.java b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/TaxAndLegalReference.java index 1f503445..f314c740 100644 --- a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/TaxAndLegalReference.java +++ b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/entity/TaxAndLegalReference.java @@ -4,6 +4,8 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import lombok.*; +import org.dcsa.edocumentation.domain.validations.AsyncShipperProvidedDataValidation; +import org.dcsa.edocumentation.domain.validations.TaxAndLegalReferenceValidation; import java.util.UUID; @@ -14,35 +16,31 @@ @Setter(AccessLevel.PRIVATE) @Entity @Table(name = "tax_and_legal_reference") +@TaxAndLegalReferenceValidation(groups = AsyncShipperProvidedDataValidation.class) public class TaxAndLegalReference { @Id @GeneratedValue - @Column(name = "id", nullable = false) - private UUID taxAndLegalReferenceID; + private UUID id; - @Column(name = "tax_and_legal_reference_type_code") + @Column(name = "type_code") @Size(max = 50) @NotBlank private String type; - @Column(name = "tax_and_legal_reference_country_code") + @Column(name = "country_code") @Size(max = 2) @NotBlank private String countryCode; - @Column(name = "tax_and_legal_reference_value") + @Column(name = "value") @Size(max = 100) @NotBlank private String value; -// @JoinColumn(name = "party_id") -// @Column(name = "party_id") -// private UUID partyID; - @ToString.Exclude @EqualsAndHashCode.Exclude - @ManyToOne(fetch = FetchType.LAZY) + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "party_id") private Party party; } diff --git a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/repository/TaxAndLegalReferenceRepository.java b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/repository/TaxAndLegalReferenceRepository.java new file mode 100644 index 00000000..dae5ec09 --- /dev/null +++ b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/persistence/repository/TaxAndLegalReferenceRepository.java @@ -0,0 +1,10 @@ +package org.dcsa.edocumentation.domain.persistence.repository; + +import org.dcsa.edocumentation.domain.persistence.entity.TaxAndLegalReference; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +public interface TaxAndLegalReferenceRepository extends JpaRepository { } diff --git a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/PartyValidation.java b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/PartyValidation.java new file mode 100644 index 00000000..3b4d140e --- /dev/null +++ b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/PartyValidation.java @@ -0,0 +1,26 @@ +package org.dcsa.edocumentation.domain.validations; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}) +@Retention(RUNTIME) +@Documented +@Constraint(validatedBy = PartyValidator.class) +public @interface PartyValidation { + + LocationSubType[] allowedSubtypes() default {}; + + String message() default "Illegal party specification"; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/PartyValidator.java b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/PartyValidator.java new file mode 100644 index 00000000..6d667ad6 --- /dev/null +++ b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/PartyValidator.java @@ -0,0 +1,54 @@ +package org.dcsa.edocumentation.domain.validations; + + +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; +import org.dcsa.edocumentation.domain.persistence.entity.Party; +import org.dcsa.edocumentation.domain.persistence.entity.TaxAndLegalReference; + +import java.util.List; +import java.util.Set; + +public class PartyValidator implements ConstraintValidator { + + @Override + public boolean isValid(Party value, ConstraintValidatorContext context) { + if (value == null) { + return true; + } + + var state = ValidationState.of(value, context); + validateTaxAndLegalReferences(state); + return state.isValid(); + } + + private void validateTaxAndLegalReferences(ValidationState state) { + Set taxAndLegalReferenceSet = state.getValue().getTaxAndLegalReferences(); + +// return customsReferences.stream() +// .collect(Collectors.groupingBy(p -> p.getType() + "-" + p.getCountryCode(), Collectors.toList())) +// .values() +// .stream() +// .filter(i -> i.size() > 1) +// .flatMap(Collection::stream) +// .toList(); + + + for (TaxAndLegalReference taxAndLegalReference : taxAndLegalReferenceSet) { + List matched = taxAndLegalReferenceSet.stream() + .filter(inner -> inner.getType().equals(taxAndLegalReference.getType()) + && inner.getCountryCode().equals(taxAndLegalReference.getCountryCode())) + .toList(); + + if (matched.size() > 1) { + TaxAndLegalReference illegalTaxAndLegalReference = matched.get(0); + state.getContext().buildConstraintViolationWithTemplate( + "Tax and Legal Reference Type = " + illegalTaxAndLegalReference.getType() + " and country code = " + illegalTaxAndLegalReference.getCountryCode() + + " can only appear once for a Party. Please correct party: " + state.getValue().toString()) + .addConstraintViolation(); + state.invalidate(); + return; + } + } + } +} diff --git a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidation.java b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/TaxAndLegalReferenceValidation.java similarity index 74% rename from edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidation.java rename to edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/TaxAndLegalReferenceValidation.java index d9b1ebfe..98ce19f1 100644 --- a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidation.java +++ b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/TaxAndLegalReferenceValidation.java @@ -1,4 +1,4 @@ -package org.dcsa.edocumentation.transferobjects.validation; +package org.dcsa.edocumentation.domain.validations; import jakarta.validation.Constraint; import jakarta.validation.Payload; @@ -16,7 +16,9 @@ @Constraint(validatedBy = TaxAndLegalReferenceValidator.class) public @interface TaxAndLegalReferenceValidation { - String message() default "Invalid combination of Tax and Legal Reference type and country code"; + LocationSubType[] allowedSubtypes() default {}; + + String message() default "Illegal referenceType and countryCode combination in Tax and Legal Reference"; Class[] groups() default {}; diff --git a/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/TaxAndLegalReferenceValidator.java b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/TaxAndLegalReferenceValidator.java new file mode 100644 index 00000000..bde98d61 --- /dev/null +++ b/edocumentation-domain/src/main/java/org/dcsa/edocumentation/domain/validations/TaxAndLegalReferenceValidator.java @@ -0,0 +1,30 @@ +package org.dcsa.edocumentation.domain.validations; + + +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; +import org.dcsa.edocumentation.domain.persistence.entity.TaxAndLegalReference; + +public class TaxAndLegalReferenceValidator implements ConstraintValidator { + + private static final CodeCache VALID_TAX_AND_LEGAL_CODES = + CodeCache.of("taxandlegalreferences.csv", "Tax and Legal Reference Type", "Country Code"); + + @Override + public boolean isValid(TaxAndLegalReference value, ConstraintValidatorContext context) { + if (value == null) { + return true; + } + + boolean valid = VALID_TAX_AND_LEGAL_CODES.isValid(value.getType(),value.getCountryCode()); + if (!valid) { + var state = ValidationState.of(value, context); + state.getContext().buildConstraintViolationWithTemplate( + "Illegal combination of Tax and Legal Reference Type = " + value.getType() + " and country code = " + value.getCountryCode()) + .addConstraintViolation(); + state.invalidate(); + return false; + } + return true; + } +} diff --git a/edocumentation-domain/src/main/resources/db/migration/V3_0__dcsa_im_v3.sql b/edocumentation-domain/src/main/resources/db/migration/V3_0__dcsa_im_v3.sql index 1ee1ab68..746939da 100644 --- a/edocumentation-domain/src/main/resources/db/migration/V3_0__dcsa_im_v3.sql +++ b/edocumentation-domain/src/main/resources/db/migration/V3_0__dcsa_im_v3.sql @@ -65,9 +65,6 @@ CREATE TABLE carrier ( CREATE TABLE party ( id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, party_name varchar(100) NULL, - tax_reference_1 varchar(20) NULL, - tax_reference_2 varchar(20) NULL, - public_key varchar(500) NULL, address_id uuid NULL REFERENCES address (id) ); @@ -87,6 +84,14 @@ CREATE TABLE party_identifying_code ( party_code varchar(100) NOT NULL ); +CREATE TABLE tax_and_legal_reference ( + id uuid DEFAULT uuid_generate_v4() PRIMARY KEY, + party_id uuid NOT NULL REFERENCES party(id), + type_code varchar(50) NOT NULL, + country_code varchar(2) NOT NULL, + value varchar(100) NOT NULL, + list_order int NOT NULL default 0 +); CREATE TABLE transport_document_type ( transport_document_type_code varchar(3) PRIMARY KEY, diff --git a/edocumentation-domain/src/main/resources/db/testdata.d/V8_4__test_data_bkg.sql b/edocumentation-domain/src/main/resources/db/testdata.d/V8_4__test_data_bkg.sql index d5434b8c..05d76423 100644 --- a/edocumentation-domain/src/main/resources/db/testdata.d/V8_4__test_data_bkg.sql +++ b/edocumentation-domain/src/main/resources/db/testdata.d/V8_4__test_data_bkg.sql @@ -242,4 +242,3 @@ INSERT INTO hs_code_item ( '720711' ); - diff --git a/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/PartyService.java b/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/PartyService.java index e761fb88..e4bf930a 100755 --- a/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/PartyService.java +++ b/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/PartyService.java @@ -7,6 +7,7 @@ import org.dcsa.edocumentation.domain.persistence.repository.PartyContactDetailsRepository; import org.dcsa.edocumentation.domain.persistence.repository.PartyIdentifyingCodeRepository; import org.dcsa.edocumentation.domain.persistence.repository.PartyRepository; +import org.dcsa.edocumentation.domain.persistence.repository.TaxAndLegalReferenceRepository; import org.dcsa.edocumentation.service.mapping.PartyMapper; import org.dcsa.edocumentation.transferobjects.PartyContactDetailsTO; import org.dcsa.edocumentation.transferobjects.PartyIdentifyingCodeTO; @@ -37,11 +38,11 @@ public Party createParty(PartyTO partyTO) { .toList()); } - List taxAndLegalReferences = partyTO.taxAndLegalpartyContactDetails(); - if (partyContactDetails != null && !partyContactDetails.isEmpty()) { - partyContactDetailsRepository.saveAll( - partyContactDetails.stream() - .map(partyContactDetailsTO -> partyMapper.toDAO(partyContactDetailsTO, party)) + List taxAndLegalReferences = partyTO.taxAndLegalReferences(); + if (taxAndLegalReferences != null && !taxAndLegalReferences.isEmpty()) { + taxAndLegalReferenceRepository.saveAll( + taxAndLegalReferences.stream() + .map(taxAndLegalReferenceTO -> partyMapper.toDAO(taxAndLegalReferenceTO, party)) .toList()); } diff --git a/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/mapping/PartyMapper.java b/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/mapping/PartyMapper.java index aef3e602..ce8da3c0 100644 --- a/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/mapping/PartyMapper.java +++ b/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/mapping/PartyMapper.java @@ -3,9 +3,11 @@ import org.dcsa.edocumentation.domain.persistence.entity.Party; import org.dcsa.edocumentation.domain.persistence.entity.PartyContactDetails; import org.dcsa.edocumentation.domain.persistence.entity.PartyIdentifyingCode; +import org.dcsa.edocumentation.domain.persistence.entity.TaxAndLegalReference; import org.dcsa.edocumentation.transferobjects.PartyContactDetailsTO; import org.dcsa.edocumentation.transferobjects.PartyIdentifyingCodeTO; import org.dcsa.edocumentation.transferobjects.PartyTO; +import org.dcsa.edocumentation.transferobjects.TaxAndLegalReferenceTO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -15,8 +17,10 @@ AddressMapper.class, PartyContactDetailsMapper.class, PartyIdentifyingCodeMapper.class, + TaxAndLegalReferenceMapper.class }) public interface PartyMapper { + @Mapping(source = "taxAndLegalReferences", target = "taxAndLegalReferences", ignore = true) @Mapping(source = "partyContactDetails", target = "partyContactDetails", ignore = true) @Mapping(source = "identifyingCodes", target = "identifyingCodes", ignore = true) @Mapping(target = "id", ignore = true) @@ -24,6 +28,10 @@ public interface PartyMapper { PartyTO toTO(Party party); + @Mapping(source = "party", target = "party") + @Mapping(source = "party.id", target = "id", ignore = true) + TaxAndLegalReference toDAO(TaxAndLegalReferenceTO taxAndLegalReferenceTO, Party party); + @Mapping(source = "party", target = "party") @Mapping(source = "party.id", target = "id", ignore = true) PartyContactDetails toDAO(PartyContactDetailsTO partyContactDetailsTO, Party party); diff --git a/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/mapping/TaxAndLegalReferenceMapper.java b/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/mapping/TaxAndLegalReferenceMapper.java new file mode 100644 index 00000000..238f34ed --- /dev/null +++ b/edocumentation-service/src/main/java/org/dcsa/edocumentation/service/mapping/TaxAndLegalReferenceMapper.java @@ -0,0 +1,20 @@ +package org.dcsa.edocumentation.service.mapping; + +import org.dcsa.edocumentation.domain.persistence.entity.PartyIdentifyingCode; +import org.dcsa.edocumentation.domain.persistence.entity.TaxAndLegalReference; +import org.dcsa.edocumentation.transferobjects.PartyIdentifyingCodeTO; +import org.dcsa.edocumentation.transferobjects.TaxAndLegalReferenceTO; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +@Mapper( + componentModel = "spring", + config = EDocumentationMappingConfig.class +) +public interface TaxAndLegalReferenceMapper { + @Mapping(target = "id", ignore = true) + @Mapping(target = "party", ignore = true) + TaxAndLegalReference toDAO(TaxAndLegalReferenceTO taxAndLegalReferenceTO); + + TaxAndLegalReferenceTO toTO(TaxAndLegalReference taxAndLegalReference); +} diff --git a/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/PartyDataFactory.java b/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/PartyDataFactory.java index 8c5ab44a..f31f352c 100644 --- a/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/PartyDataFactory.java +++ b/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/PartyDataFactory.java @@ -14,13 +14,6 @@ public Party singleParty() { return Party.builder() .id(UUID.randomUUID()) .partyName("DCSA") - .taxReference1("1234567890") - .publicKey(""" - -----BEGIN RSA PUBLIC KEY----- - MEgCQQCo9+BpMRYQ/dL3DS2CyJxRF+j6ctbT3/Qp84+KeFhnii7NT7fELilKUSnx - S30WAvQCCo2yU1orfgqr41mM70MBAgMBAAE= - -----END RSA PUBLIC KEY----- - """) .address(AddressDataFactory.getSingleAddress()) .partyContactDetails(Set.of(PartyContactDetails.builder() .id(UUID.randomUUID()) diff --git a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/PartyTO.java b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/PartyTO.java index 650e5673..e4c53593 100644 --- a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/PartyTO.java +++ b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/PartyTO.java @@ -11,23 +11,15 @@ public record PartyTO( @Size(max = 100) String partyName, - @Size(max = 20) - String taxReference1, - - @Size(max = 20) - String taxReference2, - - @Size(max = 500) - String publicKey, - @Valid AddressTO address, - @Valid @NotEmpty - List partyContactDetails, + List<@Valid TaxAndLegalReferenceTO> taxAndLegalReferences, - @Valid - List identifyingCodes + @NotEmpty + List<@Valid PartyContactDetailsTO> partyContactDetails, + + List<@Valid PartyIdentifyingCodeTO> identifyingCodes ) { @Builder(toBuilder = true) public PartyTO { } diff --git a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/TaxAndLegalReferenceTO.java b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/TaxAndLegalReferenceTO.java index 10b16644..dde75350 100644 --- a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/TaxAndLegalReferenceTO.java +++ b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/TaxAndLegalReferenceTO.java @@ -4,25 +4,23 @@ import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import lombok.Builder; -import org.dcsa.edocumentation.transferobjects.validation.TaxAndLegalReferenceValidation; -@TaxAndLegalReferenceValidation public record TaxAndLegalReferenceTO( @NotBlank @Size(max = 50) - @Pattern(regexp = "^\\S+$", message = "The Tax and Legal Reference Type cannot start nor end with whitespace characters") + @Pattern(regexp = "^\\S+(\\s+\\S+)*$", message = "The Tax and Legal Reference Type cannot start nor end with whitespace characters") String type, @NotBlank @Size(max = 2) - @Pattern(regexp = "^[A-Z]{2}$", message = "Not a valid country code") + @Pattern(regexp = "^[A-Z]{2}$", message = "A country code must consist of exactly 2 characters from A-Z") String countryCode, @NotBlank @Size(max = 100) @Pattern(regexp = "^\\S+(\\s+\\S+)*$", message = "The Tax and Legal Reference Value cannot contain whitespace characters") String value - - @Builder(toBuilder = true) - public TaxAndLegalReferenceTO {} +) { + @Builder + public TaxAndLegalReferenceTO { } } diff --git a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidator.java b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidator.java deleted file mode 100644 index 0e2c437e..00000000 --- a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/validation/TaxAndLegalReferenceValidator.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.dcsa.edocumentation.transferobjects.validation; - - -import jakarta.validation.ConstraintValidator; -import jakarta.validation.ConstraintValidatorContext; -import org.dcsa.edocumentation.transferobjects.TaxAndLegalReferenceTO; - -public class TaxAndLegalReferenceValidator implements ConstraintValidator { - - - private static final CodeCache VALID_TAX_AND_LEGAL_CODES = - CodeCache.of("taxandlegalreferences.csv", "Tax and Legal Reference Type", "Country Code"); - @Override - public boolean isValid(TaxAndLegalReferenceTO value, ConstraintValidatorContext context) { - if (value == null) { - return true; - } - try { - return VALID_TAX_AND_LEGAL_CODES.isValid(value.type(),value.countryCode()); - } catch (IllegalArgumentException e) { - } - return false; - } -} diff --git a/postman_collection.json b/postman_collection.json index bc2867b3..6d9980ab 100755 --- a/postman_collection.json +++ b/postman_collection.json @@ -4796,7 +4796,7 @@ }, { "key": "BOOKING_SCHEMA", - "value": "{\n \"type\": \"object\",\n \"description\": \"includes the information requested in a booking, service terms and types as well as the assigned booking reference by the carrier.\\n\",\n \"required\": [\n \"bookingRequestCreatedDateTime\",\n \"bookingRequestUpdatedDateTime\",\n \"cargoMovementTypeAtDestination\",\n \"cargoMovementTypeAtOrigin\",\n \"carrierBookingRequestReference\",\n \"requestedEquipments\",\n \"communicationChannelCode\",\n \"deliveryTypeAtDestination\",\n \"documentStatus\",\n \"isEquipmentSubstitutionAllowed\",\n \"isExportDeclarationRequired\",\n \"isImportLicenseRequired\",\n \"isPartialLoadAllowed\",\n \"receiptTypeAtOrigin\",\n \"serviceContractReference\"\n ],\n \"properties\": {\n \"carrierBookingRequestReference\": {\n \"type\": \"string\",\n \"description\": \"A reference to the booking during the booking request phase\\n\"\n },\n \"documentStatus\": {\n \"type\": \"string\",\n \"description\": \"The status of the booking. Possible values are:\\n- RECE (Received)\\n- PENU (Pending Update)\\n- PENC (Pending Confirmation)\\n- CONF (Confirmed)\\n- REJE (Rejected)\\n- CANC (Cancelled)\\n- CMPL (Completed)\\n\\nMore details can be found on GitHub. Be aware that the list linked to is the `ShipmentEventTypeCodes` which is equivalent to `documentStatus`, the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"RECE\",\n \"PENU\",\n \"PENC\",\n \"CONF\",\n \"REJE\",\n \"CANC\",\n \"CMPL\"\n ]\n },\n \"bookingRequestCreatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"The date and time when the booking request was created\\n\",\n \"format\": \"date-time\"\n },\n \"bookingRequestUpdatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Last date and time when the booking request was updated\\n\",\n \"format\": \"date-time\"\n },\n \"receiptTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Origin. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"deliveryTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Destination. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"cargoMovementTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the loading of the cargo into the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"cargoMovementTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the unloading of the cargo out of the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"serviceContractReference\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Reference number for agreement between shipper and carrier through which the shipper commits to provide a certain minimum quantity of cargo over a fixed period, and the carrier commits to a certain rate or rate schedule.\"\n },\n \"carrierExportVoyageNumber\": {\n \"type\": \"string\",\n \"maxLength\": 50,\n \"description\": \"\"\n },\n \"universalExportVoyageReference\": {\n \"type\": \"string\",\n \"maxLength\": 5,\n \"description\": \"\"\n },\n \"carrierServiceCode\": {\n \"type\": \"string\",\n \"maxLength\": 11,\n \"description\": \"\"\n },\n \"universalServiceReference\": {\n \"type\": \"string\",\n \"maxLength\": 8,\n \"description\": \"\"\n },\n \"vesselName\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"The name of the Vessel given by the Vessel Operator and registered with IMO.\\n\"\n },\n \"exportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an export voyage. The vessel operator-specific identifier of the export Voyage. The result will only return schedules including the export Voyage Number\\n\"\n },\n \"declaredValue\": {\n \"type\": \"number\",\n \"description\": \"The value of the cargo that the shipper declares to avoid the carrier's limitation of liability and \\\"Ad Valorem\\\" freight, i.e. freight which is calculated based on the value of the goods declared by the shipper.\",\n \"minimum\": -3.402823669209385E+38,\n \"maximum\": 3.402823669209385E+38\n },\n \"declaredValueCurrency\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency used for the declared value, using the 3-character code defined by ISO 4217.\"\n },\n \"paymentTermCode\": {\n \"type\": \"string\",\n \"description\": \"Indicates whether freight & charges are due for payment before the shipment is effected, practically before the transport document is released to shipper (Prepaid) or before the shipment is finalized meaning cargo released to consignee (Collect)\\n- PRE (Prepaid)\\n- COL (Collect)\\n\",\n \"enum\": [\n \"PRE\",\n \"COL\"\n ]\n },\n \"isPartialLoadAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indication whether the shipper agrees to load part of the shipment in case where not all of the cargo is delivered within cut-off.\\n\"\n },\n \"isExportDeclarationRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Information provided by the shipper whether an export declaration is required for this particular shipment/commodity/destination.\\n\"\n },\n \"exportDeclarationReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A government document permitting designated goods to be shipped out of the country. Reference number assigned by an issuing authority to an Export License. The export license must be valid at time of departure. Required if Export declaration required is ÔÇÿTrue'.\\n\"\n },\n \"isImportLicenseRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Information provided by the shipper whether an import permit or license is required for this particular shipment/commodity/destination.\\n\"\n },\n \"importLicenseReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A certificate, issued by countries exercising import controls, that permits importation of the articles stated in the license. Reference number assigned by an issuing authority to an Import License. The import license number must be valid at time of arrival. Required if import license required is ÔÇÿTrue'.\\n\"\n },\n \"isAMSACIFilingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Customs filing for US (AMS) or Canadian (ACI) customs\\n\"\n },\n \"isDestinationFilingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the shipper will perform the AMS/ACI filing directly or not. Mandatory if AMS/ACI filing is required\\n\"\n },\n \"contractQuotationReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"Information provided by the shipper to identify whether pricing for the shipment has been agreed via a contract or a quotation reference. Mandatory if service contract (owner) is not provided.\\n\"\n },\n \"expectedDepartureDate\": {\n \"type\": \"string\",\n \"description\": \"The date when the shipment is expected to be loaded on board a vessel as provided by the shipper or its agent. If vessel/voyage or expected date of arrival is not provided, this is mandatory\\n\",\n \"format\": \"date\"\n },\n \"expectedArrivalAtPlaceOfDeliveryStartDate\": {\n \"type\": \"string\",\n \"description\": \"The start date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryEndDate`) for when the shipment is expected to arrive at final destination. If vessel/voyage or `expectedDepartureDate` is not provided, this is mandatory together with `expectedArrivalAtPlaceOfDeliveryEndDate`\\n\",\n \"format\": \"date\"\n },\n \"expectedArrivalAtPlaceOfDeliveryEndDate\": {\n \"type\": \"string\",\n \"description\": \"The end date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryStartDate`) for when the shipment is expected to arrive at final destination. If vessel/voyage or `expectedDepartureDate` is not provided, this is mandatory together with `expectedArrivalAtPlaceOfDeliveryStartDate`\\n\",\n \"format\": \"date\"\n },\n \"transportDocumentTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Specifies the type of the transport document\\n- BOL (Bill of Lading)\\n- SWB (Sea Waybill)\\n\",\n \"enum\": [\n \"BOL\",\n \"SWB\"\n ]\n },\n \"transportDocumentReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"A unique number allocated by the shipping line to the transport document and the main number used for the tracking of the status of the shipment.\\n\"\n },\n \"bookingChannelReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"Identification number provided by the platform/channel used for booking request/confirmation, ex: Inttra booking reference, or GTNexus, other. Conditional on booking channel being used\\n\"\n },\n \"incoTerms\": {\n \"type\": \"string\",\n \"description\": \"Transport obligations, costs and risks as agreed between buyer and seller.\\n- FCA (Free Carrier)\\n- FOB (Free on Board)\\n\",\n \"enum\": [\n \"FCA\",\n \"FOB\"\n ]\n },\n \"communicationChannelCode\": {\n \"maxLength\": 2,\n \"type\": \"string\",\n \"description\": \"Specifying which communication channel is to be used for this booking e.g.\\n- EI (EDI transmission)\\n- EM (Email)\\n- AO (API)\\n\",\n \"enum\": [\n \"EI\",\n \"EM\",\n \"AO\"\n ]\n },\n \"isEquipmentSubstitutionAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates if an alternate equipment type can be provided by the carrier.\\n\"\n },\n \"vesselIMONumber\": {\n \"maxLength\": 7,\n \"type\": \"string\",\n \"description\": \"The unique reference for a registered Vessel. The reference is the International Maritime Organisation (IMO) number, also sometimes known as the Lloyd's register code, which does not change during the lifetime of the vessel\\n\"\n },\n \"preCarriageModeOfTransportCode\": {\n \"type\": \"string\",\n \"description\": \"The mode of transport as defined by DCSA.\\n\",\n \"enum\": [\n \"VESSEL\",\n \"RAIL\",\n \"TRUCK\",\n \"BARGE\"\n ]\n },\n \"invoicePayableAt\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Invoice Payable At` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\"\n },\n \"placeOfBLIssue\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Place of B/L Issue` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\\nThe location where the original transport document (`Bill of Lading`) will be issued.\\n\"\n },\n \"requestedEquipments\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"isShipperOwned\",\n \"ISOEquipmentCode\",\n \"units\",\n \"commodities\"\n ],\n \"type\": \"object\",\n \"description\": \"The requested equipments for the booking\\n\",\n \"properties\": {\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"Unique code for the different equipment size/type used for transporting commodities. The code is a concatenation of ISO Equipment Size Code and ISO Equipment Type Code A and follows the ISO 6346 standard.\"\n },\n \"units\": {\n \"type\": \"integer\",\n \"description\": \"Number of requested equipment units\\n\",\n \"minimum\": 1,\n \"maximum\": 2147483647\n },\n \"equipmentReferences\": {\n \"type\": \"array\",\n \"items\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"The unique identifier for the equipment, which should follow the BIC ISO Container Identification Number where possible.\\nAccording to ISO 6346, a container identification code consists of a 4-letter prefix and a 7-digit number (composed of a 3-letter owner code, a category identifier, a serial number, and a check-digit). If a container does not comply with ISO 6346, it is suggested to follow Recommendation #2 ÔÇ£Container with non-ISO identificationÔÇØ from SMDG.\\n\"\n }\n },\n \"isShipperOwned\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the container is shipper owned (SOC).\"\n },\n \"commodities\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cargoGrossWeight\",\n \"cargoGrossWeightUnit\",\n \"commodityType\"\n ],\n \"type\": \"object\",\n \"description\": \"Type of goods in the booking, defined by its commodity type\\n\",\n \"properties\": {\n \"commodityType\": {\n \"maxLength\": 550,\n \"type\": \"string\",\n \"description\": \"High-level description of goods to be shipped which allow the carrier to confirm acceptance and commercial terms. To be replaced by \\\"description of goods\\\" upon submission of shipping instruction\\n\"\n },\n \"HSCode\": {\n \"maxLength\": 10,\n \"type\": \"string\",\n \"description\": \"Used by customs to classify the product being shipped.\"\n },\n \"cargoGrossWeight\": {\n \"type\": \"number\",\n \"description\": \"The grand total weight of the cargo and weight per container(s) including packaging items being carried, which can be expressed in imperial or metric terms, as provided by the shipper. Excludes the tare weight of the container(s).\",\n \"minimum\": -3.402823669209385E+38,\n \"maximum\": 3.402823669209385E+38\n },\n \"cargoGrossWeightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"cargoGrossVolume\": {\n \"type\": \"number\",\n \"description\": \"The grand total volume of the commodity\",\n \"minimum\": -3.402823669209385E+38,\n \"maximum\": 3.402823669209385E+38\n },\n \"cargoGrossVolumeUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in either imperial or metric terms\\n- FTQ (Cubic meter)\\n- MTQ (Cubic foot)\\n\",\n \"enum\": [\n \"MTQ\",\n \"FTQ\"\n ]\n },\n \"numberOfPackages\": {\n \"type\": \"integer\",\n \"description\": \"Specifies the number of packages associated with this cargo item\",\n \"minimum\": -2147483648,\n \"maximum\": 2147483647\n },\n \"exportLicenseIssueDate\": {\n \"type\": \"string\",\n \"description\": \"Issue date of the export license applicable to the booking. Mandatory to provide in booking request for specific commodities\\n\",\n \"format\": \"date\"\n },\n \"exportLicenseExpiryDate\": {\n \"type\": \"string\",\n \"description\": \"Expiry date of the export license applicable to the booking.\\n\\nMandatory to provide in booking request for specific commodities.\\n\",\n \"format\": \"date\"\n }\n }\n }\n }\n }\n }\n },\n \"references\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"type\",\n \"value\"\n ],\n \"type\": \"object\",\n \"description\": \"references provided by the shipper or freight forwarder at the time of booking or at the time of providing shipping instruction. Carriers share it back when providing track and trace event updates, some are also printed on the B/L. Customers can use these references to track shipments in their internal systems.\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The reference type codes defined by DCSA.\\n- FF (Freight Forwarder's Reference)\\n- SI (Shipper's Reference)\\n- PO (Purchase Order Reference)\\n- CR (Customer's Reference)\\n- AAO (Consignee's Reference)\\n- ECR (Empty container release reference)\\n- CSI (Customer shipment ID)\\n- BPR (Booking party reference number)\\n- BID (Booking Request ID)\\n\\nMore details can be found on GitHub. Be aware that the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"FF\",\n \"SI\",\n \"PO\",\n \"CR\",\n \"AAO\",\n \"ECR\",\n \"CSI\",\n \"BPR\",\n \"BID\",\n \"EQ\",\n \"RUC\",\n \"DUE\",\n \"CER\",\n \"AES\"\n ]\n },\n \"value\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The actual value of the reference.\"\n }\n }\n }\n },\n \"documentParties\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"isToBeNotified\",\n \"party\",\n \"partyFunction\"\n ],\n \"type\": \"object\",\n \"description\": \"stores the parties involved in the transport document.\",\n \"properties\": {\n \"party\": {\n \"required\": [\n \"partyContactDetails\"\n ],\n \"type\": \"object\",\n \"description\": \"refers to a company or a legal entity.\",\n \"properties\": {\n \"partyName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the party.\"\n },\n \"taxReference1\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"The identifying number of the consignee or shipper (Individual or entity) used for tax purposes.\"\n },\n \"taxReference2\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"Optional second identifying number of the consignee or shipper (Individual or entity) used for tax purposes.\"\n },\n \"publicKey\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"The public key used for a digital signature.\"\n },\n \"address\": {\n \"type\": \"object\",\n \"description\": \"An object for storing address related information\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n },\n \"partyContactDetails\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"description\": \"A list of contact details - the list cannot be empty\\n\",\n \"items\": {\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\",\n \"description\": \"Contact information for a Party\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the contact\"\n },\n \"phone\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Phone number for the contact\"\n },\n \"email\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"E-mail address for the contact\"\n }\n }\n }\n },\n \"identifyingCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"DCSAResponsibleAgencyCode\",\n \"partyCode\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"DCSAResponsibleAgencyCode\": {\n \"type\": \"string\",\n \"description\": \"A DCSA provided code for [UN/CEFACT](https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred3055.htm) code list providers:\\n- ISO (International Standards Organization)\\n- UNECE (United Nations Economic Commission for Europe)\\n- LLOYD (Lloyd's register of shipping)\\n- BIC (Bureau International des Containeurs)\\n- IMO (International Maritime Organization)\\n- SCAC (Standard Carrier Alpha Code)\\n- ITIGG (International Transport Implementation Guidelines Group)\\n- ITU (International Telecommunication Union)\\n- SMDG (Shipplanning Message Development Group)\\n- EXIS (Exis Technologies Ltd.)\\n- FMC (Federal Maritime Commission)\\n- CBSA (Canada Border Services Agency)\\n- DCSA (Digital Container Shipping Association)\\n- ZZZ (Mutually defined)\\n\\nMore details can be found on [GitHub](https://github.com/dcsaorg/DCSA-Information-Model/blob/master/datamodel/referencedata.d/codelistresponsibleagencycodes.csv).\\n\",\n \"enum\": [\n \"ISO\",\n \"UNECE\",\n \"LLOYD\",\n \"BIC\",\n \"IMO\",\n \"SCAC\",\n \"ITIGG\",\n \"ITU\",\n \"SMDG\",\n \"EXIS\",\n \"FMC\",\n \"CBSA\",\n \"DCSA\",\n \"ZZZ\"\n ]\n },\n \"partyCode\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Code to identify the party as provided by the agency\\n\"\n },\n \"codeListName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the list, provided by the responsible agency\\n\"\n }\n }\n }\n }\n }\n },\n \"partyFunction\": {\n \"type\": \"string\",\n \"description\": \"Specifies the role of the party in the context of the given Shipping Instruction.\\n- OS (Original shipper)\\n- CN (Consignee)\\n- COW (Invoice payer on behalf of the consignor (shipper))\\n- COX (Invoice payer on behalf of the consignee)\\n- MS (Document/message issuer/sender)\\n- N1 (First Notify Party)\\n- N2 (Second Notify Party)\\n- NI (Other Notify Party)\\n- DDR (Consignor's freight forwarder)\\n- DDS (Consignee's freight forwarder)\\n- HE (Carrier booking office (transportation office))\\n- SCO (Service contract owner - Defined by DCSA)\\n- BA (Booking Agency)\\n- EBL (EBL Solution Provider)\\n\",\n \"enum\": [\n \"OS\",\n \"CN\",\n \"COW\",\n \"COX\",\n \"MS\",\n \"N1\",\n \"N2\",\n \"NI\",\n \"DDR\",\n \"DDS\",\n \"HE\",\n \"SCO\",\n \"BA\",\n \"EBL\"\n ]\n },\n \"displayedAddress\": {\n \"type\": \"array\",\n \"items\": {\n \"maxLength\": 250,\n \"type\": \"string\",\n \"description\": \"A single address line.\"\n }\n },\n \"isToBeNotified\": {\n \"type\": \"boolean\",\n \"description\": \"Used to decide whether the party will be notified of the arrival of the cargo.\"\n }\n }\n }\n },\n \"shipmentLocations\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"location\",\n \"shipmentLocationTypeCode\"\n ],\n \"type\": \"object\",\n \"description\": \"maps the relationship between Shipment and Location, e.g., the `Place of Receipt` and the `Place of Delivery` for a specific shipment. This is a reusable object between `Booking` and `Transport Document`\\n\",\n \"properties\": {\n \"location\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the location in the `ShipmentLocation`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"shipmentLocationTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Links to the Location Type Code defined by DCSA.\\n- PRE (Place of Receipt)\\n- POL (Port of Loading)\\n- POD (Port of Discharge)\\n- PDE (Place of Delivery)\\n- PCF (Pre-carriage From)\\n- PSR (Pre-carriage under shipper's responsibility)\\n- OIR (Onward In-land Routing)\\n- DRL (Depot release location)\\n- ORI (Origin of goods)\\n- IEL (Container intermediate export stop off location)\\n- PTP (Prohibited transshipment port)\\n- RTP (Requested transshipment port)\\n- FCD (Full container drop-off location)\\n- ECP (Empty container pick-up date and time)\\n\",\n \"enum\": [\n \"PRE\",\n \"POL\",\n \"POD\",\n \"PDE\",\n \"PCF\",\n \"PSR\",\n \"OIR\",\n \"DRL\",\n \"ORI\",\n \"IEL\",\n \"PTP\",\n \"RTP\",\n \"FCD\",\n \"ECP\"\n ]\n },\n \"eventDateTime\": {\n \"type\": \"string\",\n \"description\": \"A date when the event is taking place at the location\\n\",\n \"format\": \"date-time\"\n }\n }\n }\n }\n }\n}\n", + "value": "{\n \"type\": \"object\",\n \"description\": \"includes the information requested in a booking, service terms and types as well as the assigned booking reference by the carrier.\\n\",\n \"required\": [\n \"bookingRequestCreatedDateTime\",\n \"bookingRequestUpdatedDateTime\",\n \"cargoMovementTypeAtDestination\",\n \"cargoMovementTypeAtOrigin\",\n \"carrierBookingRequestReference\",\n \"requestedEquipments\",\n \"communicationChannelCode\",\n \"deliveryTypeAtDestination\",\n \"documentStatus\",\n \"isEquipmentSubstitutionAllowed\",\n \"isExportDeclarationRequired\",\n \"isImportLicenseRequired\",\n \"isPartialLoadAllowed\",\n \"receiptTypeAtOrigin\",\n \"serviceContractReference\"\n ],\n \"properties\": {\n \"carrierBookingRequestReference\": {\n \"type\": \"string\",\n \"description\": \"A reference to the booking during the booking request phase\\n\"\n },\n \"documentStatus\": {\n \"type\": \"string\",\n \"description\": \"The status of the booking. Possible values are:\\n- RECE (Received)\\n- PENU (Pending Update)\\n- PENC (Pending Confirmation)\\n- CONF (Confirmed)\\n- REJE (Rejected)\\n- CANC (Cancelled)\\n- CMPL (Completed)\\n\\nMore details can be found on GitHub. Be aware that the list linked to is the `ShipmentEventTypeCodes` which is equivalent to `documentStatus`, the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"RECE\",\n \"PENU\",\n \"PENC\",\n \"CONF\",\n \"REJE\",\n \"CANC\",\n \"CMPL\"\n ]\n },\n \"bookingRequestCreatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"The date and time when the booking request was created\\n\",\n \"format\": \"date-time\"\n },\n \"bookingRequestUpdatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Last date and time when the booking request was updated\\n\",\n \"format\": \"date-time\"\n },\n \"receiptTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Origin. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"deliveryTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Destination. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"cargoMovementTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the loading of the cargo into the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"cargoMovementTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the unloading of the cargo out of the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"serviceContractReference\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Reference number for agreement between shipper and carrier through which the shipper commits to provide a certain minimum quantity of cargo over a fixed period, and the carrier commits to a certain rate or rate schedule.\"\n },\n \"carrierExportVoyageNumber\": {\n \"type\": \"string\",\n \"maxLength\": 50,\n \"description\": \"\"\n },\n \"universalExportVoyageReference\": {\n \"type\": \"string\",\n \"maxLength\": 5,\n \"description\": \"\"\n },\n \"carrierServiceCode\": {\n \"type\": \"string\",\n \"maxLength\": 11,\n \"description\": \"\"\n },\n \"universalServiceReference\": {\n \"type\": \"string\",\n \"maxLength\": 8,\n \"description\": \"\"\n },\n \"vesselName\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"The name of the Vessel given by the Vessel Operator and registered with IMO.\\n\"\n },\n \"exportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an export voyage. The vessel operator-specific identifier of the export Voyage. The result will only return schedules including the export Voyage Number\\n\"\n },\n \"declaredValue\": {\n \"type\": \"number\",\n \"description\": \"The value of the cargo that the shipper declares to avoid the carrier's limitation of liability and \\\"Ad Valorem\\\" freight, i.e. freight which is calculated based on the value of the goods declared by the shipper.\",\n \"minimum\": -3.402823669209385E+38,\n \"maximum\": 3.402823669209385E+38\n },\n \"declaredValueCurrency\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency used for the declared value, using the 3-character code defined by ISO 4217.\"\n },\n \"paymentTermCode\": {\n \"type\": \"string\",\n \"description\": \"Indicates whether freight & charges are due for payment before the shipment is effected, practically before the transport document is released to shipper (Prepaid) or before the shipment is finalized meaning cargo released to consignee (Collect)\\n- PRE (Prepaid)\\n- COL (Collect)\\n\",\n \"enum\": [\n \"PRE\",\n \"COL\"\n ]\n },\n \"isPartialLoadAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indication whether the shipper agrees to load part of the shipment in case where not all of the cargo is delivered within cut-off.\\n\"\n },\n \"isExportDeclarationRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Information provided by the shipper whether an export declaration is required for this particular shipment/commodity/destination.\\n\"\n },\n \"exportDeclarationReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A government document permitting designated goods to be shipped out of the country. Reference number assigned by an issuing authority to an Export License. The export license must be valid at time of departure. Required if Export declaration required is ÔÇÿTrue'.\\n\"\n },\n \"isImportLicenseRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Information provided by the shipper whether an import permit or license is required for this particular shipment/commodity/destination.\\n\"\n },\n \"importLicenseReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A certificate, issued by countries exercising import controls, that permits importation of the articles stated in the license. Reference number assigned by an issuing authority to an Import License. The import license number must be valid at time of arrival. Required if import license required is ÔÇÿTrue'.\\n\"\n },\n \"isAMSACIFilingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Customs filing for US (AMS) or Canadian (ACI) customs\\n\"\n },\n \"isDestinationFilingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the shipper will perform the AMS/ACI filing directly or not. Mandatory if AMS/ACI filing is required\\n\"\n },\n \"contractQuotationReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"Information provided by the shipper to identify whether pricing for the shipment has been agreed via a contract or a quotation reference. Mandatory if service contract (owner) is not provided.\\n\"\n },\n \"expectedDepartureDate\": {\n \"type\": \"string\",\n \"description\": \"The date when the shipment is expected to be loaded on board a vessel as provided by the shipper or its agent. If vessel/voyage or expected date of arrival is not provided, this is mandatory\\n\",\n \"format\": \"date\"\n },\n \"expectedArrivalAtPlaceOfDeliveryStartDate\": {\n \"type\": \"string\",\n \"description\": \"The start date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryEndDate`) for when the shipment is expected to arrive at final destination. If vessel/voyage or `expectedDepartureDate` is not provided, this is mandatory together with `expectedArrivalAtPlaceOfDeliveryEndDate`\\n\",\n \"format\": \"date\"\n },\n \"expectedArrivalAtPlaceOfDeliveryEndDate\": {\n \"type\": \"string\",\n \"description\": \"The end date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryStartDate`) for when the shipment is expected to arrive at final destination. If vessel/voyage or `expectedDepartureDate` is not provided, this is mandatory together with `expectedArrivalAtPlaceOfDeliveryStartDate`\\n\",\n \"format\": \"date\"\n },\n \"transportDocumentTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Specifies the type of the transport document\\n- BOL (Bill of Lading)\\n- SWB (Sea Waybill)\\n\",\n \"enum\": [\n \"BOL\",\n \"SWB\"\n ]\n },\n \"transportDocumentReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"A unique number allocated by the shipping line to the transport document and the main number used for the tracking of the status of the shipment.\\n\"\n },\n \"bookingChannelReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"Identification number provided by the platform/channel used for booking request/confirmation, ex: Inttra booking reference, or GTNexus, other. Conditional on booking channel being used\\n\"\n },\n \"incoTerms\": {\n \"type\": \"string\",\n \"description\": \"Transport obligations, costs and risks as agreed between buyer and seller.\\n- FCA (Free Carrier)\\n- FOB (Free on Board)\\n\",\n \"enum\": [\n \"FCA\",\n \"FOB\"\n ]\n },\n \"communicationChannelCode\": {\n \"maxLength\": 2,\n \"type\": \"string\",\n \"description\": \"Specifying which communication channel is to be used for this booking e.g.\\n- EI (EDI transmission)\\n- EM (Email)\\n- AO (API)\\n\",\n \"enum\": [\n \"EI\",\n \"EM\",\n \"AO\"\n ]\n },\n \"isEquipmentSubstitutionAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates if an alternate equipment type can be provided by the carrier.\\n\"\n },\n \"vesselIMONumber\": {\n \"maxLength\": 7,\n \"type\": \"string\",\n \"description\": \"The unique reference for a registered Vessel. The reference is the International Maritime Organisation (IMO) number, also sometimes known as the Lloyd's register code, which does not change during the lifetime of the vessel\\n\"\n },\n \"preCarriageModeOfTransportCode\": {\n \"type\": \"string\",\n \"description\": \"The mode of transport as defined by DCSA.\\n\",\n \"enum\": [\n \"VESSEL\",\n \"RAIL\",\n \"TRUCK\",\n \"BARGE\"\n ]\n },\n \"invoicePayableAt\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Invoice Payable At` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\"\n },\n \"placeOfBLIssue\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Place of B/L Issue` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\\nThe location where the original transport document (`Bill of Lading`) will be issued.\\n\"\n },\n \"requestedEquipments\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"isShipperOwned\",\n \"ISOEquipmentCode\",\n \"units\",\n \"commodities\"\n ],\n \"type\": \"object\",\n \"description\": \"The requested equipments for the booking\\n\",\n \"properties\": {\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"Unique code for the different equipment size/type used for transporting commodities. The code is a concatenation of ISO Equipment Size Code and ISO Equipment Type Code A and follows the ISO 6346 standard.\"\n },\n \"units\": {\n \"type\": \"integer\",\n \"description\": \"Number of requested equipment units\\n\",\n \"minimum\": 1,\n \"maximum\": 2147483647\n },\n \"equipmentReferences\": {\n \"type\": \"array\",\n \"items\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"The unique identifier for the equipment, which should follow the BIC ISO Container Identification Number where possible.\\nAccording to ISO 6346, a container identification code consists of a 4-letter prefix and a 7-digit number (composed of a 3-letter owner code, a category identifier, a serial number, and a check-digit). If a container does not comply with ISO 6346, it is suggested to follow Recommendation #2 ÔÇ£Container with non-ISO identificationÔÇØ from SMDG.\\n\"\n }\n },\n \"isShipperOwned\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the container is shipper owned (SOC).\"\n },\n \"commodities\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cargoGrossWeight\",\n \"cargoGrossWeightUnit\",\n \"commodityType\"\n ],\n \"type\": \"object\",\n \"description\": \"Type of goods in the booking, defined by its commodity type\\n\",\n \"properties\": {\n \"commodityType\": {\n \"maxLength\": 550,\n \"type\": \"string\",\n \"description\": \"High-level description of goods to be shipped which allow the carrier to confirm acceptance and commercial terms. To be replaced by \\\"description of goods\\\" upon submission of shipping instruction\\n\"\n },\n \"HSCode\": {\n \"maxLength\": 10,\n \"type\": \"string\",\n \"description\": \"Used by customs to classify the product being shipped.\"\n },\n \"cargoGrossWeight\": {\n \"type\": \"number\",\n \"description\": \"The grand total weight of the cargo and weight per container(s) including packaging items being carried, which can be expressed in imperial or metric terms, as provided by the shipper. Excludes the tare weight of the container(s).\",\n \"minimum\": -3.402823669209385E+38,\n \"maximum\": 3.402823669209385E+38\n },\n \"cargoGrossWeightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"cargoGrossVolume\": {\n \"type\": \"number\",\n \"description\": \"The grand total volume of the commodity\",\n \"minimum\": -3.402823669209385E+38,\n \"maximum\": 3.402823669209385E+38\n },\n \"cargoGrossVolumeUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in either imperial or metric terms\\n- FTQ (Cubic meter)\\n- MTQ (Cubic foot)\\n\",\n \"enum\": [\n \"MTQ\",\n \"FTQ\"\n ]\n },\n \"numberOfPackages\": {\n \"type\": \"integer\",\n \"description\": \"Specifies the number of packages associated with this cargo item\",\n \"minimum\": -2147483648,\n \"maximum\": 2147483647\n },\n \"exportLicenseIssueDate\": {\n \"type\": \"string\",\n \"description\": \"Issue date of the export license applicable to the booking. Mandatory to provide in booking request for specific commodities\\n\",\n \"format\": \"date\"\n },\n \"exportLicenseExpiryDate\": {\n \"type\": \"string\",\n \"description\": \"Expiry date of the export license applicable to the booking.\\n\\nMandatory to provide in booking request for specific commodities.\\n\",\n \"format\": \"date\"\n }\n }\n }\n }\n }\n }\n },\n \"references\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"type\",\n \"value\"\n ],\n \"type\": \"object\",\n \"description\": \"references provided by the shipper or freight forwarder at the time of booking or at the time of providing shipping instruction. Carriers share it back when providing track and trace event updates, some are also printed on the B/L. Customers can use these references to track shipments in their internal systems.\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The reference type codes defined by DCSA.\\n- FF (Freight Forwarder's Reference)\\n- SI (Shipper's Reference)\\n- PO (Purchase Order Reference)\\n- CR (Customer's Reference)\\n- AAO (Consignee's Reference)\\n- ECR (Empty container release reference)\\n- CSI (Customer shipment ID)\\n- BPR (Booking party reference number)\\n- BID (Booking Request ID)\\n\\nMore details can be found on GitHub. Be aware that the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"FF\",\n \"SI\",\n \"PO\",\n \"CR\",\n \"AAO\",\n \"ECR\",\n \"CSI\",\n \"BPR\",\n \"BID\",\n \"EQ\",\n \"RUC\",\n \"DUE\",\n \"CER\",\n \"AES\"\n ]\n },\n \"value\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The actual value of the reference.\"\n }\n }\n }\n },\n \"documentParties\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"isToBeNotified\",\n \"party\",\n \"partyFunction\"\n ],\n \"type\": \"object\",\n \"description\": \"stores the parties involved in the transport document.\",\n \"properties\": {\n \"party\": {\n \"required\": [\n \"partyContactDetails\"\n ],\n \"type\": \"object\",\n \"description\": \"refers to a company or a legal entity.\",\n \"properties\": {\n \"partyName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the party.\"\n },\n \"address\": {\n \"type\": \"object\",\n \"description\": \"An object for storing address related information\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n },\n \"partyContactDetails\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"description\": \"A list of contact details - the list cannot be empty\\n\",\n \"items\": {\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\",\n \"description\": \"Contact information for a Party\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the contact\"\n },\n \"phone\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Phone number for the contact\"\n },\n \"email\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"E-mail address for the contact\"\n }\n }\n }\n },\n \"identifyingCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"DCSAResponsibleAgencyCode\",\n \"partyCode\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"DCSAResponsibleAgencyCode\": {\n \"type\": \"string\",\n \"description\": \"A DCSA provided code for [UN/CEFACT](https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred3055.htm) code list providers:\\n- ISO (International Standards Organization)\\n- UNECE (United Nations Economic Commission for Europe)\\n- LLOYD (Lloyd's register of shipping)\\n- BIC (Bureau International des Containeurs)\\n- IMO (International Maritime Organization)\\n- SCAC (Standard Carrier Alpha Code)\\n- ITIGG (International Transport Implementation Guidelines Group)\\n- ITU (International Telecommunication Union)\\n- SMDG (Shipplanning Message Development Group)\\n- EXIS (Exis Technologies Ltd.)\\n- FMC (Federal Maritime Commission)\\n- CBSA (Canada Border Services Agency)\\n- DCSA (Digital Container Shipping Association)\\n- ZZZ (Mutually defined)\\n\\nMore details can be found on [GitHub](https://github.com/dcsaorg/DCSA-Information-Model/blob/master/datamodel/referencedata.d/codelistresponsibleagencycodes.csv).\\n\",\n \"enum\": [\n \"ISO\",\n \"UNECE\",\n \"LLOYD\",\n \"BIC\",\n \"IMO\",\n \"SCAC\",\n \"ITIGG\",\n \"ITU\",\n \"SMDG\",\n \"EXIS\",\n \"FMC\",\n \"CBSA\",\n \"DCSA\",\n \"ZZZ\"\n ]\n },\n \"partyCode\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Code to identify the party as provided by the agency\\n\"\n },\n \"codeListName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the list, provided by the responsible agency\\n\"\n }\n }\n }\n }\n }\n },\n \"partyFunction\": {\n \"type\": \"string\",\n \"description\": \"Specifies the role of the party in the context of the given Shipping Instruction.\\n- OS (Original shipper)\\n- CN (Consignee)\\n- COW (Invoice payer on behalf of the consignor (shipper))\\n- COX (Invoice payer on behalf of the consignee)\\n- MS (Document/message issuer/sender)\\n- N1 (First Notify Party)\\n- N2 (Second Notify Party)\\n- NI (Other Notify Party)\\n- DDR (Consignor's freight forwarder)\\n- DDS (Consignee's freight forwarder)\\n- HE (Carrier booking office (transportation office))\\n- SCO (Service contract owner - Defined by DCSA)\\n- BA (Booking Agency)\\n- EBL (EBL Solution Provider)\\n\",\n \"enum\": [\n \"OS\",\n \"CN\",\n \"COW\",\n \"COX\",\n \"MS\",\n \"N1\",\n \"N2\",\n \"NI\",\n \"DDR\",\n \"DDS\",\n \"HE\",\n \"SCO\",\n \"BA\",\n \"EBL\"\n ]\n },\n \"displayedAddress\": {\n \"type\": \"array\",\n \"items\": {\n \"maxLength\": 250,\n \"type\": \"string\",\n \"description\": \"A single address line.\"\n }\n },\n \"isToBeNotified\": {\n \"type\": \"boolean\",\n \"description\": \"Used to decide whether the party will be notified of the arrival of the cargo.\"\n }\n }\n }\n },\n \"shipmentLocations\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"location\",\n \"shipmentLocationTypeCode\"\n ],\n \"type\": \"object\",\n \"description\": \"maps the relationship between Shipment and Location, e.g., the `Place of Receipt` and the `Place of Delivery` for a specific shipment. This is a reusable object between `Booking` and `Transport Document`\\n\",\n \"properties\": {\n \"location\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the location in the `ShipmentLocation`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"shipmentLocationTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Links to the Location Type Code defined by DCSA.\\n- PRE (Place of Receipt)\\n- POL (Port of Loading)\\n- POD (Port of Discharge)\\n- PDE (Place of Delivery)\\n- PCF (Pre-carriage From)\\n- PSR (Pre-carriage under shipper's responsibility)\\n- OIR (Onward In-land Routing)\\n- DRL (Depot release location)\\n- ORI (Origin of goods)\\n- IEL (Container intermediate export stop off location)\\n- PTP (Prohibited transshipment port)\\n- RTP (Requested transshipment port)\\n- FCD (Full container drop-off location)\\n- ECP (Empty container pick-up date and time)\\n\",\n \"enum\": [\n \"PRE\",\n \"POL\",\n \"POD\",\n \"PDE\",\n \"PCF\",\n \"PSR\",\n \"OIR\",\n \"DRL\",\n \"ORI\",\n \"IEL\",\n \"PTP\",\n \"RTP\",\n \"FCD\",\n \"ECP\"\n ]\n },\n \"eventDateTime\": {\n \"type\": \"string\",\n \"description\": \"A date when the event is taking place at the location\\n\",\n \"format\": \"date-time\"\n }\n }\n }\n }\n }\n}\n", "type": "string" }, { @@ -4821,12 +4821,12 @@ }, { "key": "SHIPMENT_RESPONSE_SCHEMA", - "value": "{\n \"required\": [\n \"booking\",\n \"carrierBookingReference\",\n \"shipmentCreatedDateTime\",\n \"transports\"\n ],\n \"type\": \"object\",\n \"description\": \"Shipment\\n\",\n \"properties\": {\n \"carrierBookingReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A set of unique characters provided by carrier to identify a booking.\"\n },\n \"shipmentCreatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"The date and time when the shipment was created (equivalent to when the Booking was confirmed).\\n\",\n \"format\": \"date-time\"\n },\n \"shipmentUpdatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Last date and time when the Shipment was updated.\\n\",\n \"format\": \"date-time\"\n },\n \"termsAndConditions\": {\n \"type\": \"string\",\n \"description\": \"Carrier general terms and conditions for the booking.\\n\"\n },\n \"booking\": {\n \"type\": \"object\",\n \"description\": \"includes the information requested in a booking, service terms and types as well as the assigned booking reference by the carrier.\\n\",\n \"required\": [\n \"bookingRequestCreatedDateTime\",\n \"bookingRequestUpdatedDateTime\",\n \"cargoMovementTypeAtDestination\",\n \"cargoMovementTypeAtOrigin\",\n \"carrierBookingRequestReference\",\n \"requestedEquipments\",\n \"communicationChannelCode\",\n \"deliveryTypeAtDestination\",\n \"documentStatus\",\n \"isEquipmentSubstitutionAllowed\",\n \"isExportDeclarationRequired\",\n \"isImportLicenseRequired\",\n \"isPartialLoadAllowed\",\n \"receiptTypeAtOrigin\"\n ],\n \"properties\": {\n \"carrierBookingRequestReference\": {\n \"type\": \"string\",\n \"description\": \"A reference to the booking during the booking request phase\\n\"\n },\n \"documentStatus\": {\n \"type\": \"string\",\n \"description\": \"The status of the booking. Possible values are:\\n- RECE (Received)\\n- PENU (Pending Update)\\n- PENC (Pending Confirmation)\\n- CONF (Confirmed)\\n- REJE (Rejected)\\n- CANC (Cancelled)\\n- CMPL (Completed)\\n\\nMore details can be found on GitHub. Be aware that the list linked to is the `ShipmentEventTypeCodes` which is equivalent to `documentStatus`, the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"RECE\",\n \"PENU\",\n \"PENC\",\n \"CONF\",\n \"REJE\",\n \"CANC\",\n \"CMPL\"\n ]\n },\n \"bookingRequestCreatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"The date and time when the booking request was created\\n\",\n \"format\": \"date-time\"\n },\n \"bookingRequestUpdatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Last date and time when the booking request was updated\\n\",\n \"format\": \"date-time\"\n },\n \"receiptTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Origin. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"deliveryTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Destination. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"cargoMovementTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the loading of the cargo into the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"cargoMovementTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the unloading of the cargo out of the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"serviceContractReference\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Reference number for agreement between shipper and carrier through which the shipper commits to provide a certain minimum quantity of cargo over a fixed period, and the carrier commits to a certain rate or rate schedule.\"\n },\n \"vesselName\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"The name of the Vessel given by the Vessel Operator and registered with IMO.\\n\"\n },\n \"carrierExportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an export voyage. The vessel operator-specific identifier of the export Voyage.\\n\"\n },\n \"universalExportVoyageReference\": {\n \"pattern\": \"\\\\d{2}[0-9A-Z]{2}[NEWS]\",\n \"type\": \"string\",\n \"description\": \"A global unique voyage reference for the export Voyage, as per DCSA standard, agreed by VSA partners for the voyage. The voyage reference must match the regular expression pattern: `\\\\d{2}[0-9A-Z]{2}[NEWS]`\\n- `2 digits` for the year\\n- `2 alphanumeric characters` for the sequence number of the voyage\\n- `1 character` for the direction/haul (`N`orth, `E`ast, `W`est or `S`outh).\\n\"\n },\n \"declaredValue\": {\n \"type\": \"number\",\n \"description\": \"The value of the cargo that the shipper declares to avoid the carrier's limitation of liability and \\\"Ad Valorem\\\" freight, i.e. freight which is calculated based on the value of the goods declared by the shipper.\"\n },\n \"declaredValueCurrency\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency used for the declared value, using the 3-character code defined by ISO 4217.\"\n },\n \"paymentTermCode\": {\n \"type\": \"string\",\n \"description\": \"Indicates whether freight & charges are due for payment before the shipment is effected, practically before the transport document is released to shipper (Prepaid) or before the shipment is finalized meaning cargo released to consignee (Collect)\\n- PRE (Prepaid)\\n- COL (Collect)\\n\",\n \"enum\": [\n \"PRE\",\n \"COL\"\n ]\n },\n \"isPartialLoadAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indication whether the shipper agrees to load part of the shipment in case where not all of the cargo is delivered within cut-off.\\n\"\n },\n \"isExportDeclarationRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Information provided by the shipper whether an export declaration is required for this particular shipment/commodity/destination.\\n\"\n },\n \"exportDeclarationReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A government document permitting designated goods to be shipped out of the country. Reference number assigned by an issuing authority to an Export License. The export license must be valid at time of departure. Required if Export declaration required is ÔÇÿTrueÔÇÖ.\\n\"\n },\n \"isImportLicenseRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Information provided by the shipper whether an import permit or license is required for this particular shipment/commodity/destination.\\n\"\n },\n \"importLicenseReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A certificate, issued by countries exercising import controls, that permits importation of the articles stated in the license. Reference number assigned by an issuing authority to an Import License. The import license number must be valid at time of arrival. Required if import license required is ÔÇÿTrueÔÇÖ.\\n\"\n },\n \"isAMSACIFilingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Customs filing for US (AMS) or Canadian (ACI) customs\\n\"\n },\n \"isDestinationFilingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the shipper will perform the AMS/ACI filing directly or not. Mandatory if AMS/ACI filing is required\\n\"\n },\n \"contractQuotationReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"Information provided by the shipper to identify whether pricing for the shipment has been agreed via a contract or a quotation reference. Mandatory if service contract (owner) is not provided.\\n\"\n },\n \"expectedDepartureDate\": {\n \"type\": \"string\",\n \"description\": \"The date when the shipment is expected to be loaded on board a vessel as provided by the shipper or its agent. If vessel/voyage or expected date of arrival is not provided, this is mandatory\\n\"\n },\n \"expectedArrivalAtPlaceOfDeliveryStartDate\": {\n \"type\": \"string\",\n \"description\": \"The start date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryEndDate`) for when the shipment is expected to arrive at final destination. If vessel/voyage or `expectedDepartureDate` is not provided, this is mandatory together with `expectedArrivalAtPlaceOfDeliveryEndDate`\\n\"\n },\n \"expectedArrivalAtPlaceOfDeliveryEndDate\": {\n \"type\": \"string\",\n \"description\": \"The end date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryStartDate`) for when the shipment is expected to arrive at final destination. If vessel/voyage or `expectedDepartureDate` is not provided, this is mandatory together with `expectedArrivalAtPlaceOfDeliveryStartDate`\\n\"\n },\n \"transportDocumentTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Specifies the type of the transport document\\n- BOL (Bill of Lading)\\n- SWB (Sea Waybill)\\n\",\n \"enum\": [\n \"BOL\",\n \"SWB\"\n ]\n },\n \"transportDocumentReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"A unique number allocated by the shipping line to the transport document and the main number used for the tracking of the status of the shipment.\\n\"\n },\n \"bookingChannelReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"Identification number provided by the platform/channel used for booking request/confirmation, ex: Inttra booking reference, or GTNexus, other. Conditional on booking channel being used\\n\"\n },\n \"incoTerms\": {\n \"type\": \"string\",\n \"description\": \"Transport obligations, costs and risks as agreed between buyer and seller.\\n- FCA (Free Carrier)\\n- FOB (Free on Board)\\n\",\n \"enum\": [\n \"FCA\",\n \"FOB\"\n ]\n },\n \"communicationChannelCode\": {\n \"maxLength\": 2,\n \"type\": \"string\",\n \"description\": \"Specifying which communication channel is to be used for this booking e.g.\\n- EI (EDI transmission)\\n- EM (Email)\\n- AO (API)\\n\",\n \"enum\": [\n \"EI\",\n \"EM\",\n \"AO\"\n ]\n },\n \"isEquipmentSubstitutionAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates if an alternate equipment type can be provided by the carrier.\\n\"\n },\n \"vesselIMONumber\": {\n \"maxLength\": 7,\n \"type\": \"string\",\n \"description\": \"The unique reference for a registered Vessel. The reference is the International Maritime Organisation (IMO) number, also sometimes known as the Lloyd's register code, which does not change during the lifetime of the vessel\\n\"\n },\n \"preCarriageModeOfTransportCode\": {\n \"type\": \"string\",\n \"description\": \"The mode of transport as defined by DCSA.\\n\",\n \"enum\": [\n \"VESSEL\",\n \"RAIL\",\n \"TRUCK\",\n \"BARGE\"\n ]\n },\n \"invoicePayableAt\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Invoice Payable At` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\"\n },\n \"placeOfBLIssue\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Place of B/L Issue` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\\nThe location where the original transport document (`Bill of Lading`) will be issued.\\n\"\n },\n \"references\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"type\",\n \"value\"\n ],\n \"type\": \"object\",\n \"description\": \"references provided by the shipper or freight forwarder at the time of booking or at the time of providing shipping instruction. Carriers share it back when providing track and trace event updates, some are also printed on the B/L. Customers can use these references to track shipments in their internal systems.\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The reference type codes defined by DCSA.\\n- FF (Freight ForwarderÔÇÖs Reference)\\n- SI (ShipperÔÇÖs Reference)\\n- PO (Purchase Order Reference)\\n- CR (CustomerÔÇÖs Reference)\\n- AAO (ConsigneeÔÇÖs Reference)\\n- ECR (Empty container release reference)\\n- CSI (Customer shipment ID)\\n- BPR (Booking party reference number)\\n- BID (Booking Request ID)\\n- RUC (Registro ├Ünico del Contribuyente)\\n- DUE (Declara├º├úo ├Ünica de Exporta├º├úo)\\n- CER (Canadian Export Reporting System)\\n- AES (Automated Export System)\\n\\nMore details can be found on [GitHub](https://github.com/dcsaorg/DCSA-Information-Model/blob/master/datamodel/referencedata.d/referencetypes.csv). Be aware that the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"FF\",\n \"SI\",\n \"PO\",\n \"CR\",\n \"AAO\",\n \"ECR\",\n \"CSI\",\n \"BPR\",\n \"BID\",\n \"RUC\",\n \"DUE\",\n \"CER\",\n \"AES\"\n ]\n },\n \"value\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The actual value of the reference.\"\n }\n }\n }\n },\n \"requestedEquipments\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"isShipperOwned\",\n \"units\",\n \"commodities\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\"\n },\n \"tareWeight\": {\n \"type\": \"number\"\n },\n \"units\": {\n \"type\": \"integer\"\n },\n \"commodities\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cargoGrossWeight\",\n \"cargoGrossWeightUnit\",\n \"commodityType\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"commodityType\": {\n \"maxLength\": 550,\n \"type\": \"string\"\n },\n \"HSCode\": {\n \"maxLength\": 10,\n \"type\": \"string\"\n },\n \"cargoGrossWeight\": {\n \"type\": \"number\"\n },\n \"cargoGrossWeightUnit\": {\n \"type\": \"string\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"cargoGrossVolume\": {\n \"type\": \"number\"\n },\n \"cargoGrossVolumeUnit\": {\n \"type\": \"string\",\n \"enum\": [\n \"MTQ\",\n \"FTQ\"\n ]\n },\n \"numberOfPackages\": {\n \"type\": \"integer\"\n },\n \"exportLicenseIssueDate\": {\n \"type\": \"string\"\n },\n \"exportLicenseExpiryDate\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"equipmentReferences\": {\n \"type\": \"array\",\n \"description\": \"An equipment to be used by the shipper if known at the time of booking\\n\",\n \"items\": {\n \"required\": [\n \"equipmentReference\"\n ],\n \"type\": \"object\",\n \"description\": \"used for storing cargo in/on during transport. The equipment size/type is defined by the ISO 6346 code. The most common equipment size/type is 20'/40'/45' Dry Freight Container, but several different versions exist.\\n\",\n \"properties\": {\n \"equipmentReference\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"The unique identifier for the equipment, which should follow the BIC ISO Container Identification Number where possible.\\nAccording to ISO 6346, a container identification code consists of a 4-letter prefix and a 7-digit number (composed of a 3-letter owner code, a category identifier, a serial number, and a check-digit). If a container does not comply with ISO 6346, it is suggested to follow Recommendation #2 ÔÇ£Container with non-ISO identificationÔÇØ from SMDG.\\n\"\n },\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"Unique code for the different equipment size/type used for transporting commodities. The code is a concatenation of ISO Equipment Size Code and ISO Equipment Type Code A and follows the ISO 6346 standard.\"\n },\n \"tareWeight\": {\n \"type\": \"number\",\n \"description\": \"The weight of an empty container (gross container weight).\"\n },\n \"weightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\\n- KGM (Kilograms)\\n- LBR (Pounds)\\n\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n }\n }\n }\n },\n \"isShipperOwned\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the container is shipper owned (SOC).\"\n },\n \"activeReeferSettings\": {\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The specifications for a Reefer equipment. If this object is provided then the equipment linked to this Reefer object should be concidered an **Operated Reefer**.\\n\\nIf not provided the equipment should be concidered a **Non Operated Reefer** in case the `ISOEquipmentCode` indicates a reefer container.\\n\",\n \"oneOf\": [\n {\n \"required\": [\n \"isColdTreatmentRequired\",\n \"isGeneratorSetRequired\",\n \"isHighValueCargo\",\n \"isHotStuffingAllowed\",\n \"isMonitoringRequired\",\n \"isPreCoolingRequired\",\n \"isTracingRequired\",\n \"temperatureSetpoint\",\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The settings for a `Freezer` reefer. Needs temperature setting less than 0-degree Centigrade. Frozen fish, meat, etc. are examples of such categories.\\n\\n**Ventilation orifice** and **drainHoles** are **always** closed\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The type of the reefer - for a `Freezer` this must be `FREZ`\\n\",\n \"enum\": [\n \"FREZ\"\n ]\n },\n \"productName\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"Carrier specific selection box specifying individual commercial product categories ÔÇô Optional Field? Probably not standardise product names ÔÇô Carriers specific\\n\"\n },\n \"isGeneratorSetRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should have a generator set attached at time of release from depot\\n\"\n },\n \"isPreCoolingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should be pre-cooled to the temperature setting required at time of release from depot\\n\"\n },\n \"isColdTreatmentRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo requires cold treatment prior to loading at origin or during transit, but prior arrival at POD\\n\"\n },\n \"isHotStuffingAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo can be stuffed without having the proper temperature\\n\"\n },\n \"isHighValueCargo\": {\n \"type\": \"boolean\",\n \"description\": \"Cargo value exceeds USD XXX K (carrier specific)\\n\"\n },\n \"isTracingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"IOT device enabled/attached\\n\"\n },\n \"isMonitoringRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Monitoring of temperature while the container is being transported\\n\"\n },\n \"extraMaterial\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"e.g. paper, cardboard etc.\\n\"\n },\n \"temperatureSetpoint\": {\n \"type\": \"number\",\n \"description\": \"Target value of the temperature for the Reefer based on the cargo requirement. The temperature is specified in in °C (Celsius)\\n\"\n }\n }\n },\n {\n \"required\": [\n \"isCargoProbe1Required\",\n \"isCargoProbe2Required\",\n \"isCargoProbe3Required\",\n \"isCargoProbe4Required\",\n \"isColdTreatmentRequired\",\n \"isGeneratorSetRequired\",\n \"isHighValueCargo\",\n \"isHotStuffingAllowed\",\n \"isMonitoringRequired\",\n \"isPreCoolingRequired\",\n \"isTracingRequired\",\n \"temperatureSetpoint\",\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The settings for a `SuperFreezer` reefer, exceptional high performance, create and maintain ultra-low temperatures as low as -70┬░C to -30C to +50C to protect the most sensitive and valuable cargoes.\\n\\n**Ventilation orifice** and **drainHoles** are **always** closed\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The type of the reefer - for a `Super freezer` this must be `SUPR`\\n\",\n \"enum\": [\n \"SUPR\"\n ]\n },\n \"productName\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"Carrier specific selection box specifying individual commercial product categories ÔÇô Optional Field? Probably not standardise product names ÔÇô Carriers specific\\n\"\n },\n \"isGeneratorSetRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should have a generator set attached at time of release from depot\\n\"\n },\n \"isPreCoolingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should be pre-cooled to the temperature setting required at time of release from depot\\n\"\n },\n \"isColdTreatmentRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo requires cold treatment prior to loading at origin or during transit, but prior arrival at POD\\n\"\n },\n \"isHotStuffingAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo can be stuffed without having the proper temperature\\n\"\n },\n \"isHighValueCargo\": {\n \"type\": \"boolean\",\n \"description\": \"Cargo value exceeds USD XXX K (carrier specific)\\n\"\n },\n \"isCargoProbe1Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 1 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe2Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 2 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe3Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 3 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe4Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 4 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isTracingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"IOT device enabled/attached\\n\"\n },\n \"isMonitoringRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Monitoring of temperature while the container is being transported\\n\"\n },\n \"extraMaterial\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"e.g. paper, cardboard etc.\\n\"\n },\n \"temperatureSetpoint\": {\n \"type\": \"number\",\n \"description\": \"Target value of the temperature for the Reefer based on the cargo requirement. The temperature is specified in in °C (Celsius)\\n\"\n }\n }\n },\n {\n \"required\": [\n \"isBulbMode\",\n \"isCargoProbe1Required\",\n \"isCargoProbe2Required\",\n \"isCargoProbe3Required\",\n \"isCargoProbe4Required\",\n \"isColdTreatmentRequired\",\n \"isDrainholesOpen\",\n \"isGeneratorSetRequired\",\n \"isHighValueCargo\",\n \"isHotStuffingAllowed\",\n \"isMonitoringRequired\",\n \"isPreCoolingRequired\",\n \"isTracingRequired\",\n \"isVentilationOpen\",\n \"setpoints\",\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The settings for a `Refridgerated` reefer. Refrigerated reefer is for Cargo which preset temperature exceeds 0-degree Centigrade and is not frozen.\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The type of the reefer - for a `Refrigerated` this must be `REFR`\\n\",\n \"enum\": [\n \"REFR\"\n ]\n },\n \"productName\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"Carrier specific selection box specifying individual commercial product categories ÔÇô Optional Field? Probably not standardise product names ÔÇô Carriers specific\\n\"\n },\n \"isGeneratorSetRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should have a generator set attached at time of release from depot\\n\"\n },\n \"isPreCoolingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should be pre-cooled to the temperature setting required at time of release from depot\\n\"\n },\n \"isColdTreatmentRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo requires cold treatment prior to loading at origin or during transit, but prior arrival at POD\\n\"\n },\n \"isHotStuffingAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo can be stuffed without having the proper temperature\\n\"\n },\n \"isHighValueCargo\": {\n \"type\": \"boolean\",\n \"description\": \"Cargo value exceeds USD XXX K (carrier specific)\\n\"\n },\n \"isVentilationOpen\": {\n \"type\": \"boolean\",\n \"description\": \"If `true` the ventilation orifice is `Open` - if `false` the ventilation orifice is `closed`\\n\"\n },\n \"isCargoProbe1Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 1 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe2Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 2 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe3Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 3 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe4Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 4 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isDrainholesOpen\": {\n \"type\": \"boolean\",\n \"description\": \"Is drainoles open on the container.\\n\"\n },\n \"isBulbMode\": {\n \"type\": \"boolean\",\n \"description\": \"Is special container setting for handling flower bulbs active\\n\"\n },\n \"isTracingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"IOT device enabled/attached\\n\"\n },\n \"isMonitoringRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Monitoring of temperature while the container is being transported\\n\"\n },\n \"extraMaterial\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"e.g. paper, cardboard etc.\\n\"\n },\n \"setpoints\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"\",\n \"properties\": {\n \"temperature\": {\n \"type\": \"number\",\n \"description\": \"Target value of the temperature for the Reefer based on the cargo requirement. The temperature is specified in in °C (Celsius)\\n\"\n },\n \"humidity\": {\n \"type\": \"number\",\n \"description\": \"The percentage of the controlled atmosphere humidity target value\\n\"\n },\n \"airExchange\": {\n \"type\": \"number\",\n \"description\": \"Target value for the air exchange rate which is the rate at which outdoor air replaces indoor air within a Reefer container in MQH (Cubic Meters per Hour)\\n\"\n },\n \"daysPriorToDischarge\": {\n \"type\": \"number\",\n \"description\": \"Number of days prior to arrival at Port of Discharge.\\n\"\n }\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"isCargoProbe1Required\",\n \"isCargoProbe2Required\",\n \"isCargoProbe3Required\",\n \"isCargoProbe4Required\",\n \"isColdTreatmentRequired\",\n \"isGeneratorSetRequired\",\n \"isHighValueCargo\",\n \"isHotStuffingAllowed\",\n \"isMonitoringRequired\",\n \"isPreCoolingRequired\",\n \"isTracingRequired\",\n \"setpoints\",\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The settings for a `Controlled Atmosphere` reefer. Containers use advanced technology for atmosphere control by regulating carbon dioxide, oxygen and nitrogen levels to help slow down ripening, preserving perishable produce and vastly improving its shelf life especially during long-distance trips.\\n\\n**Ventilation orifice* and **drainHoles** are **always** closed\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The type of the reefer - for a `Controlled Atmosphere` this must be `CONA`\\n\",\n \"enum\": [\n \"CONA\"\n ]\n },\n \"productName\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"Carrier specific selection box specifying individual commercial product categories ÔÇô Optional Field? Probably not standardise product names ÔÇô Carriers specific\\n\"\n },\n \"isGeneratorSetRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should have a generator set attached at time of release from depot\\n\"\n },\n \"isPreCoolingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should be pre-cooled to the temperature setting required at time of release from depot\\n\"\n },\n \"isColdTreatmentRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo requires cold treatment prior to loading at origin or during transit, but prior arrival at POD\\n\"\n },\n \"isHotStuffingAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo can be stuffed without having the proper temperature\\n\"\n },\n \"isHighValueCargo\": {\n \"type\": \"boolean\",\n \"description\": \"Cargo value exceeds USD XXX K (carrier specific)\\n\"\n },\n \"isCargoProbe1Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 1 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe2Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 2 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe3Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 3 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe4Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 4 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isTracingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"IOT device enabled/attached\\n\"\n },\n \"isMonitoringRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Monitoring of temperature while the container is being transported\\n\"\n },\n \"extraMaterial\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"e.g. paper, cardboard etc.\\n\"\n },\n \"setpoints\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"\",\n \"properties\": {\n \"temperature\": {\n \"type\": \"number\",\n \"description\": \"Target value of the temperature for the Reefer based on the cargo requirement. The temperature is specified in in °C (Celsius)\\n\"\n },\n \"o2\": {\n \"type\": \"number\",\n \"description\": \"The percentage of the controlled atmosphere O2 target value\\n\"\n },\n \"co2\": {\n \"type\": \"number\",\n \"description\": \"The percentage of the controlled atmosphere CO2 target value\\n\"\n },\n \"humidity\": {\n \"type\": \"number\",\n \"description\": \"The percentage of the controlled atmosphere humidity target value\\n\"\n },\n \"airExchange\": {\n \"type\": \"number\",\n \"description\": \"Target value for the air exchange rate which is the rate at which outdoor air replaces indoor air within a Reefer container in MQH (Cubic Meters per Hour)\\n\"\n },\n \"daysPriorToDischarge\": {\n \"type\": \"number\",\n \"description\": \"Number of days prior to arrival at Port of Discharge.\\n\"\n }\n }\n }\n }\n }\n }\n ]\n }\n }\n }\n },\n \"documentParties\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"isToBeNotified\",\n \"party\",\n \"partyFunction\"\n ],\n \"type\": \"object\",\n \"description\": \"stores the parties involved in the transport document.\",\n \"properties\": {\n \"party\": {\n \"required\": [\n \"partyContactDetails\",\n \"partyName\"\n ],\n \"type\": \"object\",\n \"description\": \"refers to a company or a legal entity.\",\n \"properties\": {\n \"partyName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the party.\"\n },\n \"taxReference1\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"The identifying number of the consignee or shipper (Individual or entity) used for tax purposes.\"\n },\n \"taxReference2\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"Optional second identifying number of the consignee or shipper (Individual or entity) used for tax purposes.\"\n },\n \"publicKey\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"The public key used for a digital signature.\"\n },\n \"address\": {\n \"type\": \"object\",\n \"description\": \"An object for storing address related information\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n },\n \"partyContactDetails\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"description\": \"A list of contact details - the list cannot be empty\\n\",\n \"items\": {\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\",\n \"description\": \"Contact information for a Party\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the contact\"\n },\n \"phone\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Phone number for the contact\"\n },\n \"email\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"E-mail address for the contact\"\n }\n }\n }\n },\n \"identifyingCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"DCSAResponsibleAgencyCode\",\n \"partyCode\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"DCSAResponsibleAgencyCode\": {\n \"type\": \"string\",\n \"description\": \"A DCSA provided code for [UN/CEFACT](https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred3055.htm) code list providers:\\n- ISO (International Standards Organization)\\n- UNECE (United Nations Economic Commission for Europe)\\n- LLOYD (Lloyd's register of shipping)\\n- BIC (Bureau International des Containeurs)\\n- IMO (International Maritime Organization)\\n- SCAC (Standard Carrier Alpha Code)\\n- ITIGG (International Transport Implementation Guidelines Group)\\n- ITU (International Telecommunication Union)\\n- SMDG (Shipplanning Message Development Group)\\n- EXIS (Exis Technologies Ltd.)\\n- FMC (Federal Maritime Commission)\\n- CBSA (Canada Border Services Agency)\\n- DCSA (Digital Container Shipping Association)\\n- DID (Decentralized Identifier)\\n- LEI (Legal Entity Identifier)\\n- ZZZ (Mutually defined)\\n\\nMore details can be found on [GitHub](https://github.com/dcsaorg/DCSA-Information-Model/blob/master/datamodel/referencedata.d/codelistresponsibleagencycodes.csv).\\n\",\n \"enum\": [\n \"ISO\",\n \"UNECE\",\n \"LLOYD\",\n \"BIC\",\n \"IMO\",\n \"SCAC\",\n \"ITIGG\",\n \"ITU\",\n \"SMDG\",\n \"EXIS\",\n \"FMC\",\n \"CBSA\",\n \"DCSA\",\n \"DID\",\n \"LEI\",\n \"ZZZ\"\n ]\n },\n \"partyCode\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Code to identify the party as provided by the agency\\n\"\n },\n \"codeListName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the list, provided by the responsible agency\\n\"\n }\n }\n }\n }\n }\n },\n \"partyFunction\": {\n \"type\": \"string\",\n \"description\": \"Specifies the role of the party in the context of the given Shipping Instruction.\\n- OS (Original shipper)\\n- CN (Consignee)\\n- COW (Invoice payer on behalf of the consignor (shipper))\\n- COX (Invoice payer on behalf of the consignee)\\n- MS (Document/message issuer/sender)\\n- N1 (First Notify Party)\\n- N2 (Second Notify Party)\\n- NI (Other Notify Party)\\n- DDR (Consignor's freight forwarder)\\n- DDS (Consignee's freight forwarder)\\n- HE (Carrier booking office (transportation office))\\n- SCO (Service contract owner - Defined by DCSA)\\n- BA (Booking Agency)\\n- EBL (EBL Solution Provider)\\n\",\n \"enum\": [\n \"OS\",\n \"CN\",\n \"COW\",\n \"COX\",\n \"MS\",\n \"N1\",\n \"N2\",\n \"NI\",\n \"DDR\",\n \"DDS\",\n \"HE\",\n \"SCO\",\n \"BA\",\n \"EBL\"\n ]\n },\n \"displayedAddress\": {\n \"type\": \"array\",\n \"items\": {\n \"maxLength\": 250,\n \"type\": \"string\",\n \"description\": \"A single address line.\"\n }\n },\n \"isToBeNotified\": {\n \"type\": \"boolean\",\n \"description\": \"Used to decide whether the party will be notified of the arrival of the cargo.\"\n }\n }\n }\n },\n \"shipmentLocations\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"location\",\n \"shipmentLocationTypeCode\"\n ],\n \"type\": \"object\",\n \"description\": \"maps the relationship between Shipment and Location, e.g., the `Place of Receipt` and the `Place of Delivery` for a specific shipment. This is a reusable object between `Booking` and `Transport Document`\\n\",\n \"properties\": {\n \"location\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the location in the `ShipmentLocation`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"shipmentLocationTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Links to the Location Type Code defined by DCSA.\\n- PRE (Place of Receipt)\\n- POL (Port of Loading)\\n- POD (Port of Discharge)\\n- PDE (Place of Delivery)\\n- PCF (Pre-carriage From)\\n- PSR (Pre-carriage under shipperÔÇÖs responsibility)\\n- OIR (Onward In-land Routing)\\n- DRL (Depot release location)\\n- ORI (Origin of goods)\\n- IEL (Container intermediate export stop off location)\\n- PTP (Prohibited transshipment port)\\n- RTP (Requested transshipment port)\\n- FCD (Full container drop-off location)\\n- ECP (Empty container pick-up location)\\n\",\n \"enum\": [\n \"PRE\",\n \"POL\",\n \"POD\",\n \"PDE\",\n \"PCF\",\n \"PSR\",\n \"OIR\",\n \"DRL\",\n \"ORI\",\n \"IEL\",\n \"PTP\",\n \"RTP\",\n \"FCD\",\n \"ECP\"\n ]\n },\n \"eventDateTime\": {\n \"type\": \"string\",\n \"description\": \"A date when the event is taking place at the location\\n\",\n \"format\": \"date-time\"\n }\n }\n }\n }\n }\n },\n \"transports\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"dischargeLocation\",\n \"loadLocation\",\n \"plannedArrivalDate\",\n \"plannedDepartureDate\",\n \"transportPlanStage\",\n \"transportPlanStageSequenceNumber\"\n ],\n \"type\": \"object\",\n \"description\": \"A list of transports sorted by ShipmentTransport sequenceNumber\",\n \"properties\": {\n \"transportPlanStage\": {\n \"type\": \"string\",\n \"description\": \"Code qualifying a specific stage of transport e.g. pre-carriage, main carriage transport or on-carriage transport\\n- PRC (Pre-Carriage)\\n- MNC (Main Carriage Transport)\\n- ONC (On-Carriage Transport)\\n\",\n \"enum\": [\n \"PRC\",\n \"MNC\",\n \"ONC\"\n ]\n },\n \"transportPlanStageSequenceNumber\": {\n \"type\": \"integer\",\n \"description\": \"Sequence number of the transport plan stage\\n\"\n },\n \"loadLocation\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the `Load Location`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"dischargeLocation\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the `Discharge Location`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"plannedDepartureDate\": {\n \"type\": \"string\",\n \"description\": \"The planned date of departure.\\n\"\n },\n \"plannedArrivalDate\": {\n \"type\": \"string\",\n \"description\": \"The planned date of arrival.\\n\"\n },\n \"modeOfTransport\": {\n \"type\": \"string\",\n \"description\": \"The mode of transport as defined by DCSA.\\n\",\n \"enum\": [\n \"VESSEL\",\n \"RAIL\",\n \"TRUCK\",\n \"BARGE\"\n ]\n },\n \"vesselName\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"The name of the Vessel given by the Vessel Operator and registered with IMO.\\n\"\n },\n \"vesselIMONumber\": {\n \"maxLength\": 7,\n \"type\": \"string\",\n \"description\": \"The unique reference for a registered Vessel. The reference is the International Maritime Organisation (IMO) number, also sometimes known as the Lloyd's register code, which does not change during the lifetime of the vessel\\n\"\n },\n \"carrierImportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an import voyage. The vessel operator-specific identifier of the import Voyage.\\n\"\n },\n \"universalImportVoyageReference\": {\n \"pattern\": \"\\\\d{2}[0-9A-Z]{2}[NEWS]\",\n \"type\": \"string\",\n \"description\": \"A global unique voyage reference for the import Voyage, as per DCSA standard, agreed by VSA partners for the voyage. The voyage reference must match the regular expression pattern: `\\\\d{2}[0-9A-Z]{2}[NEWS]`\\n- `2 digits` for the year\\n- `2 alphanumeric characters` for the sequence number of the voyage\\n- `1 character` for the direction/haul (`N`orth, `E`ast, `W`est or `S`outh).\\n\"\n },\n \"carrierExportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an export voyage. The vessel operator-specific identifier of the export Voyage.\\n\"\n },\n \"universalExportVoyageReference\": {\n \"pattern\": \"\\\\d{2}[0-9A-Z]{2}[NEWS]\",\n \"type\": \"string\",\n \"description\": \"A global unique voyage reference for the export Voyage, as per DCSA standard, agreed by VSA partners for the voyage. The voyage reference must match the regular expression pattern: `\\\\d{2}[0-9A-Z]{2}[NEWS]`\\n- `2 digits` for the year\\n- `2 alphanumeric characters` for the sequence number of the voyage\\n- `1 character` for the direction/haul (`N`orth, `E`ast, `W`est or `S`outh).\\n\"\n },\n \"isUnderShippersResponsibility\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether mode of transportation for pre-carriage (e.g. truck, barge, rail) is under shipper's responsibility\\n\"\n }\n }\n }\n },\n \"shipmentCutOffTimes\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cutOffDateTime\",\n \"cutOffDateTimeCode\"\n ],\n \"type\": \"object\",\n \"description\": \"Cut off times\\n\",\n \"properties\": {\n \"cutOffDateTimeCode\": {\n \"type\": \"string\",\n \"description\": \"Code for the cut-off time\\n- DCO (Documentation cut-off)\\n- VCO (VGM cut-off)\\n- FCO (FCL delivery cut-off)\\n- LCO (LCL delivery cut-off)\\n- ECP (Empty container pick-up date and time)\\n- EFC (Earliest full-container delivery date)\\n- AFD (AMS Filing Due date)\\n\",\n \"enum\": [\n \"DCO\",\n \"VCO\",\n \"FCO\",\n \"LCO\",\n \"ECP\",\n \"EFC\",\n \"AFD\"\n ]\n },\n \"cutOffDateTime\": {\n \"type\": \"string\",\n \"description\": \"Actual cut-off time\\n\",\n \"format\": \"date-time\"\n }\n }\n }\n },\n \"shipmentLocations\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"location\",\n \"shipmentLocationTypeCode\"\n ],\n \"type\": \"object\",\n \"description\": \"maps the relationship between Shipment and Location, e.g., the `Place of Receipt` and the `Place of Delivery` for a specific shipment. This is a reusable object between `Booking` and `Transport Document`\\n\",\n \"properties\": {\n \"location\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the location in the `ShipmentLocation`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"displayedName\": {\n \"maxLength\": 250,\n \"type\": \"string\",\n \"description\": \"The address of the Party to be displayed on the transport document.\"\n },\n \"shipmentLocationTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Links to the Location Type Code defined by DCSA.\\n- PRE (Place of Receipt)\\n- POL (Port of Loading)\\n- POD (Port of Discharge)\\n- PDE (Place of Delivery)\\n- PCF (Pre-carriage From)\\n- PSR (Pre-carriage under shipperÔÇÖs responsibility)\\n- OIR (Onward In-land Routing)\\n- DRL (Depot release location)\\n- ORI (Origin of goods)\\n- IEL (Container intermediate export stop off location)\\n- PTP (Prohibited transshipment port)\\n- RTP (Requested transshipment port)\\n- FCD (Full container drop-off location)\\n- ECP (Empty container pick-up location)\\n\",\n \"enum\": [\n \"PRE\",\n \"POL\",\n \"POD\",\n \"PDE\",\n \"PCF\",\n \"PSR\",\n \"OIR\",\n \"DRL\",\n \"ORI\",\n \"IEL\",\n \"PTP\",\n \"RTP\",\n \"FCD\",\n \"ECP\"\n ]\n },\n \"eventDateTime\": {\n \"type\": \"string\",\n \"description\": \"A date when the event is taking place at the location\\n\"\n }\n }\n }\n },\n \"confirmedEquipments\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"confirmedEquipmentUnits\"\n ],\n \"type\": \"object\",\n \"description\": \"The confirmed equipments for the booking\\n\",\n \"properties\": {\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"Unique code for the different equipment size/type used for transporting commodities. The code is a concatenation of ISO Equipment Size Code and ISO Equipment Type Code A and follows the ISO 6346 standard.\"\n },\n \"units\": {\n \"type\": \"integer\",\n \"description\": \"Number of confirmed equipment units\\n\"\n }\n }\n }\n },\n \"charges\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"calculationBasis\",\n \"\",\n \"currencyAchargeTypemount\",\n \"currencyCode\",\n \"paymentTermCode\",\n \"quantity\",\n \"unitPrice\"\n ],\n \"type\": \"object\",\n \"description\": \"addresses the monetary value of freight and other service charges for a transport document.\\n\",\n \"properties\": {\n \"chargeName\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"Free text field describing the charge type to apply\\n\"\n },\n \"currencyAmount\": {\n \"type\": \"number\",\n \"description\": \"The monetary value of all freight and other service charges for a transport document, with a maximum of 2-digit decimals.\"\n },\n \"currencyCode\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency for the charge, using a 3-character code (ISO 4217).\"\n },\n \"paymentTermCode\": {\n \"type\": \"string\",\n \"description\": \"Indicates whether freight & charges are due for payment before the shipment is effected, practically before the transport document is released to shipper (Prepaid) or before the shipment is finalized meaning cargo released to consignee (Collect)\\n- PRE (Prepaid)\\n- COL (Collect)\\n\",\n \"enum\": [\n \"PRE\",\n \"COL\"\n ]\n },\n \"calculationBasis\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The code specifying the measure unit used for the corresponding unit price for this cost, such as per day, per ton, per square metre.\"\n },\n \"unitPrice\": {\n \"type\": \"number\",\n \"description\": \"The unit price of this charge item in the currency of the charge.\"\n },\n \"quantity\": {\n \"type\": \"number\",\n \"description\": \"The amount of unit for this charge item.\"\n }\n }\n }\n },\n \"carrierClauses\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"comprises clauses, added by the carrier to the Transport Document, which are subject to local rules/guidelines or certain mandatory information required to be shared with the customer. Usually printed below the cargo description.\\n\",\n \"properties\": {\n \"clauseContent\": {\n \"type\": \"string\",\n \"description\": \"The content of the clause.\"\n }\n }\n }\n }\n }\n}", + "value": "{\n \"required\": [\n \"booking\",\n \"carrierBookingReference\",\n \"shipmentCreatedDateTime\",\n \"transports\"\n ],\n \"type\": \"object\",\n \"description\": \"Shipment\\n\",\n \"properties\": {\n \"carrierBookingReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A set of unique characters provided by carrier to identify a booking.\"\n },\n \"shipmentCreatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"The date and time when the shipment was created (equivalent to when the Booking was confirmed).\\n\",\n \"format\": \"date-time\"\n },\n \"shipmentUpdatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Last date and time when the Shipment was updated.\\n\",\n \"format\": \"date-time\"\n },\n \"termsAndConditions\": {\n \"type\": \"string\",\n \"description\": \"Carrier general terms and conditions for the booking.\\n\"\n },\n \"booking\": {\n \"type\": \"object\",\n \"description\": \"includes the information requested in a booking, service terms and types as well as the assigned booking reference by the carrier.\\n\",\n \"required\": [\n \"bookingRequestCreatedDateTime\",\n \"bookingRequestUpdatedDateTime\",\n \"cargoMovementTypeAtDestination\",\n \"cargoMovementTypeAtOrigin\",\n \"carrierBookingRequestReference\",\n \"requestedEquipments\",\n \"communicationChannelCode\",\n \"deliveryTypeAtDestination\",\n \"documentStatus\",\n \"isEquipmentSubstitutionAllowed\",\n \"isExportDeclarationRequired\",\n \"isImportLicenseRequired\",\n \"isPartialLoadAllowed\",\n \"receiptTypeAtOrigin\"\n ],\n \"properties\": {\n \"carrierBookingRequestReference\": {\n \"type\": \"string\",\n \"description\": \"A reference to the booking during the booking request phase\\n\"\n },\n \"documentStatus\": {\n \"type\": \"string\",\n \"description\": \"The status of the booking. Possible values are:\\n- RECE (Received)\\n- PENU (Pending Update)\\n- PENC (Pending Confirmation)\\n- CONF (Confirmed)\\n- REJE (Rejected)\\n- CANC (Cancelled)\\n- CMPL (Completed)\\n\\nMore details can be found on GitHub. Be aware that the list linked to is the `ShipmentEventTypeCodes` which is equivalent to `documentStatus`, the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"RECE\",\n \"PENU\",\n \"PENC\",\n \"CONF\",\n \"REJE\",\n \"CANC\",\n \"CMPL\"\n ]\n },\n \"bookingRequestCreatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"The date and time when the booking request was created\\n\",\n \"format\": \"date-time\"\n },\n \"bookingRequestUpdatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Last date and time when the booking request was updated\\n\",\n \"format\": \"date-time\"\n },\n \"receiptTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Origin. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"deliveryTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Destination. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"cargoMovementTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the loading of the cargo into the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"cargoMovementTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the unloading of the cargo out of the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"serviceContractReference\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Reference number for agreement between shipper and carrier through which the shipper commits to provide a certain minimum quantity of cargo over a fixed period, and the carrier commits to a certain rate or rate schedule.\"\n },\n \"vesselName\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"The name of the Vessel given by the Vessel Operator and registered with IMO.\\n\"\n },\n \"carrierExportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an export voyage. The vessel operator-specific identifier of the export Voyage.\\n\"\n },\n \"universalExportVoyageReference\": {\n \"pattern\": \"\\\\d{2}[0-9A-Z]{2}[NEWS]\",\n \"type\": \"string\",\n \"description\": \"A global unique voyage reference for the export Voyage, as per DCSA standard, agreed by VSA partners for the voyage. The voyage reference must match the regular expression pattern: `\\\\d{2}[0-9A-Z]{2}[NEWS]`\\n- `2 digits` for the year\\n- `2 alphanumeric characters` for the sequence number of the voyage\\n- `1 character` for the direction/haul (`N`orth, `E`ast, `W`est or `S`outh).\\n\"\n },\n \"declaredValue\": {\n \"type\": \"number\",\n \"description\": \"The value of the cargo that the shipper declares to avoid the carrier's limitation of liability and \\\"Ad Valorem\\\" freight, i.e. freight which is calculated based on the value of the goods declared by the shipper.\"\n },\n \"declaredValueCurrency\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency used for the declared value, using the 3-character code defined by ISO 4217.\"\n },\n \"paymentTermCode\": {\n \"type\": \"string\",\n \"description\": \"Indicates whether freight & charges are due for payment before the shipment is effected, practically before the transport document is released to shipper (Prepaid) or before the shipment is finalized meaning cargo released to consignee (Collect)\\n- PRE (Prepaid)\\n- COL (Collect)\\n\",\n \"enum\": [\n \"PRE\",\n \"COL\"\n ]\n },\n \"isPartialLoadAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indication whether the shipper agrees to load part of the shipment in case where not all of the cargo is delivered within cut-off.\\n\"\n },\n \"isExportDeclarationRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Information provided by the shipper whether an export declaration is required for this particular shipment/commodity/destination.\\n\"\n },\n \"exportDeclarationReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A government document permitting designated goods to be shipped out of the country. Reference number assigned by an issuing authority to an Export License. The export license must be valid at time of departure. Required if Export declaration required is ÔÇÿTrueÔÇÖ.\\n\"\n },\n \"isImportLicenseRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Information provided by the shipper whether an import permit or license is required for this particular shipment/commodity/destination.\\n\"\n },\n \"importLicenseReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A certificate, issued by countries exercising import controls, that permits importation of the articles stated in the license. Reference number assigned by an issuing authority to an Import License. The import license number must be valid at time of arrival. Required if import license required is ÔÇÿTrueÔÇÖ.\\n\"\n },\n \"isAMSACIFilingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Customs filing for US (AMS) or Canadian (ACI) customs\\n\"\n },\n \"isDestinationFilingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the shipper will perform the AMS/ACI filing directly or not. Mandatory if AMS/ACI filing is required\\n\"\n },\n \"contractQuotationReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"Information provided by the shipper to identify whether pricing for the shipment has been agreed via a contract or a quotation reference. Mandatory if service contract (owner) is not provided.\\n\"\n },\n \"expectedDepartureDate\": {\n \"type\": \"string\",\n \"description\": \"The date when the shipment is expected to be loaded on board a vessel as provided by the shipper or its agent. If vessel/voyage or expected date of arrival is not provided, this is mandatory\\n\"\n },\n \"expectedArrivalAtPlaceOfDeliveryStartDate\": {\n \"type\": \"string\",\n \"description\": \"The start date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryEndDate`) for when the shipment is expected to arrive at final destination. If vessel/voyage or `expectedDepartureDate` is not provided, this is mandatory together with `expectedArrivalAtPlaceOfDeliveryEndDate`\\n\"\n },\n \"expectedArrivalAtPlaceOfDeliveryEndDate\": {\n \"type\": \"string\",\n \"description\": \"The end date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryStartDate`) for when the shipment is expected to arrive at final destination. If vessel/voyage or `expectedDepartureDate` is not provided, this is mandatory together with `expectedArrivalAtPlaceOfDeliveryStartDate`\\n\"\n },\n \"transportDocumentTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Specifies the type of the transport document\\n- BOL (Bill of Lading)\\n- SWB (Sea Waybill)\\n\",\n \"enum\": [\n \"BOL\",\n \"SWB\"\n ]\n },\n \"transportDocumentReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"A unique number allocated by the shipping line to the transport document and the main number used for the tracking of the status of the shipment.\\n\"\n },\n \"bookingChannelReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"Identification number provided by the platform/channel used for booking request/confirmation, ex: Inttra booking reference, or GTNexus, other. Conditional on booking channel being used\\n\"\n },\n \"incoTerms\": {\n \"type\": \"string\",\n \"description\": \"Transport obligations, costs and risks as agreed between buyer and seller.\\n- FCA (Free Carrier)\\n- FOB (Free on Board)\\n\",\n \"enum\": [\n \"FCA\",\n \"FOB\"\n ]\n },\n \"communicationChannelCode\": {\n \"maxLength\": 2,\n \"type\": \"string\",\n \"description\": \"Specifying which communication channel is to be used for this booking e.g.\\n- EI (EDI transmission)\\n- EM (Email)\\n- AO (API)\\n\",\n \"enum\": [\n \"EI\",\n \"EM\",\n \"AO\"\n ]\n },\n \"isEquipmentSubstitutionAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates if an alternate equipment type can be provided by the carrier.\\n\"\n },\n \"vesselIMONumber\": {\n \"maxLength\": 7,\n \"type\": \"string\",\n \"description\": \"The unique reference for a registered Vessel. The reference is the International Maritime Organisation (IMO) number, also sometimes known as the Lloyd's register code, which does not change during the lifetime of the vessel\\n\"\n },\n \"preCarriageModeOfTransportCode\": {\n \"type\": \"string\",\n \"description\": \"The mode of transport as defined by DCSA.\\n\",\n \"enum\": [\n \"VESSEL\",\n \"RAIL\",\n \"TRUCK\",\n \"BARGE\"\n ]\n },\n \"invoicePayableAt\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Invoice Payable At` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\"\n },\n \"placeOfBLIssue\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Place of B/L Issue` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\\nThe location where the original transport document (`Bill of Lading`) will be issued.\\n\"\n },\n \"references\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"type\",\n \"value\"\n ],\n \"type\": \"object\",\n \"description\": \"references provided by the shipper or freight forwarder at the time of booking or at the time of providing shipping instruction. Carriers share it back when providing track and trace event updates, some are also printed on the B/L. Customers can use these references to track shipments in their internal systems.\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The reference type codes defined by DCSA.\\n- FF (Freight ForwarderÔÇÖs Reference)\\n- SI (ShipperÔÇÖs Reference)\\n- PO (Purchase Order Reference)\\n- CR (CustomerÔÇÖs Reference)\\n- AAO (ConsigneeÔÇÖs Reference)\\n- ECR (Empty container release reference)\\n- CSI (Customer shipment ID)\\n- BPR (Booking party reference number)\\n- BID (Booking Request ID)\\n- RUC (Registro ├Ünico del Contribuyente)\\n- DUE (Declara├º├úo ├Ünica de Exporta├º├úo)\\n- CER (Canadian Export Reporting System)\\n- AES (Automated Export System)\\n\\nMore details can be found on [GitHub](https://github.com/dcsaorg/DCSA-Information-Model/blob/master/datamodel/referencedata.d/referencetypes.csv). Be aware that the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"FF\",\n \"SI\",\n \"PO\",\n \"CR\",\n \"AAO\",\n \"ECR\",\n \"CSI\",\n \"BPR\",\n \"BID\",\n \"RUC\",\n \"DUE\",\n \"CER\",\n \"AES\"\n ]\n },\n \"value\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The actual value of the reference.\"\n }\n }\n }\n },\n \"requestedEquipments\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"isShipperOwned\",\n \"units\",\n \"commodities\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\"\n },\n \"tareWeight\": {\n \"type\": \"number\"\n },\n \"units\": {\n \"type\": \"integer\"\n },\n \"commodities\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cargoGrossWeight\",\n \"cargoGrossWeightUnit\",\n \"commodityType\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"commodityType\": {\n \"maxLength\": 550,\n \"type\": \"string\"\n },\n \"HSCode\": {\n \"maxLength\": 10,\n \"type\": \"string\"\n },\n \"cargoGrossWeight\": {\n \"type\": \"number\"\n },\n \"cargoGrossWeightUnit\": {\n \"type\": \"string\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"cargoGrossVolume\": {\n \"type\": \"number\"\n },\n \"cargoGrossVolumeUnit\": {\n \"type\": \"string\",\n \"enum\": [\n \"MTQ\",\n \"FTQ\"\n ]\n },\n \"numberOfPackages\": {\n \"type\": \"integer\"\n },\n \"exportLicenseIssueDate\": {\n \"type\": \"string\"\n },\n \"exportLicenseExpiryDate\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"equipmentReferences\": {\n \"type\": \"array\",\n \"description\": \"An equipment to be used by the shipper if known at the time of booking\\n\",\n \"items\": {\n \"required\": [\n \"equipmentReference\"\n ],\n \"type\": \"object\",\n \"description\": \"used for storing cargo in/on during transport. The equipment size/type is defined by the ISO 6346 code. The most common equipment size/type is 20'/40'/45' Dry Freight Container, but several different versions exist.\\n\",\n \"properties\": {\n \"equipmentReference\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"The unique identifier for the equipment, which should follow the BIC ISO Container Identification Number where possible.\\nAccording to ISO 6346, a container identification code consists of a 4-letter prefix and a 7-digit number (composed of a 3-letter owner code, a category identifier, a serial number, and a check-digit). If a container does not comply with ISO 6346, it is suggested to follow Recommendation #2 ÔÇ£Container with non-ISO identificationÔÇØ from SMDG.\\n\"\n },\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"Unique code for the different equipment size/type used for transporting commodities. The code is a concatenation of ISO Equipment Size Code and ISO Equipment Type Code A and follows the ISO 6346 standard.\"\n },\n \"tareWeight\": {\n \"type\": \"number\",\n \"description\": \"The weight of an empty container (gross container weight).\"\n },\n \"weightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\\n- KGM (Kilograms)\\n- LBR (Pounds)\\n\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n }\n }\n }\n },\n \"isShipperOwned\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the container is shipper owned (SOC).\"\n },\n \"activeReeferSettings\": {\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The specifications for a Reefer equipment. If this object is provided then the equipment linked to this Reefer object should be concidered an **Operated Reefer**.\\n\\nIf not provided the equipment should be concidered a **Non Operated Reefer** in case the `ISOEquipmentCode` indicates a reefer container.\\n\",\n \"oneOf\": [\n {\n \"required\": [\n \"isColdTreatmentRequired\",\n \"isGeneratorSetRequired\",\n \"isHighValueCargo\",\n \"isHotStuffingAllowed\",\n \"isMonitoringRequired\",\n \"isPreCoolingRequired\",\n \"isTracingRequired\",\n \"temperatureSetpoint\",\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The settings for a `Freezer` reefer. Needs temperature setting less than 0-degree Centigrade. Frozen fish, meat, etc. are examples of such categories.\\n\\n**Ventilation orifice** and **drainHoles** are **always** closed\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The type of the reefer - for a `Freezer` this must be `FREZ`\\n\",\n \"enum\": [\n \"FREZ\"\n ]\n },\n \"productName\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"Carrier specific selection box specifying individual commercial product categories ÔÇô Optional Field? Probably not standardise product names ÔÇô Carriers specific\\n\"\n },\n \"isGeneratorSetRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should have a generator set attached at time of release from depot\\n\"\n },\n \"isPreCoolingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should be pre-cooled to the temperature setting required at time of release from depot\\n\"\n },\n \"isColdTreatmentRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo requires cold treatment prior to loading at origin or during transit, but prior arrival at POD\\n\"\n },\n \"isHotStuffingAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo can be stuffed without having the proper temperature\\n\"\n },\n \"isHighValueCargo\": {\n \"type\": \"boolean\",\n \"description\": \"Cargo value exceeds USD XXX K (carrier specific)\\n\"\n },\n \"isTracingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"IOT device enabled/attached\\n\"\n },\n \"isMonitoringRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Monitoring of temperature while the container is being transported\\n\"\n },\n \"extraMaterial\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"e.g. paper, cardboard etc.\\n\"\n },\n \"temperatureSetpoint\": {\n \"type\": \"number\",\n \"description\": \"Target value of the temperature for the Reefer based on the cargo requirement. The temperature is specified in in °C (Celsius)\\n\"\n }\n }\n },\n {\n \"required\": [\n \"isCargoProbe1Required\",\n \"isCargoProbe2Required\",\n \"isCargoProbe3Required\",\n \"isCargoProbe4Required\",\n \"isColdTreatmentRequired\",\n \"isGeneratorSetRequired\",\n \"isHighValueCargo\",\n \"isHotStuffingAllowed\",\n \"isMonitoringRequired\",\n \"isPreCoolingRequired\",\n \"isTracingRequired\",\n \"temperatureSetpoint\",\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The settings for a `SuperFreezer` reefer, exceptional high performance, create and maintain ultra-low temperatures as low as -70┬░C to -30C to +50C to protect the most sensitive and valuable cargoes.\\n\\n**Ventilation orifice** and **drainHoles** are **always** closed\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The type of the reefer - for a `Super freezer` this must be `SUPR`\\n\",\n \"enum\": [\n \"SUPR\"\n ]\n },\n \"productName\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"Carrier specific selection box specifying individual commercial product categories ÔÇô Optional Field? Probably not standardise product names ÔÇô Carriers specific\\n\"\n },\n \"isGeneratorSetRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should have a generator set attached at time of release from depot\\n\"\n },\n \"isPreCoolingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should be pre-cooled to the temperature setting required at time of release from depot\\n\"\n },\n \"isColdTreatmentRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo requires cold treatment prior to loading at origin or during transit, but prior arrival at POD\\n\"\n },\n \"isHotStuffingAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo can be stuffed without having the proper temperature\\n\"\n },\n \"isHighValueCargo\": {\n \"type\": \"boolean\",\n \"description\": \"Cargo value exceeds USD XXX K (carrier specific)\\n\"\n },\n \"isCargoProbe1Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 1 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe2Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 2 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe3Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 3 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe4Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 4 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isTracingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"IOT device enabled/attached\\n\"\n },\n \"isMonitoringRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Monitoring of temperature while the container is being transported\\n\"\n },\n \"extraMaterial\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"e.g. paper, cardboard etc.\\n\"\n },\n \"temperatureSetpoint\": {\n \"type\": \"number\",\n \"description\": \"Target value of the temperature for the Reefer based on the cargo requirement. The temperature is specified in in °C (Celsius)\\n\"\n }\n }\n },\n {\n \"required\": [\n \"isBulbMode\",\n \"isCargoProbe1Required\",\n \"isCargoProbe2Required\",\n \"isCargoProbe3Required\",\n \"isCargoProbe4Required\",\n \"isColdTreatmentRequired\",\n \"isDrainholesOpen\",\n \"isGeneratorSetRequired\",\n \"isHighValueCargo\",\n \"isHotStuffingAllowed\",\n \"isMonitoringRequired\",\n \"isPreCoolingRequired\",\n \"isTracingRequired\",\n \"isVentilationOpen\",\n \"setpoints\",\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The settings for a `Refridgerated` reefer. Refrigerated reefer is for Cargo which preset temperature exceeds 0-degree Centigrade and is not frozen.\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The type of the reefer - for a `Refrigerated` this must be `REFR`\\n\",\n \"enum\": [\n \"REFR\"\n ]\n },\n \"productName\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"Carrier specific selection box specifying individual commercial product categories ÔÇô Optional Field? Probably not standardise product names ÔÇô Carriers specific\\n\"\n },\n \"isGeneratorSetRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should have a generator set attached at time of release from depot\\n\"\n },\n \"isPreCoolingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should be pre-cooled to the temperature setting required at time of release from depot\\n\"\n },\n \"isColdTreatmentRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo requires cold treatment prior to loading at origin or during transit, but prior arrival at POD\\n\"\n },\n \"isHotStuffingAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo can be stuffed without having the proper temperature\\n\"\n },\n \"isHighValueCargo\": {\n \"type\": \"boolean\",\n \"description\": \"Cargo value exceeds USD XXX K (carrier specific)\\n\"\n },\n \"isVentilationOpen\": {\n \"type\": \"boolean\",\n \"description\": \"If `true` the ventilation orifice is `Open` - if `false` the ventilation orifice is `closed`\\n\"\n },\n \"isCargoProbe1Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 1 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe2Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 2 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe3Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 3 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe4Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 4 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isDrainholesOpen\": {\n \"type\": \"boolean\",\n \"description\": \"Is drainoles open on the container.\\n\"\n },\n \"isBulbMode\": {\n \"type\": \"boolean\",\n \"description\": \"Is special container setting for handling flower bulbs active\\n\"\n },\n \"isTracingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"IOT device enabled/attached\\n\"\n },\n \"isMonitoringRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Monitoring of temperature while the container is being transported\\n\"\n },\n \"extraMaterial\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"e.g. paper, cardboard etc.\\n\"\n },\n \"setpoints\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"\",\n \"properties\": {\n \"temperature\": {\n \"type\": \"number\",\n \"description\": \"Target value of the temperature for the Reefer based on the cargo requirement. The temperature is specified in in °C (Celsius)\\n\"\n },\n \"humidity\": {\n \"type\": \"number\",\n \"description\": \"The percentage of the controlled atmosphere humidity target value\\n\"\n },\n \"airExchange\": {\n \"type\": \"number\",\n \"description\": \"Target value for the air exchange rate which is the rate at which outdoor air replaces indoor air within a Reefer container in MQH (Cubic Meters per Hour)\\n\"\n },\n \"daysPriorToDischarge\": {\n \"type\": \"number\",\n \"description\": \"Number of days prior to arrival at Port of Discharge.\\n\"\n }\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"isCargoProbe1Required\",\n \"isCargoProbe2Required\",\n \"isCargoProbe3Required\",\n \"isCargoProbe4Required\",\n \"isColdTreatmentRequired\",\n \"isGeneratorSetRequired\",\n \"isHighValueCargo\",\n \"isHotStuffingAllowed\",\n \"isMonitoringRequired\",\n \"isPreCoolingRequired\",\n \"isTracingRequired\",\n \"setpoints\",\n \"type\"\n ],\n \"type\": \"object\",\n \"description\": \"The settings for a `Controlled Atmosphere` reefer. Containers use advanced technology for atmosphere control by regulating carbon dioxide, oxygen and nitrogen levels to help slow down ripening, preserving perishable produce and vastly improving its shelf life especially during long-distance trips.\\n\\n**Ventilation orifice* and **drainHoles** are **always** closed\\n\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The type of the reefer - for a `Controlled Atmosphere` this must be `CONA`\\n\",\n \"enum\": [\n \"CONA\"\n ]\n },\n \"productName\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"Carrier specific selection box specifying individual commercial product categories ÔÇô Optional Field? Probably not standardise product names ÔÇô Carriers specific\\n\"\n },\n \"isGeneratorSetRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should have a generator set attached at time of release from depot\\n\"\n },\n \"isPreCoolingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether reefer container should be pre-cooled to the temperature setting required at time of release from depot\\n\"\n },\n \"isColdTreatmentRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo requires cold treatment prior to loading at origin or during transit, but prior arrival at POD\\n\"\n },\n \"isHotStuffingAllowed\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether cargo can be stuffed without having the proper temperature\\n\"\n },\n \"isHighValueCargo\": {\n \"type\": \"boolean\",\n \"description\": \"Cargo value exceeds USD XXX K (carrier specific)\\n\"\n },\n \"isCargoProbe1Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 1 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe2Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 2 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe3Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 3 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isCargoProbe4Required\": {\n \"type\": \"boolean\",\n \"description\": \"Is `Cargo Probe 4 Required` enabled allowing the container to emit temperatures.\\n\"\n },\n \"isTracingRequired\": {\n \"type\": \"boolean\",\n \"description\": \"IOT device enabled/attached\\n\"\n },\n \"isMonitoringRequired\": {\n \"type\": \"boolean\",\n \"description\": \"Monitoring of temperature while the container is being transported\\n\"\n },\n \"extraMaterial\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"e.g. paper, cardboard etc.\\n\"\n },\n \"setpoints\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"\",\n \"properties\": {\n \"temperature\": {\n \"type\": \"number\",\n \"description\": \"Target value of the temperature for the Reefer based on the cargo requirement. The temperature is specified in in °C (Celsius)\\n\"\n },\n \"o2\": {\n \"type\": \"number\",\n \"description\": \"The percentage of the controlled atmosphere O2 target value\\n\"\n },\n \"co2\": {\n \"type\": \"number\",\n \"description\": \"The percentage of the controlled atmosphere CO2 target value\\n\"\n },\n \"humidity\": {\n \"type\": \"number\",\n \"description\": \"The percentage of the controlled atmosphere humidity target value\\n\"\n },\n \"airExchange\": {\n \"type\": \"number\",\n \"description\": \"Target value for the air exchange rate which is the rate at which outdoor air replaces indoor air within a Reefer container in MQH (Cubic Meters per Hour)\\n\"\n },\n \"daysPriorToDischarge\": {\n \"type\": \"number\",\n \"description\": \"Number of days prior to arrival at Port of Discharge.\\n\"\n }\n }\n }\n }\n }\n }\n ]\n }\n }\n }\n },\n \"documentParties\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"isToBeNotified\",\n \"party\",\n \"partyFunction\"\n ],\n \"type\": \"object\",\n \"description\": \"stores the parties involved in the transport document.\",\n \"properties\": {\n \"party\": {\n \"required\": [\n \"partyContactDetails\",\n \"partyName\"\n ],\n \"type\": \"object\",\n \"description\": \"refers to a company or a legal entity.\",\n \"properties\": {\n \"partyName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the party.\"\n },\n \"address\": {\n \"type\": \"object\",\n \"description\": \"An object for storing address related information\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n },\n \"partyContactDetails\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"description\": \"A list of contact details - the list cannot be empty\\n\",\n \"items\": {\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\",\n \"description\": \"Contact information for a Party\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the contact\"\n },\n \"phone\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Phone number for the contact\"\n },\n \"email\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"E-mail address for the contact\"\n }\n }\n }\n },\n \"identifyingCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"DCSAResponsibleAgencyCode\",\n \"partyCode\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"DCSAResponsibleAgencyCode\": {\n \"type\": \"string\",\n \"description\": \"A DCSA provided code for [UN/CEFACT](https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred3055.htm) code list providers:\\n- ISO (International Standards Organization)\\n- UNECE (United Nations Economic Commission for Europe)\\n- LLOYD (Lloyd's register of shipping)\\n- BIC (Bureau International des Containeurs)\\n- IMO (International Maritime Organization)\\n- SCAC (Standard Carrier Alpha Code)\\n- ITIGG (International Transport Implementation Guidelines Group)\\n- ITU (International Telecommunication Union)\\n- SMDG (Shipplanning Message Development Group)\\n- EXIS (Exis Technologies Ltd.)\\n- FMC (Federal Maritime Commission)\\n- CBSA (Canada Border Services Agency)\\n- DCSA (Digital Container Shipping Association)\\n- DID (Decentralized Identifier)\\n- LEI (Legal Entity Identifier)\\n- ZZZ (Mutually defined)\\n\\nMore details can be found on [GitHub](https://github.com/dcsaorg/DCSA-Information-Model/blob/master/datamodel/referencedata.d/codelistresponsibleagencycodes.csv).\\n\",\n \"enum\": [\n \"ISO\",\n \"UNECE\",\n \"LLOYD\",\n \"BIC\",\n \"IMO\",\n \"SCAC\",\n \"ITIGG\",\n \"ITU\",\n \"SMDG\",\n \"EXIS\",\n \"FMC\",\n \"CBSA\",\n \"DCSA\",\n \"DID\",\n \"LEI\",\n \"ZZZ\"\n ]\n },\n \"partyCode\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Code to identify the party as provided by the agency\\n\"\n },\n \"codeListName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the list, provided by the responsible agency\\n\"\n }\n }\n }\n }\n }\n },\n \"partyFunction\": {\n \"type\": \"string\",\n \"description\": \"Specifies the role of the party in the context of the given Shipping Instruction.\\n- OS (Original shipper)\\n- CN (Consignee)\\n- COW (Invoice payer on behalf of the consignor (shipper))\\n- COX (Invoice payer on behalf of the consignee)\\n- MS (Document/message issuer/sender)\\n- N1 (First Notify Party)\\n- N2 (Second Notify Party)\\n- NI (Other Notify Party)\\n- DDR (Consignor's freight forwarder)\\n- DDS (Consignee's freight forwarder)\\n- HE (Carrier booking office (transportation office))\\n- SCO (Service contract owner - Defined by DCSA)\\n- BA (Booking Agency)\\n- EBL (EBL Solution Provider)\\n\",\n \"enum\": [\n \"OS\",\n \"CN\",\n \"COW\",\n \"COX\",\n \"MS\",\n \"N1\",\n \"N2\",\n \"NI\",\n \"DDR\",\n \"DDS\",\n \"HE\",\n \"SCO\",\n \"BA\",\n \"EBL\"\n ]\n },\n \"displayedAddress\": {\n \"type\": \"array\",\n \"items\": {\n \"maxLength\": 250,\n \"type\": \"string\",\n \"description\": \"A single address line.\"\n }\n },\n \"isToBeNotified\": {\n \"type\": \"boolean\",\n \"description\": \"Used to decide whether the party will be notified of the arrival of the cargo.\"\n }\n }\n }\n },\n \"shipmentLocations\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"location\",\n \"shipmentLocationTypeCode\"\n ],\n \"type\": \"object\",\n \"description\": \"maps the relationship between Shipment and Location, e.g., the `Place of Receipt` and the `Place of Delivery` for a specific shipment. This is a reusable object between `Booking` and `Transport Document`\\n\",\n \"properties\": {\n \"location\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the location in the `ShipmentLocation`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"shipmentLocationTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Links to the Location Type Code defined by DCSA.\\n- PRE (Place of Receipt)\\n- POL (Port of Loading)\\n- POD (Port of Discharge)\\n- PDE (Place of Delivery)\\n- PCF (Pre-carriage From)\\n- PSR (Pre-carriage under shipperÔÇÖs responsibility)\\n- OIR (Onward In-land Routing)\\n- DRL (Depot release location)\\n- ORI (Origin of goods)\\n- IEL (Container intermediate export stop off location)\\n- PTP (Prohibited transshipment port)\\n- RTP (Requested transshipment port)\\n- FCD (Full container drop-off location)\\n- ECP (Empty container pick-up location)\\n\",\n \"enum\": [\n \"PRE\",\n \"POL\",\n \"POD\",\n \"PDE\",\n \"PCF\",\n \"PSR\",\n \"OIR\",\n \"DRL\",\n \"ORI\",\n \"IEL\",\n \"PTP\",\n \"RTP\",\n \"FCD\",\n \"ECP\"\n ]\n },\n \"eventDateTime\": {\n \"type\": \"string\",\n \"description\": \"A date when the event is taking place at the location\\n\",\n \"format\": \"date-time\"\n }\n }\n }\n }\n }\n },\n \"transports\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"dischargeLocation\",\n \"loadLocation\",\n \"plannedArrivalDate\",\n \"plannedDepartureDate\",\n \"transportPlanStage\",\n \"transportPlanStageSequenceNumber\"\n ],\n \"type\": \"object\",\n \"description\": \"A list of transports sorted by ShipmentTransport sequenceNumber\",\n \"properties\": {\n \"transportPlanStage\": {\n \"type\": \"string\",\n \"description\": \"Code qualifying a specific stage of transport e.g. pre-carriage, main carriage transport or on-carriage transport\\n- PRC (Pre-Carriage)\\n- MNC (Main Carriage Transport)\\n- ONC (On-Carriage Transport)\\n\",\n \"enum\": [\n \"PRC\",\n \"MNC\",\n \"ONC\"\n ]\n },\n \"transportPlanStageSequenceNumber\": {\n \"type\": \"integer\",\n \"description\": \"Sequence number of the transport plan stage\\n\"\n },\n \"loadLocation\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the `Load Location`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"dischargeLocation\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the `Discharge Location`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"plannedDepartureDate\": {\n \"type\": \"string\",\n \"description\": \"The planned date of departure.\\n\"\n },\n \"plannedArrivalDate\": {\n \"type\": \"string\",\n \"description\": \"The planned date of arrival.\\n\"\n },\n \"modeOfTransport\": {\n \"type\": \"string\",\n \"description\": \"The mode of transport as defined by DCSA.\\n\",\n \"enum\": [\n \"VESSEL\",\n \"RAIL\",\n \"TRUCK\",\n \"BARGE\"\n ]\n },\n \"vesselName\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"The name of the Vessel given by the Vessel Operator and registered with IMO.\\n\"\n },\n \"vesselIMONumber\": {\n \"maxLength\": 7,\n \"type\": \"string\",\n \"description\": \"The unique reference for a registered Vessel. The reference is the International Maritime Organisation (IMO) number, also sometimes known as the Lloyd's register code, which does not change during the lifetime of the vessel\\n\"\n },\n \"carrierImportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an import voyage. The vessel operator-specific identifier of the import Voyage.\\n\"\n },\n \"universalImportVoyageReference\": {\n \"pattern\": \"\\\\d{2}[0-9A-Z]{2}[NEWS]\",\n \"type\": \"string\",\n \"description\": \"A global unique voyage reference for the import Voyage, as per DCSA standard, agreed by VSA partners for the voyage. The voyage reference must match the regular expression pattern: `\\\\d{2}[0-9A-Z]{2}[NEWS]`\\n- `2 digits` for the year\\n- `2 alphanumeric characters` for the sequence number of the voyage\\n- `1 character` for the direction/haul (`N`orth, `E`ast, `W`est or `S`outh).\\n\"\n },\n \"carrierExportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an export voyage. The vessel operator-specific identifier of the export Voyage.\\n\"\n },\n \"universalExportVoyageReference\": {\n \"pattern\": \"\\\\d{2}[0-9A-Z]{2}[NEWS]\",\n \"type\": \"string\",\n \"description\": \"A global unique voyage reference for the export Voyage, as per DCSA standard, agreed by VSA partners for the voyage. The voyage reference must match the regular expression pattern: `\\\\d{2}[0-9A-Z]{2}[NEWS]`\\n- `2 digits` for the year\\n- `2 alphanumeric characters` for the sequence number of the voyage\\n- `1 character` for the direction/haul (`N`orth, `E`ast, `W`est or `S`outh).\\n\"\n },\n \"isUnderShippersResponsibility\": {\n \"type\": \"boolean\",\n \"description\": \"Indicator whether mode of transportation for pre-carriage (e.g. truck, barge, rail) is under shipper's responsibility\\n\"\n }\n }\n }\n },\n \"shipmentCutOffTimes\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cutOffDateTime\",\n \"cutOffDateTimeCode\"\n ],\n \"type\": \"object\",\n \"description\": \"Cut off times\\n\",\n \"properties\": {\n \"cutOffDateTimeCode\": {\n \"type\": \"string\",\n \"description\": \"Code for the cut-off time\\n- DCO (Documentation cut-off)\\n- VCO (VGM cut-off)\\n- FCO (FCL delivery cut-off)\\n- LCO (LCL delivery cut-off)\\n- ECP (Empty container pick-up date and time)\\n- EFC (Earliest full-container delivery date)\\n- AFD (AMS Filing Due date)\\n\",\n \"enum\": [\n \"DCO\",\n \"VCO\",\n \"FCO\",\n \"LCO\",\n \"ECP\",\n \"EFC\",\n \"AFD\"\n ]\n },\n \"cutOffDateTime\": {\n \"type\": \"string\",\n \"description\": \"Actual cut-off time\\n\",\n \"format\": \"date-time\"\n }\n }\n }\n },\n \"shipmentLocations\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"location\",\n \"shipmentLocationTypeCode\"\n ],\n \"type\": \"object\",\n \"description\": \"maps the relationship between Shipment and Location, e.g., the `Place of Receipt` and the `Place of Delivery` for a specific shipment. This is a reusable object between `Booking` and `Transport Document`\\n\",\n \"properties\": {\n \"location\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the partyÔÇÖs address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the partyÔÇÖs address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the partyÔÇÖs street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the partyÔÇÖs address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the partyÔÇÖs address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the partyÔÇÖs address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the partyÔÇÖs address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture the location in the `ShipmentLocation`. The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` and/or an `Address`.\\n\"\n },\n \"displayedName\": {\n \"maxLength\": 250,\n \"type\": \"string\",\n \"description\": \"The address of the Party to be displayed on the transport document.\"\n },\n \"shipmentLocationTypeCode\": {\n \"type\": \"string\",\n \"description\": \"Links to the Location Type Code defined by DCSA.\\n- PRE (Place of Receipt)\\n- POL (Port of Loading)\\n- POD (Port of Discharge)\\n- PDE (Place of Delivery)\\n- PCF (Pre-carriage From)\\n- PSR (Pre-carriage under shipperÔÇÖs responsibility)\\n- OIR (Onward In-land Routing)\\n- DRL (Depot release location)\\n- ORI (Origin of goods)\\n- IEL (Container intermediate export stop off location)\\n- PTP (Prohibited transshipment port)\\n- RTP (Requested transshipment port)\\n- FCD (Full container drop-off location)\\n- ECP (Empty container pick-up location)\\n\",\n \"enum\": [\n \"PRE\",\n \"POL\",\n \"POD\",\n \"PDE\",\n \"PCF\",\n \"PSR\",\n \"OIR\",\n \"DRL\",\n \"ORI\",\n \"IEL\",\n \"PTP\",\n \"RTP\",\n \"FCD\",\n \"ECP\"\n ]\n },\n \"eventDateTime\": {\n \"type\": \"string\",\n \"description\": \"A date when the event is taking place at the location\\n\"\n }\n }\n }\n },\n \"confirmedEquipments\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"confirmedEquipmentUnits\"\n ],\n \"type\": \"object\",\n \"description\": \"The confirmed equipments for the booking\\n\",\n \"properties\": {\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"Unique code for the different equipment size/type used for transporting commodities. The code is a concatenation of ISO Equipment Size Code and ISO Equipment Type Code A and follows the ISO 6346 standard.\"\n },\n \"units\": {\n \"type\": \"integer\",\n \"description\": \"Number of confirmed equipment units\\n\"\n }\n }\n }\n },\n \"charges\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"calculationBasis\",\n \"\",\n \"currencyAchargeTypemount\",\n \"currencyCode\",\n \"paymentTermCode\",\n \"quantity\",\n \"unitPrice\"\n ],\n \"type\": \"object\",\n \"description\": \"addresses the monetary value of freight and other service charges for a transport document.\\n\",\n \"properties\": {\n \"chargeName\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"Free text field describing the charge type to apply\\n\"\n },\n \"currencyAmount\": {\n \"type\": \"number\",\n \"description\": \"The monetary value of all freight and other service charges for a transport document, with a maximum of 2-digit decimals.\"\n },\n \"currencyCode\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency for the charge, using a 3-character code (ISO 4217).\"\n },\n \"paymentTermCode\": {\n \"type\": \"string\",\n \"description\": \"Indicates whether freight & charges are due for payment before the shipment is effected, practically before the transport document is released to shipper (Prepaid) or before the shipment is finalized meaning cargo released to consignee (Collect)\\n- PRE (Prepaid)\\n- COL (Collect)\\n\",\n \"enum\": [\n \"PRE\",\n \"COL\"\n ]\n },\n \"calculationBasis\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The code specifying the measure unit used for the corresponding unit price for this cost, such as per day, per ton, per square metre.\"\n },\n \"unitPrice\": {\n \"type\": \"number\",\n \"description\": \"The unit price of this charge item in the currency of the charge.\"\n },\n \"quantity\": {\n \"type\": \"number\",\n \"description\": \"The amount of unit for this charge item.\"\n }\n }\n }\n },\n \"carrierClauses\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"comprises clauses, added by the carrier to the Transport Document, which are subject to local rules/guidelines or certain mandatory information required to be shared with the customer. Usually printed below the cargo description.\\n\",\n \"properties\": {\n \"clauseContent\": {\n \"type\": \"string\",\n \"description\": \"The content of the clause.\"\n }\n }\n }\n }\n }\n}", "type": "string" }, { "key": "TRANSPORT_DOCUMENT_RESPONSE_SCHEMA", - "value": "{\n \"required\": [\n \"carrierCode\",\n \"carrierCodeListProvider\",\n \"issuingParty\",\n \"transportDocumentReference\",\n \"consignmentItems\",\n \"documentStatus\",\n \"isElectronic\",\n \"isToOrder\"\n ],\n \"type\": \"object\",\n \"description\": \"The document that governs the terms of carriage between shipper and carrier for maritime transportation. Two distinct types of transport documents exist:\\n- Bill of Lading\\n- Sea Waybill. \\n\",\n \"properties\": {\n \"transportDocumentReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"A unique number allocated by the shipping line to the transport document and the main number used for the tracking of the status of the shipment.\\n\"\n },\n \"transportDocumentCreatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Date and time when the TransportDocument was created\\n\",\n \"format\": \"date-time\"\n },\n \"transportDocumentUpdatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Date and time when the TransportDocument was updated\\n\",\n \"format\": \"date-time\"\n },\n \"issueDate\": {\n \"type\": \"string\",\n \"description\": \"Date when the transport document has been issued\",\n \"format\": \"date\"\n },\n \"shippedOnBoardDate\": {\n \"type\": \"string\",\n \"description\": \"Date when the last container that is linked to the transport document is physically loaded onboard the vessel indicated on the transport document.\",\n \"format\": \"date\"\n },\n \"receivedForShipmentDate\": {\n \"type\": \"string\",\n \"description\": \"Date when the last container linked to the transport document is physically in the terminal (customers cleared against the intended vessel).\",\n \"format\": \"date\"\n },\n \"numberOfCopies\": {\n \"type\": \"integer\",\n \"minimum\": -2147483648,\n \"maximum\": 2147483647\n },\n \"numberOfOriginals\": {\n \"type\": \"integer\",\n \"minimum\": -2147483648,\n \"maximum\": 2147483647\n },\n \"isElectronic\": {\n \"type\": \"boolean\",\n \"description\": \"An indicator whether the transport document is electronically transferred.\"\n },\n \"isToOrder\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the transport document is issued `to order` or not\\n\"\n },\n \"carrierCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"The code containing the SCAC and/or the SMDG code to specify the issuing carrier. Details about the issuer can be given in the Document Parties entity using the party function code MS.\\n\"\n },\n \"carrierCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the issuer Code\\n\",\n \"enum\": [\n \"SMDG\",\n \"NMFTA\"\n ]\n },\n \"issuingParty\": {\n \"required\": [\n \"partyContactDetails\"\n ],\n \"type\": \"object\",\n \"description\": \"refers to a company or a legal entity.\",\n \"properties\": {\n \"partyName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the party.\"\n },\n \"taxReference1\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"The identifying number of the consignee or shipper (Individual or entity) used for tax purposes.\"\n },\n \"taxReference2\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"Optional second identifying number of the consignee or shipper (Individual or entity) used for tax purposes.\"\n },\n \"publicKey\": {\n \"maxLength\": 500,\n \"type\": \"string\",\n \"description\": \"The public key used for a digital signature.\"\n },\n \"address\": {\n \"type\": \"object\",\n \"description\": \"An object for storing address related information\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n },\n \"partyContactDetails\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"description\": \"A list of contact details - the list cannot be empty\\n\",\n \"items\": {\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\",\n \"description\": \"Contact information for a Party\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the contact\"\n },\n \"phone\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Phone number for the contact\"\n },\n \"email\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"E-mail address for the contact\"\n }\n }\n }\n },\n \"identifyingCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"DCSAResponsibleAgencyCode\",\n \"partyCode\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"DCSAResponsibleAgencyCode\": {\n \"type\": \"string\",\n \"description\": \"A DCSA provided code for [UN/CEFACT](https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred3055.htm) code list providers:\\n- ISO (International Standards Organization)\\n- UNECE (United Nations Economic Commission for Europe)\\n- LLOYD (Lloyd's register of shipping)\\n- BIC (Bureau International des Containeurs)\\n- IMO (International Maritime Organization)\\n- SCAC (Standard Carrier Alpha Code)\\n- ITIGG (International Transport Implementation Guidelines Group)\\n- ITU (International Telecommunication Union)\\n- SMDG (Shipplanning Message Development Group)\\n- EXIS (Exis Technologies Ltd.)\\n- FMC (Federal Maritime Commission)\\n- CBSA (Canada Border Services Agency)\\n- DCSA (Digital Container Shipping Association)\\n- ZZZ (Mutually defined)\\n\\nMore details can be found on [GitHub](https://github.com/dcsaorg/DCSA-Information-Model/blob/master/datamodel/referencedata.d/codelistresponsibleagencycodes.csv).\\n\",\n \"enum\": [\n \"ISO\",\n \"UNECE\",\n \"LLOYD\",\n \"BIC\",\n \"IMO\",\n \"SCAC\",\n \"ITIGG\",\n \"ITU\",\n \"SMDG\",\n \"EXIS\",\n \"FMC\",\n \"CBSA\",\n \"DCSA\",\n \"ZZZ\"\n ]\n },\n \"partyCode\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Code to identify the party as provided by the agency\\n\"\n },\n \"codeListName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the list, provided by the responsible agency\\n\"\n }\n }\n }\n }\n }\n },\n \"numberOfRiderPages\": {\n \"type\": \"integer\",\n \"description\": \"The number of additional pages required to contain the goods description on a transport document. Only applicable for physical transport documents.\",\n \"minimum\": -2147483648,\n \"maximum\": 2147483647\n },\n \"termsAndConditions\": {\n \"type\": \"string\",\n \"description\": \"Carrier general terms and conditions for the booking.\\n\"\n },\n \"receiptTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Origin. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"deliveryTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Destination. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"cargoMovementTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the loading of the cargo into the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"cargoMovementTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the unloading of the cargo out of the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"serviceContractReference\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Reference number for agreement between shipper and carrier through which the shipper commits to provide a certain minimum quantity of cargo over a fixed period, and the carrier commits to a certain rate or rate schedule.\"\n },\n \"documentStatus\": {\n \"type\": \"string\",\n \"description\": \"The status of the Bill of Lading. Possible values are:\\n- RECE (Received)\\n- PENU (Pending Update)\\n- DRFT (Draft)\\n- PENA (Pending Approval)\\n- APPR (Approved)\\n- ISSU (Issued)\\n- SURR (Surrendered)\\n- VOID (Void)\\n\\nMore details can be found on GitHub. Be aware that the list linked to is the `ShipmentEventTypeCodes` which is equivalent to `documentStatus`, the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"RECE\",\n \"PENU\",\n \"DRFT\",\n \"PENA\",\n \"APPR\",\n \"ISSU\",\n \"SURR\",\n \"VOID\"\n ]\n },\n \"consignmentItems\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"HSCodes\",\n \"cargoItems\",\n \"descriptionOfGoods\"\n ],\n \"type\": \"object\",\n \"description\": \"Defines a list of `CargoItems` belonging together and the associated `Booking`. A `ConsignmentItem` can be split across multiple containers (`UtilizedTransportEquipment`) by referencing multiple `CargoItems`\\n\",\n \"properties\": {\n \"carrierBookingReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A set of unique characters provided by carrier to identify a booking.\"\n },\n \"weight\": {\n \"type\": \"number\",\n \"description\": \"The total weight of the cargo including packaging items being carried in the container(s). Excludes the tare weight of the container(s).\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"volume\": {\n \"type\": \"number\",\n \"description\": \"Calculated by multiplying the width, height, and length of the packed cargo.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"weightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"volumeUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in either imperial or metric terms\\n- FTQ (Cubic meter)\\n- MTQ (Cubic foot)\\n\",\n \"enum\": [\n \"MTQ\",\n \"FTQ\"\n ]\n },\n \"descriptionOfGoods\": {\n \"type\": \"string\",\n \"description\": \"The cargo description are details which accurately and properly describe the cargo being shipped in the container(s) as provided by the shipper.\"\n },\n \"HSCodes\": {\n \"minItems\": 1,\n \"items\": {\n \"maxLength\": 10,\n \"type\": \"string\"\n }\n },\n \"cargoItems\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"equipmentReference\",\n \"weight\",\n \"weightUnit\"\n ],\n \"type\": \"object\",\n \"description\": \"A `cargoItem` is the smallest unit used by stuffing. A `cargoItem` cannot be split across containers.\",\n \"properties\": {\n \"cargoLineItems\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cargoLineItemID\",\n \"shippingMarks\"\n ],\n \"type\": \"object\",\n \"description\": \"identifies the specific details of packages within a cargo item.\\n\",\n \"properties\": {\n \"cargoLineItemID\": {\n \"type\": \"string\",\n \"description\": \"Identifies the cargo line item (package) within the cargo. The cargo line item ID is provided by the shipper and is used to define the stuffing. Cargo line items belonging to the same cargo items are stuffed in the same container.\"\n },\n \"shippingMarks\": {\n \"type\": \"string\",\n \"description\": \"The identifying details of a package or the actual markings that appear on the package(s). This information is provided by the shipper.\"\n }\n }\n }\n },\n \"equipmentReference\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"The unique identifier for the equipment, which should follow the BIC ISO Container Identification Number where possible.\\nAccording to ISO 6346, a container identification code consists of a 4-letter prefix and a 7-digit number (composed of a 3-letter owner code, a category identifier, a serial number, and a check-digit). If a container does not comply with ISO 6346, it is suggested to follow Recommendation #2 ÔÇ£Container with non-ISO identificationÔÇØ from SMDG.\\n\"\n },\n \"weight\": {\n \"type\": \"number\",\n \"description\": \"The total weight of the cargo including packaging items being carried in the container(s). Excludes the tare weight of the container(s).\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"volume\": {\n \"type\": \"number\",\n \"description\": \"Calculated by multiplying the width, height, and length of the packed cargo.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"weightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"volumeUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in either imperial or metric terms\\n- FTQ (Cubic meter)\\n- MTQ (Cubic foot)\\n\",\n \"enum\": [\n \"MTQ\",\n \"FTQ\"\n ]\n }\n }\n }\n },\n \"references\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"referenceType\",\n \"referenceValue\"\n ],\n \"type\": \"object\",\n \"description\": \"references provided by the shipper or freight forwarder at the time of booking or at the time of providing shipping instruction. Carriers share it back when providing track and trace event updates, some are also printed on the B/L. Customers can use these references to track shipments in their internal systems.\\n\",\n \"properties\": {\n \"referenceType\": {\n \"type\": \"string\",\n \"description\": \"The reference type codes defined by DCSA.\\n- FF (Freight Forwarder's Reference)\\n- SI (Shipper's Reference)\\n- PO (Purchase Order Reference)\\n- CR (Customer's Reference)\\n- AAO (Consignee's Reference)\\n- ECR (Empty container release reference)\\n- CSI (Customer shipment ID)\\n- BPR (Booking party reference number)\\n- BID (Booking Request ID)\\n\\nMore details can be found on GitHub. Be aware that the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"FF\",\n \"SI\",\n \"PO\",\n \"CR\",\n \"AAO\",\n \"ECR\",\n \"CSI\",\n \"BPR\",\n \"BID\"\n ]\n },\n \"referenceValue\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The actual value of the reference.\"\n }\n }\n }\n }\n }\n }\n },\n \"utilizedTransportEquipments\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cargoGrossWeight\",\n \"cargoGrossWeightUnit\",\n \"equipment\",\n \"isShipperOwned\"\n ],\n \"type\": \"object\",\n \"description\": \"Specifies the container (`equipment`), the total weight, the `seals` used and possible `reefer` settings\\n\",\n \"properties\": {\n \"equipment\": {\n \"required\": [\n \"equipmentReference\"\n ],\n \"type\": \"object\",\n \"description\": \"used for storing cargo in/on during transport. The equipment size/type is defined by the ISO 6346 code. The most common equipment size/type is 20'/40'/45' Dry Freight Container, but several different versions exist.\\n\",\n \"properties\": {\n \"equipmentReference\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"The unique identifier for the equipment, which should follow the BIC ISO Container Identification Number where possible.\\nAccording to ISO 6346, a container identification code consists of a 4-letter prefix and a 7-digit number (composed of a 3-letter owner code, a category identifier, a serial number, and a check-digit). If a container does not comply with ISO 6346, it is suggested to follow Recommendation #2 ÔÇ£Container with non-ISO identificationÔÇØ from SMDG.\\n\"\n },\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"Unique code for the different equipment size/type used for transporting commodities. The code is a concatenation of ISO Equipment Size Code and ISO Equipment Type Code A and follows the ISO 6346 standard.\"\n },\n \"tareWeight\": {\n \"type\": \"number\",\n \"description\": \"The weight of an empty container (gross container weight).\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"weightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n }\n }\n },\n \"cargoGrossWeightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"cargoGrossWeight\": {\n \"type\": \"number\",\n \"description\": \"The grand total weight of the cargo and weight per container(s) including packaging items being carried, which can be expressed in imperial or metric terms, as provided by the shipper. Excludes the tare weight of the container(s).\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"isShipperOwned\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the container is shipper owned (SOC).\"\n },\n \"activeReeferSettings\": {\n \"type\": \"object\",\n \"description\": \"specifies the settings for an active reefer container used to a shipment.\",\n \"properties\": {\n \"temperatureMin\": {\n \"type\": \"number\",\n \"description\": \"Indicates the minimum temperature setting on the container.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"temperatureMax\": {\n \"type\": \"number\",\n \"description\": \"Indicates the maximum temperature setting on the container.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"temperatureUnit\": {\n \"type\": \"string\",\n \"description\": \"Celsius (CEL) or Fahrenheit (FAH).\",\n \"enum\": [\n \"CEL\",\n \"FAH\"\n ]\n },\n \"humidityMin\": {\n \"type\": \"number\",\n \"description\": \"Indicates the minimum humidity setting on the container in percent.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"humidityMax\": {\n \"type\": \"number\",\n \"description\": \"Indicates the maximum humidity setting on the container in percent.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"ventilationMin\": {\n \"type\": \"number\",\n \"description\": \"Indicates the minimum ventilation setting on the container in MTQ/Hr.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"ventilationMax\": {\n \"type\": \"number\",\n \"description\": \"Indicates the maximum ventilation setting on the container in MTQ/Hr.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n }\n }\n },\n \"seals\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"sealNumber\",\n \"sealType\"\n ],\n \"type\": \"object\",\n \"description\": \"addresses the seal-related information associated with the shipment equipment. A seal is put on a shipment equipment once it is loaded. This seal is meant to stay on until the shipment equipment reaches its final destination.\",\n \"properties\": {\n \"sealNumber\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"Identifies a seal affixed to the container.\"\n },\n \"sealSource\": {\n \"type\": \"string\",\n \"description\": \"The source of the seal, namely who has affixed the seal. This attribute links to the Seal Source ID defined in the Seal Source reference data entity.\\n- CAR (Carrier)\\n- SHI (Shipper)\\n- PHY (Phytosanitary)\\n- VET (Veterinary)\\n- CUS (Customs)\\n\",\n \"enum\": [\n \"CAR\",\n \"SHI\",\n \"PHY\",\n \"VET\",\n \"CUS\"\n ]\n },\n \"sealType\": {\n \"type\": \"string\",\n \"description\": \"The type of seal. This attribute links to the Seal Type ID defined in the Seal Type reference data entity.\\n- KLP (Keyless padlock)\\n- BLT (Bolt)\\n- WIR (Wire)\\n\",\n \"enum\": [\n \"KLP\",\n \"BLT\",\n \"WIR\"\n ]\n }\n }\n }\n }\n }\n }\n },\n \"vesselName\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"The name of the Vessel given by the Vessel Operator and registered with IMO.\\n\"\n },\n \"exportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an export voyage. The vessel operator-specific identifier of the export Voyage. The result will only return schedules including the export Voyage Number\\n\"\n },\n \"declaredValue\": {\n \"type\": \"number\",\n \"description\": \"The value of the cargo that the shipper declares to avoid the carrier's limitation of liability and \\\"Ad Valorem\\\" freight, i.e. freight which is calculated based on the value of the goods declared by the shipper.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"declaredValueCurrency\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency used for the declared value, using the 3-character code defined by ISO 4217.\"\n },\n \"transports\": {\n \"type\": \"object\",\n \"required\": [\n \"plannedDepartureDate\",\n \"plannedArrivalDate\",\n \"portOfLoading\",\n \"portOfDischarge\"\n ],\n \"plannedDepartureDate\": {\n \"type\": \"string\",\n \"description\": \"The planned date of departure.\\n\",\n \"format\": \"date\"\n },\n \"plannedArrivalDate\": {\n \"type\": \"string\",\n \"description\": \"The planned date of arrival.\\n\",\n \"format\": \"date\"\n },\n \"preCarriedBy\": {\n \"type\": \"string\",\n \"description\": \"The mode of transport as defined by DCSA.\\n\",\n \"enum\": [\n \"VESSEL\",\n \"RAIL\",\n \"TRUCK\",\n \"BARGE\"\n ]\n },\n \"placeOfReceipt\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n },\n \"portOfLoading\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n },\n \"portOfDischarge\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n },\n \"placeOfDelivery\":{\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n },\n \"onwardsInlandRouting\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n }\n },\n \"invoicePayableAt\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Invoice Payable At` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\"\n },\n \"placeOfIssue\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture where the original Transport Document (`Bill of Lading`) will be issued. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\"\n },\n \"charges\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"calculationBasis\",\n \"chargeName\",\n \"currencyAmount\",\n \"currencyCode\",\n \"paymentTermCode\",\n \"quantity\",\n \"unitPrice\"\n ],\n \"type\": \"object\",\n \"description\": \"addresses the monetary value of freight and other service charges for a transport document.\\n\",\n \"properties\": {\n \"chargeName\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"Free text field describing the charge type to apply\\n\"\n },\n \"currencyAmount\": {\n \"type\": \"number\",\n \"description\": \"The monetary value of all freight and other service charges for a transport document, with a maximum of 2-digit decimals.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"currencyCode\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency for the charge, using a 3-character code (ISO 4217).\"\n },\n \"paymentTermCode\": {\n \"type\": \"string\",\n \"description\": \"Indicates whether freight & charges are due for payment before the shipment is effected, practically before the transport document is released to shipper (Prepaid) or before the shipment is finalized meaning cargo released to consignee (Collect)\\n- PRE (Prepaid)\\n- COL (Collect)\\n\",\n \"enum\": [\n \"PRE\",\n \"COL\"\n ]\n },\n \"calculationBasis\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The code specifying the measure unit used for the corresponding unit price for this cost, such as per day, per ton, per square metre.\"\n },\n \"unitPrice\": {\n \"type\": \"number\",\n \"description\": \"The unit price of this charge item in the currency of the charge.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"quantity\": {\n \"type\": \"number\",\n \"description\": \"The amount of unit for this charge item.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n }\n }\n }\n },\n \"carrierClauses\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"comprises clauses, added by the carrier to the Transport Document, which are subject to local rules/guidelines or certain mandatory information required to be shared with the customer. Usually printed below the cargo description.\\n\",\n \"properties\": {\n \"clauseContent\": {\n \"type\": \"string\",\n \"description\": \"The content of the clause.\"\n }\n }\n }\n }\n }\n}\n", + "value": "{\n \"required\": [\n \"carrierCode\",\n \"carrierCodeListProvider\",\n \"issuingParty\",\n \"transportDocumentReference\",\n \"consignmentItems\",\n \"documentStatus\",\n \"isElectronic\",\n \"isToOrder\"\n ],\n \"type\": \"object\",\n \"description\": \"The document that governs the terms of carriage between shipper and carrier for maritime transportation. Two distinct types of transport documents exist:\\n- Bill of Lading\\n- Sea Waybill. \\n\",\n \"properties\": {\n \"transportDocumentReference\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"A unique number allocated by the shipping line to the transport document and the main number used for the tracking of the status of the shipment.\\n\"\n },\n \"transportDocumentCreatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Date and time when the TransportDocument was created\\n\",\n \"format\": \"date-time\"\n },\n \"transportDocumentUpdatedDateTime\": {\n \"type\": \"string\",\n \"description\": \"Date and time when the TransportDocument was updated\\n\",\n \"format\": \"date-time\"\n },\n \"issueDate\": {\n \"type\": \"string\",\n \"description\": \"Date when the transport document has been issued\",\n \"format\": \"date\"\n },\n \"shippedOnBoardDate\": {\n \"type\": \"string\",\n \"description\": \"Date when the last container that is linked to the transport document is physically loaded onboard the vessel indicated on the transport document.\",\n \"format\": \"date\"\n },\n \"receivedForShipmentDate\": {\n \"type\": \"string\",\n \"description\": \"Date when the last container linked to the transport document is physically in the terminal (customers cleared against the intended vessel).\",\n \"format\": \"date\"\n },\n \"numberOfCopies\": {\n \"type\": \"integer\",\n \"minimum\": -2147483648,\n \"maximum\": 2147483647\n },\n \"numberOfOriginals\": {\n \"type\": \"integer\",\n \"minimum\": -2147483648,\n \"maximum\": 2147483647\n },\n \"isElectronic\": {\n \"type\": \"boolean\",\n \"description\": \"An indicator whether the transport document is electronically transferred.\"\n },\n \"isToOrder\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the transport document is issued `to order` or not\\n\"\n },\n \"carrierCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"The code containing the SCAC and/or the SMDG code to specify the issuing carrier. Details about the issuer can be given in the Document Parties entity using the party function code MS.\\n\"\n },\n \"carrierCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the issuer Code\\n\",\n \"enum\": [\n \"SMDG\",\n \"NMFTA\"\n ]\n },\n \"issuingParty\": {\n \"required\": [\n \"partyContactDetails\"\n ],\n \"type\": \"object\",\n \"description\": \"refers to a company or a legal entity.\",\n \"properties\": {\n \"partyName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the party.\"\n },\n \"address\": {\n \"type\": \"object\",\n \"description\": \"An object for storing address related information\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n },\n \"partyContactDetails\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"description\": \"A list of contact details - the list cannot be empty\\n\",\n \"items\": {\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\",\n \"description\": \"Contact information for a Party\\n\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the contact\"\n },\n \"phone\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Phone number for the contact\"\n },\n \"email\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"E-mail address for the contact\"\n }\n }\n }\n },\n \"identifyingCodes\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"DCSAResponsibleAgencyCode\",\n \"partyCode\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"DCSAResponsibleAgencyCode\": {\n \"type\": \"string\",\n \"description\": \"A DCSA provided code for [UN/CEFACT](https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred3055.htm) code list providers:\\n- ISO (International Standards Organization)\\n- UNECE (United Nations Economic Commission for Europe)\\n- LLOYD (Lloyd's register of shipping)\\n- BIC (Bureau International des Containeurs)\\n- IMO (International Maritime Organization)\\n- SCAC (Standard Carrier Alpha Code)\\n- ITIGG (International Transport Implementation Guidelines Group)\\n- ITU (International Telecommunication Union)\\n- SMDG (Shipplanning Message Development Group)\\n- EXIS (Exis Technologies Ltd.)\\n- FMC (Federal Maritime Commission)\\n- CBSA (Canada Border Services Agency)\\n- DCSA (Digital Container Shipping Association)\\n- ZZZ (Mutually defined)\\n\\nMore details can be found on [GitHub](https://github.com/dcsaorg/DCSA-Information-Model/blob/master/datamodel/referencedata.d/codelistresponsibleagencycodes.csv).\\n\",\n \"enum\": [\n \"ISO\",\n \"UNECE\",\n \"LLOYD\",\n \"BIC\",\n \"IMO\",\n \"SCAC\",\n \"ITIGG\",\n \"ITU\",\n \"SMDG\",\n \"EXIS\",\n \"FMC\",\n \"CBSA\",\n \"DCSA\",\n \"ZZZ\"\n ]\n },\n \"partyCode\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Code to identify the party as provided by the agency\\n\"\n },\n \"codeListName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the list, provided by the responsible agency\\n\"\n }\n }\n }\n }\n }\n },\n \"numberOfRiderPages\": {\n \"type\": \"integer\",\n \"description\": \"The number of additional pages required to contain the goods description on a transport document. Only applicable for physical transport documents.\",\n \"minimum\": -2147483648,\n \"maximum\": 2147483647\n },\n \"termsAndConditions\": {\n \"type\": \"string\",\n \"description\": \"Carrier general terms and conditions for the booking.\\n\"\n },\n \"receiptTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Origin. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"deliveryTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Indicates the type of service offered at Destination. Options are defined in the Receipt/Delivery entity.\\n- CY (Container yard (incl. rail ramp))\\n- SD (Store Door)\\n- CFS (Container Freight Station)\\n\",\n \"enum\": [\n \"CY\",\n \"SD\",\n \"CFS\"\n ]\n },\n \"cargoMovementTypeAtOrigin\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the loading of the cargo into the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"cargoMovementTypeAtDestination\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"Refers to the shipment term at the unloading of the cargo out of the container. Options are defined in the Cargo Movement Type entity.\\n- FCL (Full Container Load)\\n- LCL (Less than Container Load)\\n- BB (Break Bulk)\\n\",\n \"enum\": [\n \"FCL\",\n \"LCL\",\n \"BB\"\n ]\n },\n \"serviceContractReference\": {\n \"maxLength\": 30,\n \"type\": \"string\",\n \"description\": \"Reference number for agreement between shipper and carrier through which the shipper commits to provide a certain minimum quantity of cargo over a fixed period, and the carrier commits to a certain rate or rate schedule.\"\n },\n \"documentStatus\": {\n \"type\": \"string\",\n \"description\": \"The status of the Bill of Lading. Possible values are:\\n- RECE (Received)\\n- PENU (Pending Update)\\n- DRFT (Draft)\\n- PENA (Pending Approval)\\n- APPR (Approved)\\n- ISSU (Issued)\\n- SURR (Surrendered)\\n- VOID (Void)\\n\\nMore details can be found on GitHub. Be aware that the list linked to is the `ShipmentEventTypeCodes` which is equivalent to `documentStatus`, the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"RECE\",\n \"PENU\",\n \"DRFT\",\n \"PENA\",\n \"APPR\",\n \"ISSU\",\n \"SURR\",\n \"VOID\"\n ]\n },\n \"consignmentItems\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"HSCodes\",\n \"cargoItems\",\n \"descriptionOfGoods\"\n ],\n \"type\": \"object\",\n \"description\": \"Defines a list of `CargoItems` belonging together and the associated `Booking`. A `ConsignmentItem` can be split across multiple containers (`UtilizedTransportEquipment`) by referencing multiple `CargoItems`\\n\",\n \"properties\": {\n \"carrierBookingReference\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"A set of unique characters provided by carrier to identify a booking.\"\n },\n \"weight\": {\n \"type\": \"number\",\n \"description\": \"The total weight of the cargo including packaging items being carried in the container(s). Excludes the tare weight of the container(s).\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"volume\": {\n \"type\": \"number\",\n \"description\": \"Calculated by multiplying the width, height, and length of the packed cargo.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"weightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"volumeUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in either imperial or metric terms\\n- FTQ (Cubic meter)\\n- MTQ (Cubic foot)\\n\",\n \"enum\": [\n \"MTQ\",\n \"FTQ\"\n ]\n },\n \"descriptionOfGoods\": {\n \"type\": \"string\",\n \"description\": \"The cargo description are details which accurately and properly describe the cargo being shipped in the container(s) as provided by the shipper.\"\n },\n \"HSCodes\": {\n \"minItems\": 1,\n \"items\": {\n \"maxLength\": 10,\n \"type\": \"string\"\n }\n },\n \"cargoItems\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"equipmentReference\",\n \"weight\",\n \"weightUnit\"\n ],\n \"type\": \"object\",\n \"description\": \"A `cargoItem` is the smallest unit used by stuffing. A `cargoItem` cannot be split across containers.\",\n \"properties\": {\n \"cargoLineItems\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cargoLineItemID\",\n \"shippingMarks\"\n ],\n \"type\": \"object\",\n \"description\": \"identifies the specific details of packages within a cargo item.\\n\",\n \"properties\": {\n \"cargoLineItemID\": {\n \"type\": \"string\",\n \"description\": \"Identifies the cargo line item (package) within the cargo. The cargo line item ID is provided by the shipper and is used to define the stuffing. Cargo line items belonging to the same cargo items are stuffed in the same container.\"\n },\n \"shippingMarks\": {\n \"type\": \"string\",\n \"description\": \"The identifying details of a package or the actual markings that appear on the package(s). This information is provided by the shipper.\"\n }\n }\n }\n },\n \"equipmentReference\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"The unique identifier for the equipment, which should follow the BIC ISO Container Identification Number where possible.\\nAccording to ISO 6346, a container identification code consists of a 4-letter prefix and a 7-digit number (composed of a 3-letter owner code, a category identifier, a serial number, and a check-digit). If a container does not comply with ISO 6346, it is suggested to follow Recommendation #2 ÔÇ£Container with non-ISO identificationÔÇØ from SMDG.\\n\"\n },\n \"weight\": {\n \"type\": \"number\",\n \"description\": \"The total weight of the cargo including packaging items being carried in the container(s). Excludes the tare weight of the container(s).\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"volume\": {\n \"type\": \"number\",\n \"description\": \"Calculated by multiplying the width, height, and length of the packed cargo.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"weightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"volumeUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in either imperial or metric terms\\n- FTQ (Cubic meter)\\n- MTQ (Cubic foot)\\n\",\n \"enum\": [\n \"MTQ\",\n \"FTQ\"\n ]\n }\n }\n }\n },\n \"references\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"referenceType\",\n \"referenceValue\"\n ],\n \"type\": \"object\",\n \"description\": \"references provided by the shipper or freight forwarder at the time of booking or at the time of providing shipping instruction. Carriers share it back when providing track and trace event updates, some are also printed on the B/L. Customers can use these references to track shipments in their internal systems.\\n\",\n \"properties\": {\n \"referenceType\": {\n \"type\": \"string\",\n \"description\": \"The reference type codes defined by DCSA.\\n- FF (Freight Forwarder's Reference)\\n- SI (Shipper's Reference)\\n- PO (Purchase Order Reference)\\n- CR (Customer's Reference)\\n- AAO (Consignee's Reference)\\n- ECR (Empty container release reference)\\n- CSI (Customer shipment ID)\\n- BPR (Booking party reference number)\\n- BID (Booking Request ID)\\n\\nMore details can be found on GitHub. Be aware that the list is a subset of the possible values.\\n\",\n \"enum\": [\n \"FF\",\n \"SI\",\n \"PO\",\n \"CR\",\n \"AAO\",\n \"ECR\",\n \"CSI\",\n \"BPR\",\n \"BID\"\n ]\n },\n \"referenceValue\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The actual value of the reference.\"\n }\n }\n }\n }\n }\n }\n },\n \"utilizedTransportEquipments\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"cargoGrossWeight\",\n \"cargoGrossWeightUnit\",\n \"equipment\",\n \"isShipperOwned\"\n ],\n \"type\": \"object\",\n \"description\": \"Specifies the container (`equipment`), the total weight, the `seals` used and possible `reefer` settings\\n\",\n \"properties\": {\n \"equipment\": {\n \"required\": [\n \"equipmentReference\"\n ],\n \"type\": \"object\",\n \"description\": \"used for storing cargo in/on during transport. The equipment size/type is defined by the ISO 6346 code. The most common equipment size/type is 20'/40'/45' Dry Freight Container, but several different versions exist.\\n\",\n \"properties\": {\n \"equipmentReference\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"The unique identifier for the equipment, which should follow the BIC ISO Container Identification Number where possible.\\nAccording to ISO 6346, a container identification code consists of a 4-letter prefix and a 7-digit number (composed of a 3-letter owner code, a category identifier, a serial number, and a check-digit). If a container does not comply with ISO 6346, it is suggested to follow Recommendation #2 ÔÇ£Container with non-ISO identificationÔÇØ from SMDG.\\n\"\n },\n \"ISOEquipmentCode\": {\n \"maxLength\": 4,\n \"type\": \"string\",\n \"description\": \"Unique code for the different equipment size/type used for transporting commodities. The code is a concatenation of ISO Equipment Size Code and ISO Equipment Type Code A and follows the ISO 6346 standard.\"\n },\n \"tareWeight\": {\n \"type\": \"number\",\n \"description\": \"The weight of an empty container (gross container weight).\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"weightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n }\n }\n },\n \"cargoGrossWeightUnit\": {\n \"type\": \"string\",\n \"description\": \"The unit of measure which can be expressed in imperial or metric terms\",\n \"enum\": [\n \"KGM\",\n \"LBR\"\n ]\n },\n \"cargoGrossWeight\": {\n \"type\": \"number\",\n \"description\": \"The grand total weight of the cargo and weight per container(s) including packaging items being carried, which can be expressed in imperial or metric terms, as provided by the shipper. Excludes the tare weight of the container(s).\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"isShipperOwned\": {\n \"type\": \"boolean\",\n \"description\": \"Indicates whether the container is shipper owned (SOC).\"\n },\n \"activeReeferSettings\": {\n \"type\": \"object\",\n \"description\": \"specifies the settings for an active reefer container used to a shipment.\",\n \"properties\": {\n \"temperatureMin\": {\n \"type\": \"number\",\n \"description\": \"Indicates the minimum temperature setting on the container.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"temperatureMax\": {\n \"type\": \"number\",\n \"description\": \"Indicates the maximum temperature setting on the container.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"temperatureUnit\": {\n \"type\": \"string\",\n \"description\": \"Celsius (CEL) or Fahrenheit (FAH).\",\n \"enum\": [\n \"CEL\",\n \"FAH\"\n ]\n },\n \"humidityMin\": {\n \"type\": \"number\",\n \"description\": \"Indicates the minimum humidity setting on the container in percent.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"humidityMax\": {\n \"type\": \"number\",\n \"description\": \"Indicates the maximum humidity setting on the container in percent.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"ventilationMin\": {\n \"type\": \"number\",\n \"description\": \"Indicates the minimum ventilation setting on the container in MTQ/Hr.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"ventilationMax\": {\n \"type\": \"number\",\n \"description\": \"Indicates the maximum ventilation setting on the container in MTQ/Hr.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n }\n }\n },\n \"seals\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"sealNumber\",\n \"sealType\"\n ],\n \"type\": \"object\",\n \"description\": \"addresses the seal-related information associated with the shipment equipment. A seal is put on a shipment equipment once it is loaded. This seal is meant to stay on until the shipment equipment reaches its final destination.\",\n \"properties\": {\n \"sealNumber\": {\n \"maxLength\": 15,\n \"type\": \"string\",\n \"description\": \"Identifies a seal affixed to the container.\"\n },\n \"sealSource\": {\n \"type\": \"string\",\n \"description\": \"The source of the seal, namely who has affixed the seal. This attribute links to the Seal Source ID defined in the Seal Source reference data entity.\\n- CAR (Carrier)\\n- SHI (Shipper)\\n- PHY (Phytosanitary)\\n- VET (Veterinary)\\n- CUS (Customs)\\n\",\n \"enum\": [\n \"CAR\",\n \"SHI\",\n \"PHY\",\n \"VET\",\n \"CUS\"\n ]\n },\n \"sealType\": {\n \"type\": \"string\",\n \"description\": \"The type of seal. This attribute links to the Seal Type ID defined in the Seal Type reference data entity.\\n- KLP (Keyless padlock)\\n- BLT (Bolt)\\n- WIR (Wire)\\n\",\n \"enum\": [\n \"KLP\",\n \"BLT\",\n \"WIR\"\n ]\n }\n }\n }\n }\n }\n }\n },\n \"vesselName\": {\n \"maxLength\": 35,\n \"type\": \"string\",\n \"description\": \"The name of the Vessel given by the Vessel Operator and registered with IMO.\\n\"\n },\n \"exportVoyageNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The identifier of an export voyage. The vessel operator-specific identifier of the export Voyage. The result will only return schedules including the export Voyage Number\\n\"\n },\n \"declaredValue\": {\n \"type\": \"number\",\n \"description\": \"The value of the cargo that the shipper declares to avoid the carrier's limitation of liability and \\\"Ad Valorem\\\" freight, i.e. freight which is calculated based on the value of the goods declared by the shipper.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"declaredValueCurrency\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency used for the declared value, using the 3-character code defined by ISO 4217.\"\n },\n \"transports\": {\n \"type\": \"object\",\n \"required\": [\n \"plannedDepartureDate\",\n \"plannedArrivalDate\",\n \"portOfLoading\",\n \"portOfDischarge\"\n ],\n \"plannedDepartureDate\": {\n \"type\": \"string\",\n \"description\": \"The planned date of departure.\\n\",\n \"format\": \"date\"\n },\n \"plannedArrivalDate\": {\n \"type\": \"string\",\n \"description\": \"The planned date of arrival.\\n\",\n \"format\": \"date\"\n },\n \"preCarriedBy\": {\n \"type\": \"string\",\n \"description\": \"The mode of transport as defined by DCSA.\\n\",\n \"enum\": [\n \"VESSEL\",\n \"RAIL\",\n \"TRUCK\",\n \"BARGE\"\n ]\n },\n \"placeOfReceipt\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n },\n \"portOfLoading\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n },\n \"portOfDischarge\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n },\n \"placeOfDelivery\":{\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n },\n \"onwardsInlandRouting\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n },\n {\n \"required\": [\n \"facilityCode\",\n \"facilityCodeListProvider\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Facility`. The facility can either be expressed using a `BIC` code or a `SMDG` code. The `facilityCode` does not contain the `UNLocationCode` - this should be provided in the `UnLocationCode` attribute.\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n },\n \"facilityCode\": {\n \"maxLength\": 6,\n \"type\": \"string\",\n \"description\": \"The code used for identifying the specific facility. This code does not include the UN Location Code.\\n\"\n },\n \"facilityCodeListProvider\": {\n \"type\": \"string\",\n \"description\": \"The provider used for identifying the facility Code. Some facility codes are only defined in combination with an `UN Location Code`\\n- BIC (Requires a UN Location Code)\\n- SMDG (Requires a UN Location Code)\\n\",\n \"enum\": [\n \"BIC\",\n \"SMDG\"\n ]\n }\n }\n }\n ]\n }\n },\n \"invoicePayableAt\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture `Invoice Payable At` location. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\"\n },\n \"placeOfIssue\": {\n \"anyOf\": [\n {\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using an `Address` object\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"address\": {\n \"description\": \"Address related information\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"Name of the address\"\n },\n \"street\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the street of the party's address.\"\n },\n \"streetNumber\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The number of the street of the party's address.\"\n },\n \"floor\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The floor of the party's street number.\"\n },\n \"postCode\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The post code of the party's address.\"\n },\n \"city\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The city name of the party's address.\"\n },\n \"stateRegion\": {\n \"maxLength\": 65,\n \"type\": \"string\",\n \"description\": \"The state/region of the party's address.\"\n },\n \"country\": {\n \"maxLength\": 75,\n \"type\": \"string\",\n \"description\": \"The country of the party's address.\"\n }\n }\n }\n }\n },\n {\n \"required\": [\n \"UNLocationCode\"\n ],\n \"type\": \"object\",\n \"description\": \"An interface used to express a location using a `Un Location Code`\\n\",\n \"properties\": {\n \"locationName\": {\n \"maxLength\": 100,\n \"type\": \"string\",\n \"description\": \"The name of the location.\"\n },\n \"UNLocationCode\": {\n \"maxLength\": 5,\n \"type\": \"string\",\n \"description\": \"The UN Location code specifying where the place is located.\"\n }\n }\n }\n ],\n \"description\": \"General purpose object to capture where the original Transport Document (`Bill of Lading`) will be issued. The location can be specified in **any** of the following ways: `UN Location Code` and/or an `Address`.\\n\"\n },\n \"charges\": {\n \"type\": \"array\",\n \"items\": {\n \"required\": [\n \"calculationBasis\",\n \"chargeName\",\n \"currencyAmount\",\n \"currencyCode\",\n \"paymentTermCode\",\n \"quantity\",\n \"unitPrice\"\n ],\n \"type\": \"object\",\n \"description\": \"addresses the monetary value of freight and other service charges for a transport document.\\n\",\n \"properties\": {\n \"chargeName\": {\n \"maxLength\": 20,\n \"type\": \"string\",\n \"description\": \"Free text field describing the charge type to apply\\n\"\n },\n \"currencyAmount\": {\n \"type\": \"number\",\n \"description\": \"The monetary value of all freight and other service charges for a transport document, with a maximum of 2-digit decimals.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"currencyCode\": {\n \"maxLength\": 3,\n \"type\": \"string\",\n \"description\": \"The currency for the charge, using a 3-character code (ISO 4217).\"\n },\n \"paymentTermCode\": {\n \"type\": \"string\",\n \"description\": \"Indicates whether freight & charges are due for payment before the shipment is effected, practically before the transport document is released to shipper (Prepaid) or before the shipment is finalized meaning cargo released to consignee (Collect)\\n- PRE (Prepaid)\\n- COL (Collect)\\n\",\n \"enum\": [\n \"PRE\",\n \"COL\"\n ]\n },\n \"calculationBasis\": {\n \"maxLength\": 50,\n \"type\": \"string\",\n \"description\": \"The code specifying the measure unit used for the corresponding unit price for this cost, such as per day, per ton, per square metre.\"\n },\n \"unitPrice\": {\n \"type\": \"number\",\n \"description\": \"The unit price of this charge item in the currency of the charge.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n },\n \"quantity\": {\n \"type\": \"number\",\n \"description\": \"The amount of unit for this charge item.\",\n \"minimum\": -3.402823669209385e+38,\n \"maximum\": 3.402823669209385e+38\n }\n }\n }\n },\n \"carrierClauses\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"comprises clauses, added by the carrier to the Transport Document, which are subject to local rules/guidelines or certain mandatory information required to be shared with the customer. Usually printed below the cargo description.\\n\",\n \"properties\": {\n \"clauseContent\": {\n \"type\": \"string\",\n \"description\": \"The content of the clause.\"\n }\n }\n }\n }\n }\n}\n", "type": "string" }, { @@ -4855,4 +4855,4 @@ "value": "" } ] -} \ No newline at end of file +} From 40ab58ff0929c70f8385431cbdec4e6d99992b23 Mon Sep 17 00:00:00 2001 From: preetamnpr <128618622+preetamnpr@users.noreply.github.com> Date: Tue, 24 Oct 2023 08:48:38 +0200 Subject: [PATCH 3/4] DT-159 added test data --- .../datafactories/PartyDataFactory.java | 1 + .../TaxAndLegalReferencesDataFactory.java | 31 +++++++++++++++++++ .../service/BookingRequestServiceTest.java | 2 ++ .../transferobjects/DocumentPartyTO.java | 4 +-- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/TaxAndLegalReferencesDataFactory.java diff --git a/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/PartyDataFactory.java b/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/PartyDataFactory.java index f31f352c..b3c3a498 100644 --- a/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/PartyDataFactory.java +++ b/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/PartyDataFactory.java @@ -14,6 +14,7 @@ public Party singleParty() { return Party.builder() .id(UUID.randomUUID()) .partyName("DCSA") + .taxAndLegalReferences(Set.of(TaxAndLegalReferencesDataFactory.singleTaxAndLegalReference())) .address(AddressDataFactory.getSingleAddress()) .partyContactDetails(Set.of(PartyContactDetails.builder() .id(UUID.randomUUID()) diff --git a/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/TaxAndLegalReferencesDataFactory.java b/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/TaxAndLegalReferencesDataFactory.java new file mode 100644 index 00000000..823d33ce --- /dev/null +++ b/edocumentation-service/src/test/java/org/dcsa/edocumentation/datafactories/TaxAndLegalReferencesDataFactory.java @@ -0,0 +1,31 @@ +package org.dcsa.edocumentation.datafactories; + +import lombok.experimental.UtilityClass; +import org.dcsa.edocumentation.domain.persistence.entity.TaxAndLegalReference; +import org.dcsa.edocumentation.transferobjects.TaxAndLegalReferenceTO; + +import java.util.UUID; + +@UtilityClass +public class TaxAndLegalReferencesDataFactory { + + public static final String COUNTRY_CODE = "NL"; + public static final String TYPE = "VAT"; + public static final String VALUE = "VAT"; + + public TaxAndLegalReference singleTaxAndLegalReference() { + return TaxAndLegalReference.builder() + .id(UUID.randomUUID()) + .countryCode(COUNTRY_CODE) + .type(TYPE) + .value(VALUE) + .build(); + } + public TaxAndLegalReferenceTO singleTaxAndLegalReferenceTO() { + return TaxAndLegalReferenceTO.builder() + .countryCode(COUNTRY_CODE) + .type(TYPE) + .value(VALUE) + .build(); + } +} diff --git a/edocumentation-service/src/test/java/org/dcsa/edocumentation/service/BookingRequestServiceTest.java b/edocumentation-service/src/test/java/org/dcsa/edocumentation/service/BookingRequestServiceTest.java index 21991912..d43bf4b6 100644 --- a/edocumentation-service/src/test/java/org/dcsa/edocumentation/service/BookingRequestServiceTest.java +++ b/edocumentation-service/src/test/java/org/dcsa/edocumentation/service/BookingRequestServiceTest.java @@ -53,6 +53,7 @@ class GetBookingRequest { @Spy private RequestedEquipmentGroupMapper requestedEquipmentGroupMapper = Mappers.getMapper(RequestedEquipmentGroupMapper.class); @Spy private ActiveReeferSettingsMapper activeReeferSettingsMapper = Mappers.getMapper(ActiveReeferSettingsMapper.class); + @Spy private TaxAndLegalReferenceMapper taxAndLegalReferenceMapper = Mappers.getMapper(TaxAndLegalReferenceMapper.class); @InjectMocks private BookingRequestService service; @BeforeEach @@ -68,6 +69,7 @@ void setupMappers() { ReflectionTestUtils.setField(partyMapper, "addressMapper", addressMapper); ReflectionTestUtils.setField(locationMapper, "addressMapper", addressMapper); ReflectionTestUtils.setField(shipmentLocationMapper, "locationMapper", locationMapper); + ReflectionTestUtils.setField(partyMapper, "taxAndLegalReferenceMapper", taxAndLegalReferenceMapper); } @Test diff --git a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/DocumentPartyTO.java b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/DocumentPartyTO.java index d500ec7a..69afa413 100644 --- a/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/DocumentPartyTO.java +++ b/edocumentation-transfer-obj/src/main/java/org/dcsa/edocumentation/transferobjects/DocumentPartyTO.java @@ -13,8 +13,8 @@ @DocumentPartyTOEBLValidation(groups = EBLValidation.class) @DocumentPartyTOPaperBLValidation(groups = PaperBLValidation.class) public record DocumentPartyTO( - @NotNull @Valid - PartyTO party, + @NotNull + @Valid PartyTO party, @NotNull // Async validated via @PseudoEnum From 160628bc592514a80999f7eb467dfbca38586b5b Mon Sep 17 00:00:00 2001 From: preetamnpr <128618622+preetamnpr@users.noreply.github.com> Date: Tue, 24 Oct 2023 08:55:28 +0200 Subject: [PATCH 4/4] DT-159 added test data --- postman_collection.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/postman_collection.json b/postman_collection.json index 64508fc5..e70ae3c6 100755 --- a/postman_collection.json +++ b/postman_collection.json @@ -1,10 +1,10 @@ { "info": { - "_postman_id": "f5fa76b3-98bd-4ed9-badf-df48ecb613ff", + "_postman_id": "22e1ced1-ad02-417e-b8c4-dc0dcf00a6c9", "name": "DCSA-EDocumentation", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "_exporter_id": "10391075", - "_collection_link": "https://grey-desert-2866.postman.co/workspace/New-Team-Workspace~9634308f-0889-42d7-99bd-1d4b0f653244/collection/10391075-f5fa76b3-98bd-4ed9-badf-df48ecb613ff?action=share&source=collection_link&creator=10391075" + "_collection_link": "https://grey-desert-2866.postman.co/workspace/New-Team-Workspace~9634308f-0889-42d7-99bd-1d4b0f653244/collection/10391075-22e1ced1-ad02-417e-b8c4-dc0dcf00a6c9?action=share&source=collection_link&creator=10391075" }, "item": [ { @@ -3732,7 +3732,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\r\n \"isShippedOnBoardType\": true,\r\n \"isElectronic\": true,\r\n \"isToOrder\": true,\r\n \"displayedNameForPortOfLoad\": [\r\n \"Port of Rotterdam\"\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ],\r\n \"consignmentItems\": [\r\n {\r\n \"HSCodes\": [\"411510\"],\r\n \"carrierBookingReference\": \"A379021B7782\",\r\n \"commoditySubreference\": \"unknown-commodity-subreference\",\r\n \"weight\": 120.4,\r\n \"weightUnit\": \"KGM\",\r\n \"descriptionOfGoods\": \"description\",\r\n \"cargoItems\": [\r\n {\r\n \"equipmentReference\": \"BMOU2149612\",\r\n \"weight\": 120.3,\r\n \"weightUnit\": \"KGM\",\r\n \"shippingMarks\": [\"bar\"]\r\n }\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"utilizedTransportEquipments\": [\r\n {\r\n \"equipmentReference\": \"BMOU2149612\",\r\n \"cargoGrossWeight\": 120.3,\r\n \"cargoGrossWeightUnit\": \"KGM\",\r\n \"isShipperOwned\": false,\r\n \"seals\": [\r\n {\r\n \"number\": \"12345\",\r\n \"source\": \"CAR\",\r\n \"type\": \"BLT\"\r\n },\r\n {\r\n \"number\": \"98765\",\r\n \"source\": \"RACxx\",\r\n \"type\": \"TLBxx\"\r\n }\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"documentParties\": [\r\n {\r\n \"party\": {\r\n \"partyName\": \"foo party\",\r\n \"address\": {\r\n \"name\": \"foo address name\"\r\n },\r\n \"partyContactDetails\": [\r\n {\r\n \"name\": \"partycontact details\",\r\n \"phone\": \"+31611444666\"\r\n }\r\n ]\r\n },\r\n \"partyFunction\": \"CN\",\r\n \"displayedAddress\": [\r\n \"foo\"\r\n ],\r\n \"isToBeNotified\": false\r\n }\r\n ],\r\n \"references\": [\r\n {\r\n \"type\": \"AAO\",\r\n \"value\": \"foo reference\"\r\n }\r\n ]\r\n}", + "raw": "{\r\n \"isShippedOnBoardType\": true,\r\n \"isElectronic\": true,\r\n \"isToOrder\": true,\r\n \"displayedNameForPortOfLoad\": [\r\n \"Port of Rotterdam\"\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ],\r\n \"consignmentItems\": [\r\n {\r\n \"HSCodes\": [\"411510\"],\r\n \"carrierBookingReference\": \"A379021B7782\",\r\n \"commoditySubreference\": \"unknown-commodity-subreference\",\r\n \"weight\": 120.4,\r\n \"weightUnit\": \"KGM\",\r\n \"descriptionOfGoods\": \"description\",\r\n \"cargoItems\": [\r\n {\r\n \"equipmentReference\": \"BMOU2149612\",\r\n \"weight\": 120.3,\r\n \"weightUnit\": \"KGM\",\r\n \"shippingMarks\": [\"bar\"]\r\n }\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"utilizedTransportEquipments\": [\r\n {\r\n \"equipmentReference\": \"BMOU2149612\",\r\n \"cargoGrossWeight\": 120.3,\r\n \"cargoGrossWeightUnit\": \"KGM\",\r\n \"isShipperOwned\": false,\r\n \"seals\": [\r\n {\r\n \"number\": \"12345\",\r\n \"source\": \"CAR\",\r\n \"type\": \"BLT\"\r\n },\r\n {\r\n \"number\": \"98765\",\r\n \"source\": \"RACxx\",\r\n \"type\": \"TLBxx\"\r\n }\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"documentParties\": [\r\n {\r\n \"party\": {\r\n \"partyName\": \"foo party\",\r\n \"address\": {\r\n \"name\": \"foo address name\"\r\n },\r\n \"taxAndLegalReferences\" : [{\r\n \"type\": \"VAT\",\r\n \"countryCode\": \"NL\",\r\n \"value\": \"VAT\"\r\n }],\r\n \"partyContactDetails\": [\r\n {\r\n \"name\": \"partycontact details\",\r\n \"phone\": \"+31611444666\"\r\n }\r\n ]\r\n },\r\n \"partyFunction\": \"CN\",\r\n \"displayedAddress\": [\r\n \"foo\"\r\n ],\r\n \"isToBeNotified\": false\r\n }\r\n ],\r\n \"references\": [\r\n {\r\n \"type\": \"AAO\",\r\n \"value\": \"foo reference\"\r\n }\r\n ]\r\n}", "options": { "raw": { "language": "json" @@ -4983,7 +4983,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\r\n \"isShippedOnBoardType\": true,\r\n \"isElectronic\": true,\r\n \"isToOrder\": false,\r\n \"displayedNameForPortOfLoad\": [\r\n \"Port of Rotterdam\"\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ],\r\n \"consignmentItems\": [\r\n {\r\n \"HSCodes\": [\"411510\"],\r\n \"carrierBookingReference\": \"{{CARRIER_BOOKING_REFERENCE}}\",\r\n \"commoditySubreference\": \"commodity-subreference\",\r\n \"weight\": 120.4,\r\n \"weightUnit\": \"KGM\",\r\n \"descriptionOfGoods\": \"The goods!\",\r\n \"cargoItems\": [\r\n {\r\n \"equipmentReference\": \"BMOU2149612\",\r\n \"weight\": 120.3,\r\n \"weightUnit\": \"KGM\",\r\n \"shippingMarks\": [\"bar\"],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ] \r\n }\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n } \r\n ]\r\n }\r\n ],\r\n \"utilizedTransportEquipments\": [\r\n {\r\n \"equipmentReference\": \"BMOU2149612\",\r\n \"cargoGrossWeight\": 120.3,\r\n \"cargoGrossWeightUnit\": \"KGM\",\r\n \"isShipperOwned\": false,\r\n \"seals\": [\r\n {\r\n \"number\": \"12345\",\r\n \"source\": \"CAR\",\r\n \"type\": \"BLT\"\r\n }\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"documentParties\": [\r\n {\r\n \"party\": {\r\n \"partyName\": \"foo party\",\r\n \"address\": {\r\n \"name\": \"foo address name\"\r\n },\r\n \"partyContactDetails\": [\r\n {\r\n \"name\": \"partycontact details\",\r\n \"email\": \"someone@foo.example.com\"\r\n }\r\n ],\r\n \"identifyingCodes\": [\r\n {\r\n \"DCSAResponsibleAgencyCode\": \"EPI\",\r\n \"partyCode\": \"foo@platform1.example.com\"\r\n }\r\n ]\r\n },\r\n \"partyFunction\": \"CN\",\r\n \"displayedAddress\": [\r\n \"foo\"\r\n ],\r\n \"isToBeNotified\": false\r\n },\r\n {\r\n \"party\": {\r\n \"partyName\": \"bar party\",\r\n \"address\": {\r\n \"name\": \"bar address name\"\r\n },\r\n \"partyContactDetails\": [\r\n {\r\n \"name\": \"partycontact details\",\r\n \"email\": \"someone@bar.example.com\"\r\n }\r\n ],\r\n \"identifyingCodes\": [\r\n {\r\n \"DCSAResponsibleAgencyCode\": \"EPI\",\r\n \"partyCode\": \"bar@platform2.example.com\"\r\n }\r\n ]\r\n },\r\n \"partyFunction\": \"OS\",\r\n \"displayedAddress\": [\r\n \"bar\"\r\n ],\r\n \"isToBeNotified\": false\r\n }\r\n ],\r\n \"references\": [\r\n {\r\n \"type\": \"AAO\",\r\n \"value\": \"foo reference\"\r\n }\r\n ],\r\n \"advanceManifestFilings\" : [\r\n {\r\n \"manifestTypeCode\" : \"ACI\",\r\n \"countryCode\": \"CA\",\r\n \"advanceManifestFilingsPerformedBy\": \"SHIPPER\",\r\n \"selfFilerCode\":\"FCL\"\r\n },\r\n {\r\n \"manifestTypeCode\" : \"ACE\",\r\n \"countryCode\": \"US\",\r\n \"advanceManifestFilingsPerformedBy\": \"SHIPPER\",\r\n \"selfFilerCode\":\"FCL\"\r\n }\r\n ],\r\n \"requestedCarrierCertificates\" : [\r\n \"SHIPMENT_VOYAGE_PARTICULARS_1\",\r\n \"SHIPMENT_VOYAGE_PARTICULARS_2\"\r\n ],\r\n \"requestedCarrierClauses\" : [\r\n \"CARGO_CARGOSPECIFICS\",\r\n \"VESSELCONVEYANCE_COUNTRYSPECIFIC\"\r\n ]\r\n \r\n}", + "raw": "{\r\n \"isShippedOnBoardType\": true,\r\n \"isElectronic\": true,\r\n \"isToOrder\": false,\r\n \"displayedNameForPortOfLoad\": [\r\n \"Port of Rotterdam\"\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ],\r\n \"consignmentItems\": [\r\n {\r\n \"HSCodes\": [\"411510\"],\r\n \"carrierBookingReference\": \"{{CARRIER_BOOKING_REFERENCE}}\",\r\n \"commoditySubreference\": \"commodity-subreference\",\r\n \"weight\": 120.4,\r\n \"weightUnit\": \"KGM\",\r\n \"descriptionOfGoods\": \"The goods!\",\r\n \"cargoItems\": [\r\n {\r\n \"equipmentReference\": \"BMOU2149612\",\r\n \"weight\": 120.3,\r\n \"weightUnit\": \"KGM\",\r\n \"shippingMarks\": [\"bar\"],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ] \r\n }\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n } \r\n ]\r\n }\r\n ],\r\n \"utilizedTransportEquipments\": [\r\n {\r\n \"equipmentReference\": \"BMOU2149612\",\r\n \"cargoGrossWeight\": 120.3,\r\n \"cargoGrossWeightUnit\": \"KGM\",\r\n \"isShipperOwned\": false,\r\n \"seals\": [\r\n {\r\n \"number\": \"12345\",\r\n \"source\": \"CAR\",\r\n \"type\": \"BLT\"\r\n }\r\n ],\r\n \"customsReferences\": [\r\n {\r\n \"type\": \"CERS\",\r\n \"countryCode\": \"CA\",\r\n \"value\": \"12345678\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"documentParties\": [\r\n {\r\n \"party\": {\r\n \"partyName\": \"foo party\",\r\n \"address\": {\r\n \"name\": \"foo address name\"\r\n },\r\n \"taxAndLegalReferences\" : [{\r\n \"type\": \"VAT\",\r\n \"countryCode\": \"NL\",\r\n \"value\": \"VAT\"\r\n }], \r\n \"partyContactDetails\": [\r\n {\r\n \"name\": \"partycontact details\",\r\n \"email\": \"someone@foo.example.com\"\r\n }\r\n ],\r\n \"identifyingCodes\": [\r\n {\r\n \"DCSAResponsibleAgencyCode\": \"EPI\",\r\n \"partyCode\": \"foo@platform1.example.com\"\r\n }\r\n ]\r\n },\r\n \"partyFunction\": \"CN\",\r\n \"displayedAddress\": [\r\n \"foo\"\r\n ],\r\n \"isToBeNotified\": false\r\n },\r\n {\r\n \"party\": {\r\n \"partyName\": \"bar party\",\r\n \"address\": {\r\n \"name\": \"bar address name\"\r\n },\r\n \"taxAndLegalReferences\" : [{\r\n \"type\": \"VAT\",\r\n \"countryCode\": \"NL\",\r\n \"value\": \"VAT\"\r\n }], \r\n \"partyContactDetails\": [\r\n {\r\n \"name\": \"partycontact details\",\r\n \"email\": \"someone@bar.example.com\"\r\n }\r\n ],\r\n \"identifyingCodes\": [\r\n {\r\n \"DCSAResponsibleAgencyCode\": \"EPI\",\r\n \"partyCode\": \"bar@platform2.example.com\"\r\n }\r\n ]\r\n },\r\n \"partyFunction\": \"OS\",\r\n \"displayedAddress\": [\r\n \"bar\"\r\n ],\r\n \"isToBeNotified\": false\r\n }\r\n ],\r\n \"references\": [\r\n {\r\n \"type\": \"AAO\",\r\n \"value\": \"foo reference\"\r\n }\r\n ],\r\n \"advanceManifestFilings\" : [\r\n {\r\n \"manifestTypeCode\" : \"ACI\",\r\n \"countryCode\": \"CA\",\r\n \"advanceManifestFilingsPerformedBy\": \"SHIPPER\",\r\n \"selfFilerCode\":\"FCL\"\r\n },\r\n {\r\n \"manifestTypeCode\" : \"ACE\",\r\n \"countryCode\": \"US\",\r\n \"advanceManifestFilingsPerformedBy\": \"SHIPPER\",\r\n \"selfFilerCode\":\"FCL\"\r\n }\r\n ],\r\n \"requestedCarrierCertificates\" : [\r\n \"SHIPMENT_VOYAGE_PARTICULARS_1\",\r\n \"SHIPMENT_VOYAGE_PARTICULARS_2\"\r\n ],\r\n \"requestedCarrierClauses\" : [\r\n \"CARGO_CARGOSPECIFICS\",\r\n \"VESSELCONVEYANCE_COUNTRYSPECIFIC\"\r\n ]\r\n \r\n}", "options": { "raw": { "language": "json" @@ -5425,16 +5425,16 @@ "value": "" }, { - "key": "SHIPPING_INSTRUCTION_REFERENCE", + "key": "TRANSPORT_DOCUMENT_REFERENCE", "value": "" }, { - "key": "TRANSPORT_DOCUMENT_REFERENCE", + "key": "CARRIER_BOOKING_REQUEST_REFERENCE", "value": "" }, { - "key": "CARRIER_BOOKING_REQUEST_REFERENCE", + "key": "SHIPPING_INSTRUCTION_REFERENCE", "value": "" } ] -} +} \ No newline at end of file