diff --git a/.stoplight/styleguide.json b/.stoplight/styleguide.json index 3a816063..c6e2fa59 100644 --- a/.stoplight/styleguide.json +++ b/.stoplight/styleguide.json @@ -63,7 +63,7 @@ "id": "nfiSNHQHEHtWGvD7vgNLq", "extendedFrom": "", "name": "checkRequirements", - "content": "import { createRulesetFunction } from '@stoplight/spectral-core';\n\n// Should Spectral return an error if unsupported properties are found\nconst IGNORE_UNSUPPORTED_PROPERTIES = new Set([\n 'OVS_HUB_TER_v1.0.0',\n 'OVS_HUB_REF_v1.0.0',\n 'OVS_HUB_NTF_v1.0.0',\n]);\n\n// Should Spectral return an error if wrong parent element is found\nconst IGNORE_PARENT_CHECK = new Set([\n 'OVS_HUB_TER_v1.0.0',\n 'OVS_HUB_REF_v1.0.0',\n 'OVS_HUB_NTF_v1.0.0',\n]);\n\n// Pattern used to find PseudoEnums and enums in descriptions\nconst PSEUDO_ENUM_PATTERN = /\\n *- *`?([A-Z0-9_.]+)`? *(\\(|:)?/g;\n\n// Should Spectral ignore checks regarding \"location\" of the property\n// (parent specific specifications (also if defined in a standard) are ignored)\nconst NO_PARENT_CHECK = new Set([\n //'CS_v1.0.0',\n]);\n\n// List of eBL Platform Solution Providers\nconst EBL_PLATFORM_SOLUTION_PROVIDERS = ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC','DOCU','AEOT','SGTD'];\n\n// List of attributes to be checked\n// For all attributes in ATTRIBUTES_TO_CHECK, this Spectral rule will make sure:\n// * if attribute is in the Spec - the attribute MUST also be in the requirements\n// * if attribute is in the requirements - then it also need to be in the Spec\nconst ATTRIBUTES_TO_CHECK= ['type', 'minLength', 'maxLength', 'pattern', 'enum', 'format', 'deprecated', 'exclusiveMaximum',\n 'exclusiveMinimum', 'maximum', 'minimum', 'minItems', 'maxItems', 'required', 'nullable', 'items', 'title', 'additionalProperties', 'default', 'readOnly', 'writeOnly'];\n\n// List of Objects that must follow the CloudEvent Notification pattern\nconst DCSA_CLOUDEVENT_GROUP = { ShippingInstructionsNotification: {}, TransportDocumentNotification: {}, BookingNotification: {}, ArrivalNoticeNotification: {} };\n\n// Spectral will **ONLY** check the standards in this list (in the future all APIs should be covered).\nconst COVERED_STANDARDS = new Set([\n // Arrival Notice\n // 'AN_v1.0.0-Beta-1',\n // Booking\n 'BKG_v2.0.0',\n 'BKG_v2.0.1',\n 'BKG_v2.0.2',\n 'BKG_v2.0.3',\n 'BKG_v2.0.4',\n 'BKG_v2.0.5',\n // Commercial Schedules\n 'CS_v1.0.0',\n 'CS_v1.0.1',\n 'CS_v1.0.2',\n 'CS_v1.0.3',\n // electronic Bill of Lading\n 'EBL_v3.0.0',\n 'EBL_v3.0.1',\n 'EBL_v3.0.2',\n 'EBL_v3.0.3',\n 'EBL_v3.0.4',\n 'EBL_END_v3.0.2',\n 'EBL_END_v3.0.3',\n 'EBL_END_v3.0.4',\n 'EBL_ISS_v3.0.0',\n 'EBL_ISS_v3.0.1',\n 'EBL_ISS_v3.0.2',\n 'EBL_ISS_v3.0.3',\n 'EBL_ISS_v3.0.4',\n 'EBL_SUR_v3.0.0',\n 'EBL_SUR_v3.0.1',\n 'EBL_SUR_v3.0.2',\n 'EBL_SUR_v3.0.3',\n 'EBL_SUR_v3.0.4',\n 'EBL_PINT_v3.0.0',\n // Just in Time Port Calls\n 'JIT_v2.0.0',\n 'OVS_v3.0.0',\n 'OVS_v3.0.1',\n 'OVS_v3.0.2',\n 'OVS_HUB_TER_v1.0.0',\n 'OVS_HUB_REF_v1.0.0',\n 'OVS_HUB_NTF_v1.0.0',\n]);\n\n// A list of accepted properties that have changed over time or are different for different standards\n// DEFAULT covers all remaining standards\n// \"GROUPS\" - e.g. EBL_BETA2_GROUP: this covers all standards in the EBL Beta 2 release (EBL, ISS, ISS_RSP, SUR, SUR_RSP, EBL_NFT, PINT)\n// - it is possible to define more groups in which the group need to be added next to where EBL_BETA2_GROUP is used\n// If 'parent' is specified - then the spec only allows the property under the list of parents\n// If no 'parent' is specified - the spec applies to all locations in the document\n// parents-specs overrule \"globalSpec\"\n// Enum and required fields (fields specified as lists) MUST be defined in same order\nconst DCSA_PROPERTIES = {\n _20_units: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' }\n },\n _40_units: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' }\n },\n _45_units: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' }\n },\n action: {\n PARENTS : { SurrenderRequestAnswer: {} },\n DEFAULT : { type: 'string', enum: ['SURR', 'SREJ'] },\n },\n actionCode: {\n PARENTS : { EndorsementChainLink: {}, Transaction: { pseudoEnum: ['ISSUE','ENDORSE','SIGN','SURRENDER_FOR_DELIVERY','SURRENDER_FOR_AMENDMENT','SACC','SREJ','BLANK_ENDORSE','ENDORSE_TO_ORDER','TRANSFER'] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['ISSUE','ENDORSE','SIGN','SURRENDER_FOR_DELIVERY','SURRENDER_FOR_AMENDMENT','BLANK_ENDORSE','ENDORSE_TO_ORDER','TRANSFER','SURRENDERED'] },\n },\n actionDateTime: {\n PARENTS : { EndorsementChainLink: {}, Transaction: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n ActiveReeferSettings: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n// 'BKG_v2.0.1' : { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n// 'BKG_v2.0.3' : { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n DEFAULT : { type: 'object', title: 'Active Reefer Settings', CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired'] },\n },\n activeReeferSettings: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { $ref: '#/components/schemas/ActiveReeferSettings' },\n },\n actor: {\n PARENTS : { EndorsementChainLink: {}, Transaction: {} },\n DEFAULT : { $ref: '#/components/schemas/ActorParty' },\n },\n actualDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n additionalContainerCargoHandling: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n address: {\n 'OVS_v3.0.x' : { PARENTS: { AddressLocation: { type: 'object', required: ['name'] } } },\n PARENTS : {\n Location: {$ref: '#/components/schemas/Address'},\n LoadLocation: {$ref: '#/components/schemas/Address'},\n DischargeLocation: {$ref: '#/components/schemas/Address'},\n PlaceOfReceipt: {$ref: '#/components/schemas/Address'},\n PortOfLoading: {$ref: '#/components/schemas/Address'},\n PortOfDischarge: {$ref: '#/components/schemas/Address'},\n PlaceOfDelivery: {$ref: '#/components/schemas/Address'},\n OnwardInlandRouting: {$ref: '#/components/schemas/Address'},\n BookingAgent: {$ref: '#/components/schemas/PartyAddress'},\n Shipper: {$ref: '#/components/schemas/PartyAddress'},\n ShipperShipper: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfShipper: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfShipperShipper: {$ref: '#/components/schemas/PartyAddress'},\n ShipperHBL: {$ref: '#/components/schemas/Address'},\n Consignee: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfConsignee: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfConsigneeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeHBL: {$ref: '#/components/schemas/Address'},\n Endorsee: {$ref: '#/components/schemas/PartyAddress'},\n EndorseeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ServiceContractOwner: {$ref: '#/components/schemas/PartyAddress'},\n CarrierBookingOffice: {$ref: '#/components/schemas/Address'},\n NotifyParty: { $ref: '#/components/schemas/PartyAddress'},\n NotifyPartyShipper: { $ref: '#/components/schemas/PartyAddress'},\n NotifyPartyHBL: { $ref: '#/components/schemas/AddressHBL'},\n Seller: { $ref: '#/components/schemas/Address'},\n SellerHBL: { $ref: '#/components/schemas/AddressHBL'},\n Buyer: { $ref: '#/components/schemas/Address'},\n BuyerHBL: { $ref: '#/components/schemas/AddressHBL'},\n ShippingInstructionsRequestor: { $ref: '#/components/schemas/PartyAddress' },\n Party: {$ref: '#/components/schemas/PartyAddress'},\n PartyShipper: {$ref: '#/components/schemas/PartyAddress'},\n PartyHBL: {$ref: '#/components/schemas/Address'},\n CarriersAgentAtDestination: {$ref: '#/components/schemas/Address'},\n IssuingParty: {$ref: '#/components/schemas/PartyAddress'},\n EmptyContainerDepotReleaseLocation: {$ref: '#/components/schemas/Address'},\n ContainerPositioningLocation: {$ref: '#/components/schemas/Address'},\n TransportCallLocation: { $ref: '#/components/schemas/Address' }\n },\n },\n Address: {\n 'CS_v1.0.x' : { DEFAULT: { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'city', 'stateRegion', 'countryCode'] } },\n DEFAULT : { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'POBox', 'city', 'stateRegion', 'countryCode'] },\n },\n AddressHBL: {\n DEFAULT : { type: 'object', title: 'Address (House B/L)', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'POBox', 'city', 'stateRegion', 'countryCode'] },\n },\n addressLines: {\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 250 } },\n },\n AddressLocation: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'Address Location', required: ['address','locationType'], CHILDREN: ['locationName', 'locationType', 'address'] } },\n },\n advanceManifestFilings: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/AdvanceManifestFiling'} },\n },\n AdvanceManifestFiling: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n DEFAULT : { type: 'object', title: 'Advance Manifest Filing', required: ['manifestTypeCode', 'advanceManifestFilingsHouseBLPerformedBy'], CHILDREN: ['manifestTypeCode','countryCode','advanceManifestFilingsHouseBLPerformedBy','selfFilerCode','identificationNumber'] },\n },\n advanceManifestFilingsHouseBLPerformedBy: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', enum: ['SELF', 'CARRIER'] },\n },\n aftDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n airDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n airExchangeSetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n airExchangeUnit: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'string', enum: ['MQH', 'FQH']},\n },\n amendedBooking: {\n DEFAULT : { $ref: '#/components/schemas/AmendedBookingFullNotification' },\n },\n AmendedBookingFullNotification: {\n DEFAULT : { type: 'object', title: 'Amended Booking', allOf: true },\n },\n amendedBookingStatus: {\n PARENTS : { Booking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['AMENDMENT_RECEIVED','AMENDMENT_CONFIRMED','AMENDMENT_DECLINED','AMENDMENT_CANCELLED'] },\n },\n amendedTransportDocument: {\n PARENTS : { TransportDocumentData: {}, TransportDocumentAmend: { $ref: '#/components/schemas/TransportDocument' } },\n DEFAULT : { $ref: '#/components/schemas/AmendedTransportDocumentFullNotification' }\n },\n AmendedTransportDocumentFullNotification: {\n DEFAULT : { type: 'object', title: 'Amended Transport Document Full Notification', allOf: true },\n },\n amendedTransportDocumentStatus: {\n PARENTS : { TransportDocumentData: {}, TransportDocumentAmend: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['AMENDMENT_RECEIVED','AMENDMENT_CONFIRMED','AMENDMENT_DECLINED','AMENDMENT_CANCELLED'] },\n },\n ApproveTransportDocument: {\n DEFAULT : { type: 'object', title: 'Approve Transport Document', required: ['transportDocumentStatus'], CHILDREN: ['transportDocumentStatus'] },\n },\n arrival: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfArrival' },\n },\n arrivalDateTime: {\n PARENTS : { IntermediateCall: {} },\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n auditReference: {\n PARENTS : { EndorsementChainLink: {},Transaction: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n barge: {\n DEFAULT : { $ref: '#/components/schemas/Barge' },\n },\n Barge: {\n DEFAULT : { type: 'object', title: 'Barge', CHILDREN: ['vesselIMONumber','MMSINumber','name','flag','callSign','operatorCarrierCode','operatorCarrierCodeListProvider'] },\n },\n BargeTransport: {\n DEFAULT : { type: 'object', title: 'Barge Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','barge'] },\n },\n Booking: {\n DEFAULT : { type: 'object', title: 'Booking', required: ['bookingStatus', 'receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n booking: {\n DEFAULT : { $ref: '#/components/schemas/BookingFullNotification' },\n },\n bookingAgent: {\n PARENTS : { DocumentParties: {}, DocumentPartiesReq: {} },\n DEFAULT : { $ref: '#/components/schemas/BookingAgent' },\n },\n BookingAgent: {\n DEFAULT : { type: 'object', title: 'Booking Agent', required: ['partyName'], CHILDREN: ['partyName', 'address','addressLines', 'partyContactDetails', 'identifyingCodes', 'taxLegalReferences','reference']},\n },\n BookingFullNotification: {\n DEFAULT : { type: 'object', title: 'Booking Full Notification', allOf: true },\n },\n bookingChannelReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n BookingRefCancelledStatus: {\n DEFAULT : { type: 'object', title: 'Cancelled Booking Response', required: ['bookingStatus'] },\n },\n BookingRefStatus: {\n DEFAULT : { type: 'object', title: 'Booking Response', required: ['bookingStatus'] },\n },\n BookingNotification: {\n DEFAULT : { type: 'object', title: 'Booking Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data'] },\n },\n BookingNotificationData: {\n DEFAULT : { type: 'object', title: 'Data', required: ['bookingStatus'], CHILDREN: ['bookingStatus', 'amendedBookingStatus', 'bookingCancellationStatus', 'carrierBookingRequestReference', 'carrierBookingReference', 'feedbacks', 'booking', 'amendedBooking'] },\n },\n bookingStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['RECEIVED','PENDING_UPDATE','UPDATE_RECEIVED','CONFIRMED','PENDING_AMENDMENT','REJECTED','DECLINED','CANCELLED','COMPLETED'] },\n },\n bookingCancellationStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['CANCELLATION_RECEIVED','CANCELLATION_DECLINED','CANCELLATION_CONFIRMED'] },\n },\n buyer: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesHouseBL: { $ref: '#/components/schemas/BuyerHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Buyer' },\n },\n Buyer: {\n DEFAULT : { type: 'object', title: 'Buyer', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n BuyerHBL: {\n DEFAULT : { type: 'object', title: 'Buyer (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n calculationBasis: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n callSign: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n cancel: {\n DEFAULT : { type: 'boolean' },\n },\n Cancel: {\n DEFAULT : { type: 'object', title: 'Cancel', CHILDREN: ['reason','isFYI'] },\n },\n cancelled: {\n PARENTS : { PortCallService: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n CancelBookingRequest: {\n DEFAULT : { type: 'object', title: 'Cancel Booking Request', CHILDREN: ['reason'] },\n },\n CancelShippingInstructionsUpdate: {\n DEFAULT : { type: 'object', title: 'Cancel Shipping Instructions or Updated Shipping Instructions', CHILDREN: ['updatedShippingInstructionsStatus', 'shippingInstructionsStatus'] },\n },\n cargoGrossVolume: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoGrossVolume' },\n },\n CargoGrossVolume: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Volume', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoGrossWeight: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {}, CargoItemHBL: {}, RequestedEquipment: { $ref: '#/components/schemas/CargoGrossWeightReq' }, RequestedEquipmentShipper: { $ref: '#/components/schemas/CargoGrossWeightReq' } },\n DEFAULT : { $ref: '#/components/schemas/CargoGrossWeight' },\n },\n CargoGrossWeight: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n CargoGrossWeightReq: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Weight (Requested Equipment)', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoNetVolume: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoNetVolume' },\n },\n CargoNetVolume: {\n DEFAULT : { type: 'object', title: 'Cargo Net Volume', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoNetWeight: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoNetWeight' },\n },\n CargoNetWeight: {\n DEFAULT : { type: 'object', title: 'Cargo Net Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n CargoItem: {\n DEFAULT : { type: 'object', title: 'Cargo Item', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','extendedNationalCommodityCodes','customsReferences'] },\n },\n CargoItemHBL: {\n DEFAULT : { type: 'object', title: 'Cargo Item (House B/L)', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','outerPackaging'] },\n },\n cargoItems: {\n PARENTS : {\n ConsignmentItemShipper: { items: {$ref: '#/components/schemas/CargoItemShipper' } },\n ConsignmentItem : { items: {$ref: '#/components/schemas/CargoItem' } },\n ConsignmentItemHBL : { items: {$ref: '#/components/schemas/CargoItemHBL' } },\n },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n CargoItemShipper: {\n DEFAULT : {type: 'object', title: 'Cargo Item (Shipper)', required: ['equipmentReference', 'cargoGrossWeight'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','extendedNationalCommodityCodes','houseBillOfLadingReference','customsReferences'] },\n },\n cargoMovementTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n cargoMovementTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n carrierBookingOffice: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.3' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { documentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/CarrierBookingOffice' },\n },\n CarrierBookingOffice: {\n DEFAULT : { type: 'object', title: 'Carrier Booking Office', required: ['partyName', 'UNLocationCode'], CHILDREN: ['partyName','UNLocationCode','address','addressLines','partyContactDetails'] },\n },\n carrierBookingRequestReference: {\n PARENTS : { CreateBookingResponse: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, BookingNotificationData: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierBookingReference: {\n PARENTS : { UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, BookingNotificationData: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierClauses: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 20000, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n },\n carrierCode: {\n PARENTS : { Moves:{}, booking: {}, amendedBooking: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$' },\n },\n carrierCodeListProvider: {\n PARENTS : { Moves:{}, booking: {}, amendedBooking: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n carrierExportVoyageNumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern: null } },\n PARENTS : { TerminalTimestamp: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n carrierImportVoyageNumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern: null } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carriersAgentAtDestination: {\n PARENTS : { DocumentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/CarriersAgentAtDestination' },\n },\n CarriersAgentAtDestination: {\n DEFAULT : { type: 'object', title: 'Carrier\\'s Agent At Destination', required: ['partyName', 'address', 'partyContactDetails'], CHILDREN: ['partyName','address','addressLines','partyContactDetails'] },\n },\n carrierServiceCode: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 11, pattern:null } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierServiceName: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern:null } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierSCACCode: {\n DEFAULT : { type: 'string', pattern: '^\\\\S+$', maxLength: 4 },\n },\n CenterOfGravity: {\n DEFAULT : { type: 'object', title: 'Center of Gravity', CHILDREN: ['referencePoint','longitudinalOffset','transverseOffset','verticalOffset'] },\n },\n centerOfGravity: {\n DEFAULT : { $ref: '#/components/schemas/CenterOfGravity' },\n },\n changeRemark: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 250 } },\n },\n Charge: {\n DEFAULT : { type: 'object', title: 'Charge', required: ['chargeName', 'currencyAmount', 'currencyCode', 'paymentTermCode', 'calculationBasis', 'unitPrice', 'quantity'], CHILDREN: ['chargeName', 'extendedChargeName','currencyAmount','currencyCode','paymentTermCode','calculationBasis','unitPrice','quantity'] },\n },\n chargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', deprecated: true },\n },\n charges: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Charge'}},\n },\n city: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 65, pattern: null } },\n PARENTS : { PortOfLoading: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, PortOfDischarge: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, address: {}, Address: {}, AddressHBL: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n City: {\n DEFAULT : { type: 'object', title: 'City', required: ['city', 'countryCode'], CHILDREN: ['city','stateRegion','countryCode'] },\n },\n classifier: {\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['EST', 'CON'] },\n },\n classifierCode: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { enum: ['ACT', 'EST'] } },\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT', 'EST', 'PLN', 'REQ'], pseudoEnum: [] }, // No validation is done on description\n },\n co2: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n co2e: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n co2Setpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n code: {\n PARENTS : { Feedback: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFORMATIONAL_MESSAGE','PROPERTY_WILL_BE_IGNORED','PROPERTY_VALUE_MUST_CHANGE','PROPERTY_VALUE_HAS_BEEN_CHANGED','PROPERTY_VALUE_MAY_CHANGE','PROPERTY_HAS_BEEN_DELETED'] },\n },\n codedVariantList: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^[0-3][0-9A-Z]{3}$' },\n },\n codeListName: {\n PARENTS : { IdentifyingCode: {}, identifyingCode: {} },\n DEFAULT : { type: 'string', maxLength: 100, pseudoEnum: ['DID','LEI','DUNS'] },\n },\n codeListProvider: {\n// 'EBL_SUR_v3.0.x' : { DEFAULT: { pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC','DOCU','AEOT','SGTD','GSBN','WISE','GLEIF','W3C','DNB','FMC','DCSA','ZZZ','NONE'] } },\n// 'BKG_v2.0.0' : { DEFAULT: { type: 'string', maxLength: 100, pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','GSBN','WISE','GLEIF','W3C','DNB','FMC','DCSA','ZZZ'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { type: 'string', maxLength: 100, pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','GSBN','WISE','GLEIF','W3C','DNB','FMC','DCSA','ZZZ'] } },\n PARENTS : { IdentifyingCode: {} },\n DEFAULT : { type: 'string', maxLength: 100, pseudoEnum: [] },\n },\n comments: {\n PARENTS : { SurrenderRequestAnswer: {}, SurrenderRequestDetails: {}, Transaction: {} },\n DEFAULT : { type: 'string', maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n commodities: {\n PARENTS : { RequestedEquipment: { items: { $ref: '#/components/schemas/Commodity' } }, RequestedEquipmentShipper: { items: { $ref: '#/components/schemas/CommodityShipper' } } },\n DEFAULT : { type: 'array' },\n },\n CommodityShipper: {\n DEFAULT : { type: 'object', title: 'Commodity (Shipper)', required: ['commodityType'], CHILDREN: ['commodityType','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n Commodity: {\n DEFAULT : { type: 'object', title: 'Commodity', required: ['commodityType'], CHILDREN: ['commoditySubReference', 'commodityType','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n commoditySubReference: {\n PARENTS : { Commodity: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n commodityType: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', maxLength: 550, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n competentAuthorityApproval: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern:'^\\\\S(?:.*\\\\S)?$' },\n },\n confirmedEquipments: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ConfirmedEquipment' } },\n },\n ConfirmedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n DEFAULT : { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup'] },\n },\n consignee: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.3' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/ConsigneeShipper' }, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ConsigneeHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Consignee' },\n },\n Consignee: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','eblPlatform','address','addressLines','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences', 'isNotifyParty'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences'] } },\n// 'BKG_v2.0.3' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences'] } },\n DEFAULT : { type: 'object', title: 'Consignee', required: ['partyName','identifyingCodes'], CHILDREN: ['partyName','eblPlatform','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences', 'isNotifyParty'] },\n },\n ConsigneeShipper: {\n DEFAULT : { type: 'object', title: 'Consignee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','eblPlatform','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences', 'isNotifyParty'] },\n },\n ConsigneeHBL: {\n DEFAULT : { type: 'object', title: 'Consignee (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n consignmentItems: {\n PARENTS : {HouseBillOfLading: { items: { $ref: '#/components/schemas/ConsignmentItemHBL' } }, CreateShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, UpdateShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, ShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, shippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, updatedShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, TransportDocument: { items: { $ref: '#/components/schemas/ConsignmentItem' } }, transportDocument: { items: { $ref: '#/components/schemas/ConsignmentItem' } } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n// ConsignmentItem: {\n// DEFAULT : { type: 'object', title: 'Consignment Item', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes'], CHILDREN: ['carrierBookingReference','descriptionOfGoods','HSCodes','shippingMarks','references','customsReferences'] },\n// },\n ConsignmentItem: {\n DEFAULT : { type: 'object', title: 'Consignment Item', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes', 'cargoItems'], CHILDREN: ['carrierBookingReference','descriptionOfGoods','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','shippingMarks','cargoItems', 'exportLicense', 'importLicense', 'references','customsReferences'] },\n },\n ConsignmentItemShipper: {\n DEFAULT : { type: 'object', title: 'Consignment Item (Shipper)', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes', 'cargoItems'], CHILDREN: ['carrierBookingReference','commoditySubReference', 'descriptionOfGoods','descriptionOfGoodsForCustoms','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','shippingMarks','shippingMarksForCustoms','cargoItems', 'exportLicense', 'importLicense','references','customsReferences'], allOf: true },\n },\n ConsignmentItemHBL: {\n DEFAULT : { type: 'object', title: 'Consignment Item (House B/L)', required: ['descriptionOfGoods', 'cargoItems', 'nationalCommodityCode'], CHILDREN: ['descriptionOfGoods','nationalCommodityCode','extendedNationalCommodityCodes','cargoItems','customsReferences'] },\n },\n contact: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n ContainerUnits: {\n DEFAULT : { type: 'object', title: 'Container Units', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n ContainerPositioning: {\n DEFAULT : { type: 'object', title: 'Container Positioning', required: ['location'], CHILDREN: ['dateTime', 'location' ] },\n },\n ContainerPositioningEstimated: {\n DEFAULT : { type: 'object', title: 'Container Positioning Estimated', required: ['location'], CHILDREN: ['estimatedDateTime', 'location' ] },\n },\n containerPositionings : {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, ConfirmedEquipment: { items: { $ref: '#/components/schemas/ContainerPositioningEstimated' } }},\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ContainerPositioning' } },\n },\n ContainerPositioningLocation: {\n DEFAULT : { type: 'object', title: 'Container Positioning Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n ContainerRestows: {\n DEFAULT : { type: 'object', title: 'Container units to restow', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n content: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', format: 'byte' },\n },\n contentType: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', maxLength: 100, default: 'application/pdf' },\n },\n contractQuotationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$', deprecated: true },\n },\n controlTrackingRegistry: {\n DEFAULT : { type: 'string', maxLength: 1024, format: 'uri' },\n },\n country: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 75 } },\n },\n countryCode: {\n PARENTS : { PlaceOfAcceptance: {}, PlaceOfFinalDelivery: {}, PlaceOfBLIssue: {}, PlaceOfIssue: {}, address: {}, City: {}, Address: {}, AddressHBL: {}, PartyAddress: {}, AdvanceManifestFiling: {}, TaxLegalReference: {}, CustomsReference: {}, NationalCommodityCode: {}, ExtendedNationalCommodityCode: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n CreateBooking: {\n DEFAULT : { type: 'object', title: 'Create Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n CreateBookingResponse: {\n DEFAULT : { type: 'object', title: 'Create Booking Response', required: ['carrierBookingRequestReference'], CHILDREN: ['carrierBookingRequestReference'] },\n },\n CreateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions', required: ['transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n CreateShippingInstructionsResponse: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions Response', required: ['shippingInstructionsReference'], CHILDREN: ['shippingInstructionsReference'] },\n },\n currencyAmount: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n currencyCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', pattern: '^[A-Z]{3}$', minLength: 3, maxLength: 3 },\n },\n CustomsReference: {\n DEFAULT : { type: 'object', title: 'Customs Reference', required: ['type', 'countryCode', 'values'], CHILDREN: ['type','countryCode','values'] },\n },\n customsReferences: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: {}, CargoItemCarrier: {}, CargoItemShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipmentShipper: {}, TransportDocument: {}, transportDocument: {}, UtilizedTransportEquipment: {}, CargoItem: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, Commodity: {}, CommodityShipper: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/CustomsReference' } },\n },\n cutOffDateTime: {\n PARENTS : { ShipmentCutOffTime: {}, CutOffTime: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n cutOffDateTimeCode: {\n PARENTS : { ShipmentCutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','EFC'] }, CutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','PCO','ECP','EFC','RCO','DGC','OBC','TCO','STA','SPA','CUA','AFC'] } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n CutOffTime: {\n DEFAULT : { type: 'object', title: 'Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n cutOffTimes: {\n PARENTS : { PointToPoint: {}, Leg: {}, Schedule: {}, TransportCall: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/CutOffTime'} },\n },\n dangerousGoods: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DangerousGoods' } },\n },\n DangerousGoods: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.3' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n DEFAULT : { type: 'object', title: 'Dangerous Goods', oneOf: true, required: ['properShippingName', 'imoClass'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits'] },\n },\n data: {\n PARENTS : { BookingNotification: { $ref: '#/components/schemas/BookingNotificationData' }, ShippingInstructionsNotification: { $ref: '#/components/schemas/ShippingInstructionsData' }, TransportDocumentNotification: { $ref: '#/components/schemas/TransportDocumentData' } },\n DEFAULT : { type: 'object', title: 'Data' },\n },\n datacontenttype: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['application/json'], pseudoEnum: [] },\n },\n dateTime: {\n PARENTS : { Timestamp: {}, PlaceOfReceipt: {}, ContainerPositioning: {}, EmptyContainerPickup: {}, OriginEmptyContainerPickup: {}, PlaceOfDelivery: {}, PlaceOfArrival: {}, PlaceOfDeparture: {} },\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n declaredValue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n declaredValueCurrency: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', minLength: 3, maxLength: 3, pattern: '^[A-Z]{3}$' },\n },\n decline: {\n DEFAULT : { type: 'boolean' },\n },\n Decline: {\n DEFAULT : { type: 'object', title: 'Decline', CHILDREN: ['reason','isFYI'] },\n },\n declined: {\n PARENTS : { PortCallService: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n delayReasonCode: {\n 'OVS_v3.0.x' : { DEFAULT: { deprecated: true } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n delayReasonCodes: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 3} },\n },\n deliveryTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n departingVesselVoyage: {\n PARENTS : { ShipmentLocation: {} },\n DEFAULT : { type: 'object', title: \"Vessel Voyage\" },\n },\n departure: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDeparture' },\n },\n departureDateTime: {\n PARENTS : { IntermediateCall: {} },\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n depotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n description: {\n PARENTS : { OuterPackaging: {}, InnerPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n descriptionOfGoods: {\n PARENTS : { ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: { type: 'string', maxItems: null, maxLength: 512, items: null, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n descriptionOfGoodsForCustoms: {\n PARENTS : { ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35 } },\n },\n destinationChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/DestinationChargesPaymentTerm' },\n },\n DestinationChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Destination Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n DetailedError: {\n 'OVS_v3.0.x' : { DEFAULT: { required: ['errorCodeText'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','erorCodeMessage'] } },\n DEFAULT : { type: 'object', title: 'Detailed Error', required: ['errorCodeText', 'errorCodeMessage'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','errorCodeMessage'] },\n },\n dimensionUnit: {\n DEFAULT : { type: 'string', enum: ['MTR', 'FOT'] },\n },\n dischargeLocation: {\n PARENTS : {Transport: {$ref:'#/components/schemas/DischargeLocation' } },\n },\n DischargeLocation: {\n DEFAULT : { type: 'object', title: 'Discharge Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility', 'UNLocationCode'] },\n },\n dischargeUnits: {\n DEFAULT : { $ref: '#/components/schemas/DischargeUnits' }\n },\n DischargeUnits: {\n DEFAULT : { type: 'object', title: 'Discharge Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n displayedAddress: {\n PARENTS : { Shipper: {}, ShipperShipper: {}, Consignee: {}, ConsigneeShipper: {}, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {}, NotifyPartyShipper: {} },\n DEFAULT : { type: 'array', maxItems: 6, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfDelivery: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfReceipt: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfDischarge: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfLoad: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedShippedOnBoardReceivedForShipment: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 250 },\n },\n displayedToOrderText: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 6, items: { type: 'string', maxLength: 35 } },\n },\n document: {\n PARENTS : { IssuanceRequest: {} },\n DEFAULT : { $ref: '#/components/schemas/TransportDocument' },\n },\n documentChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64, $ref: '#/components/schemas/DocumentChecksum' },\n },\n DocumentChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n DocumentMetadata: {\n DEFAULT : { type: 'object', title: 'Document Metadata', required: ['name','size','mediaType','documentChecksum'], CHILDREN: ['name','size','mediaType','documentChecksum'] },\n },\n documentParties: {\n 'BKG_v2.0.x' : { PARENTS: {Booking: { $ref: '#/components/schemas/DocumentParties' }, booking: { $ref: '#/components/schemas/DocumentParties' }, amendedBooking: { $ref: '#/components/schemas/DocumentParties' }, CreateBooking: { $ref: '#/components/schemas/DocumentPartiesReq' }, UpdateBooking: {$ref: '#/components/schemas/DocumentPartiesReq'} } },\n// 'BKG_v2.0.1' : { PARENTS: {Booking: { $ref: '#/components/schemas/DocumentParties' }, booking: { $ref: '#/components/schemas/DocumentParties' }, amendedBooking: { $ref: '#/components/schemas/DocumentParties' }, CreateBooking: { $ref: '#/components/schemas/DocumentPartiesReq' }, UpdateBooking: {$ref: '#/components/schemas/DocumentPartiesReq'} } },\n// 'BKG_v2.0.2' : { PARENTS: {Booking: { $ref: '#/components/schemas/DocumentParties' }, booking: { $ref: '#/components/schemas/DocumentParties' }, amendedBooking: { $ref: '#/components/schemas/DocumentParties' }, CreateBooking: { $ref: '#/components/schemas/DocumentPartiesReq' }, UpdateBooking: {$ref: '#/components/schemas/DocumentPartiesReq'} } },\n// 'BKG_v2.0.3' : { PARENTS: {Booking: { $ref: '#/components/schemas/DocumentParties' }, booking: { $ref: '#/components/schemas/DocumentParties' }, amendedBooking: { $ref: '#/components/schemas/DocumentParties' }, CreateBooking: { $ref: '#/components/schemas/DocumentPartiesReq' }, UpdateBooking: {$ref: '#/components/schemas/DocumentPartiesReq'} } },\n PARENTS : { CreateShippingInstructions: { $ref: '#/components/schemas/DocumentPartiesShippingInstructions' }, UpdateShippingInstructions: { $ref: '#/components/schemas/DocumentPartiesShippingInstructions' }, ShippingInstructions: { $ref: '#/components/schemas/DocumentPartiesShippingInstructions' }, TransportDocument: { }, HouseBillOfLading: { $ref: '#/components/schemas/DocumentPartiesHouseBL' } },\n DEFAULT : { $ref: '#/components/schemas/DocumentParties' },\n },\n DocumentParties: {\n 'BKG_v2.0.x' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','issueTo','other'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','other'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','other'] } },\n// 'BKG_v2.0.3' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','other'] } },\n DEFAULT : { type: 'object', title: 'Document Parties', required: ['shipper','issuingParty'], CHILDREN: ['shipper','onBehalfOfShipper','consignee','onBehalfOfConsignee','endorsee','issuingParty','carriersAgentAtDestination','notifyParties','other'] },\n },\n DocumentPartiesReq: {\n DEFAULT : { type: 'object', title: 'Document Parties (Shipper)', required: ['bookingAgent'], CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','issueTo','other'] },\n },\n DocumentPartiesHouseBL: {\n DEFAULT : { type: 'object', title: 'Document Parties (House B/L)', required: ['shipper'], CHILDREN: ['shipper','consignee','notifyParty','seller','buyer','other'] },\n },\n DocumentPartiesShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Document Parties (Shipping Instructions)', required: ['shipper'], CHILDREN: ['shipper','onBehalfOfShipper','consignee','onBehalfOfConsignee','endorsee', 'issueTo', 'seller', 'buyer', 'notifyParties','shippingInstructionsRequestor','other'] },\n },\n draft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n duplicateOfAcceptedEnvelopeTransferChainEntrySignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EblEnvelope: {\n DEFAULT : { type: 'object', title: 'Ebl Envelope', required: ['transportDocument', 'envelopeManifestSignedContent','envelopeTransferChain'], CHILDREN: ['transportDocument', 'envelopeManifestSignedContent','envelopeTransferChain'] },\n },\n eblPlatform: {\n 'EBL_SUR_v3.0.x' : { PARENTS: { Shipper: {}, Consginee: {}, Endorsee: {}, RecipientParty: {}, ActorParty: {} } },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$'},\n },\n eBLVisualisationByCarrier: {\n PARENTS : { IssuanceRequest: {}, EnvelopeManifest: {} },\n DEFAULT : { $ref: '#/components/schemas/SupportingDocument' },\n },\n eBLVisualisationByCarrierChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n email: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^.+@\\\\S+$' },\n },\n EmergencyContactDetails: {\n DEFAULT : { type: 'object', title: 'Emergency Contact Details', required: ['contact', 'phone'], CHILDREN: ['contact','provider','phone','referenceNumber'] },\n },\n emergencyContactDetails: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/EmergencyContactDetails' },\n },\n emptyContainerPickup: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerPickup' },\n },\n EmptyContainerPickup: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Empty Container Pickup', deprecated: null, CHILDREN: ['dateTime','depotReleaseLocation'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Empty Container Pickup', deprecated: null, CHILDREN: ['dateTime','depotReleaseLocation'] } },\n DEFAULT : { type: 'object', title: 'Empty Container Pickup', deprecated: true, CHILDREN: ['dateTime','depotReleaseLocation'] },\n },\n originEmptyContainerPickup: {\n DEFAULT : { $ref: '#/components/schemas/OriginEmptyContainerPickup' },\n },\n OriginEmptyContainerPickup: {\n DEFAULT : { type: 'object', title: 'Origin Empty Container Pickup', CHILDREN: ['dateTime','depotReleaseLocation'] },\n },\n emptyContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n emptyContainerDepotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n EmptyContainerDepotReleaseLocation: {\n DEFAULT : { type: 'object', title: 'Empty Container Depot Release Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n emptyContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerUnits' }\n },\n EmptyContainerUnits: {\n DEFAULT : { type: 'object', title: 'Empty Container Units', oneOf:true },\n },\n emptyIndicatorCode: {\n DEFAULT : { type: 'string', enum: ['LADEN','EMPTY'] },\n },\n EMSNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 7 },\n },\n endOfHoldingTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n endorsee: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/EndorseeShipper' } },\n DEFAULT : { $ref: '#/components/schemas/Endorsee' },\n },\n Endorsee: {\n DEFAULT : { type: 'object', title: 'Endorsee', required: ['partyName','identifyingCodes'], CHILDREN: ['partyName','eblPlatform','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'isNotifyParty'] },\n },\n EndorseeShipper: {\n DEFAULT : { type: 'object', title: 'Endorsee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','eblPlatform','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'isNotifyParty'] },\n },\n endorsementChain: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/EndorsementChainLink' } },\n },\n EndorsementChain: {\n DEFAULT : { type: 'object', title: 'Endorsement Chain', required: ['transportDocumentReference'], CHILDREN: ['transportDocumentReference', 'transportDocumentSubReference', 'carrierSCACCode', 'endorsementChain']},\n },\n EndorsementChainLink: {\n 'EBL_SUR_v3.0.x' : { DEFAULT: { required: ['actionDateTime', 'actionCode', 'actor', 'recipient'] } },\n DEFAULT : { type: 'object', title: 'Endorsement Chain Link', required: ['actionDateTime', 'actionCode', 'actor'], CHILDREN: ['actionDateTime', 'actionCode', 'actor', 'recipient','auditReference'] },\n },\n EnvelopeManifest: {\n DEFAULT : { type: 'object', title: 'Envelope Manifest', required: ['transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum'], CHILDREN: ['transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','eBLVisualisationByCarrier','supportingDocuments'] },\n },\n envelopeManifestSignedContent: {\n DEFAULT : { $ref: '#/components/schemas/EnvelopeManifestSignedContent' },\n },\n EnvelopeManifestSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n envelopeReference: {\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n envelopeTransferChain: {\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/EnvelopeTransferChainEntrySignedContent' } },\n },\n EnvelopeTransferChainEntry: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Chain Entry', required: ['eblPlatform','transportDocumentChecksum','transactions'], CHILDREN: ['eblPlatform','transportDocumentChecksum','previousEnvelopeTransferChainEntrySignedContentChecksum','issuanceManifestSignedContent','controlTrackingRegistry','transactions'] },\n },\n EnvelopeTransferChainEntrySignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EnvelopeTransferFinishedResponse: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Finished Response', required: ['lastEnvelopeTransferChainEntrySignedContentChecksum','responseCode'], CHILDREN: ['lastEnvelopeTransferChainEntrySignedContentChecksum','responseCode', 'duplicateOfAcceptedEnvelopeTransferChainEntrySignedContent', 'reason', 'missingAdditionalDocumentChecksums', 'receivedAdditionalDocumentChecksums'] },\n },\n EnvelopeTransferFinishedResponseSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EnvelopeTransferStartedResponse: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Started Response', required: ['envelopeReference','transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','missingAdditionalDocumentChecksums'], CHILDREN: ['envelopeReference','transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','missingAdditionalDocumentChecksums'] },\n },\n equipment: {\n PARENTS : { UtilizedTransportEquipmentCarrier: { $ref: '#/components/schemas/Equipment' }, UTEquipment: { $ref: '#/components/schemas/RequiredEquipment' }, UtilizedTransportEquipment: { $ref: '#/components/schemas/Equipment' } },\n },\n Equipment: {\n DEFAULT : { type: 'object', title: 'Equipment', required: ['equipmentReference'], CHILDREN: ['equipmentReference','ISOEquipmentCode','tareWeight'] },\n },\n equipmentReference: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, CargoItem: {}, CargoItemShipper: {}, CargoItemHBL: {}, UTEquipmentReference: {}, Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n equipmentReferences: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, CargoItemCarrier: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n errorDateTime: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n errorCode: {\n PARENTS : { DetailedError: {}, errors: {}, IssuanceError: {type: 'string', maxLength: 50, pattern: '^\\\\S+$', format: null, minimum: null, maximum: null } },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 7000, maximum: 9999 },\n },\n erorCodeMessage: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 200 }, PARENTS: { DetailedError: {}, errors: {} } }, \n },\n errorCodeMessage: {\n PARENTS : { DetailedError: {}, errors: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n errorCodeText: {\n PARENTS : { DetailedError: {}, errors: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n ErrorResponse: {\n DEFAULT : { type: 'object', title: 'Error Response', required: ['httpMethod', 'requestUri', 'statusCode', 'statusCodeText','errorDateTime', 'errors'], CHILDREN: ['httpMethod','requestUri','statusCode','statusCodeText','statusCodeMessage','providerCorrelationReference','errorDateTime','errors'] },\n },\n errors: {\n 'OVS_v3.0.x' : { DEFAULT: { minItems: null } },\n PARENTS : { ErrorResponse: {}, IssuanceResponse: {minItems: null, maxItems: 255, items: {$ref: '#/components/schemas/IssuanceError'}} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/DetailedError'} },\n },\n estimatedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n estimatedEmptyContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n eventDateTime: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n eventTypeCode: {\n PARENTS : { TerminalTimestamp: {}, Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ARRI', 'DEPA'] },\n },\n eventClassifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['PLN', 'EST', 'ACT'] },\n },\n expectedArrivalAtPlaceOfDeliveryStartDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedArrivalAtPlaceOfDeliveryEndDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureFromPlaceOfReceiptDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expiryDate: {\n PARENTS : { ExportLicense: {}, ImportLicense: {},ExportLicenseShipper: {}, ImportLicenseShipper: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportDeclarationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n ExportLicense: {\n DEFAULT : { type: 'object', title: 'Export License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ExportLicenseShipper: {\n DEFAULT : { type: 'object', title: 'Export License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n exportLicense: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ExportLicense' },\n },\n exportLicenseExpiryDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportLicenseIssueDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n extendedChargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n extendedContractQuotationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n extendedHSCodes: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, ConsignmentItem: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', items: { type: 'string', minLength: 6, maxLength: 12, pattern: '^\\\\d{6,12}$' } },\n },\n ExtendedNationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code (Extended)', required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n extendedNationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {}, ConsignmentItemHBL: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ExtendedNationalCommodityCode'} },\n },\n Facility: {\n 'JIT_v2.0.0' : { DEFAULT: { CHILDREN: ['facilityCode','facilityCodeListProvider','subFacility'] } },\n DEFAULT : { type: 'object', title: 'Facility', required: ['facilityCode', 'facilityCodeListProvider'], CHILDREN: ['facilityCode','facilityCodeListProvider'] },\n },\n facility: {\n DEFAULT : { $ref: '#/components/schemas/Facility' },\n },\n facilityCode: {\n 'EBL_v3.0.0' : { DEFAULT: { nullable: 'false'} },\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', maxLength: 6, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n facilityName: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { location: {} } },\n PARENTS : { TransportCallLocation: {}, PortScheduleLocation: {}, Location: {}, PlaceOfReceipt: {}, PlaceOfDelivery: {}, OnwardInlandRouting: {}, ContainerPositioningLocation: {}, EmptyContainerDepotReleaseLocation: {}, LoadLocation: {}, DischargeLocation: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n facilitySMDGCode: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { TerminalTimestamp: {}, location: {} } },\n PARENTS : { FacilitySMDGLocation: {}, TransportCallLocation: {}, PortScheduleLocation: {} },\n DEFAULT : { type: 'string', maxLength: 6 },\n },\n FacilitySMDGLocation: {\n DEFAULT : { type: 'object', title: 'Facility SMDG Location', required: ['UNLocationCode','facilitySMDGCode','locationType'] },\n },\n facilityTypeCode: {\n 'OVS_v3.0.x' : { DEFAULT: {pseudoEnum: ['PBPL', 'BRTH'], default: 'BRTH'}},\n 'CS_v1.0.x' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n// 'CS_v1.0.1' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n 'JIT_v2.0.0' : { DEFAULT: { enum: ['PBPL', 'BRTH', 'ANCH'], pseudoEnum: [] }}, // No validation added for description\n DEFAULT : { type: 'string', maxLength: 4},\n },\n facilityCodeListProvider: {\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', enum: ['BIC', 'SMDG'] },\n },\n Feedback: {\n DEFAULT : { type: 'object', title: 'Feedback', required: ['severity', 'code', 'message'], CHILDREN: ['severity', 'code', 'message', 'jsonPath', 'property'] },\n },\n FeedbackElement: {\n DEFAULT : { type: 'object', title: 'Feedback Element', CHILDREN: ['severity', 'message', 'propertyPath'] },\n },\n feedbackElements: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/FeedbackElement' } },\n },\n feedbacks: {\n PARENTS : { ShippingInstructionsData: {}, ShippingInstructions: {}, TransportDocument: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/Feedback' } },\n },\n flag: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n flashPoint: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n floor: {\n 'OVS_v3.0.x' : { DEFAULT: { pattern: null } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 50 },\n },\n footprint: {\n DEFAULT : { type: 'object', CHILDREN: ['co2','co2e','sox','nox','pm10'] }\n },\n forwardDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n freeText: {\n PARENTS : { InvoicePayableAt: {} },\n DEFAULT : { type: 'string', maxLength: 35 }, // In TD invoicePayableAt\n },\n freightPaymentTermCode: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n fullContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n fumigationDateTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n GeoCoordinate: {\n DEFAULT : { type: 'object', title: 'Geo Coordinate', required: ['latitude', 'longitude'], CHILDREN: ['latitude', 'longitude'] },\n },\n geoCoordinate: {\n DEFAULT : { $ref: '#/components/schemas/GeoCoordinate' },\n },\n grossWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/GrossWeight' },\n },\n GrossWeight: {\n DEFAULT : { type: 'object', title: 'Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n handlingInstructions: {\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n haulageChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n height: {\n DEFAULT : { type: 'object', title: 'Height', allOf: true },\n },\n HouseBillOfLading: {\n DEFAULT : { type: 'object', title: 'House Bill of Lading', required: ['houseBillOfLadingReference','isToOrder','methodOfPayment','documentParties','isCargoDeliveredInICS2Zone','routingOfConsignmentCountries','consignmentItems','utilizedTransportEquipments'], CHILDREN: ['houseBillOfLadingReference','isToOrder','placeOfAcceptance','placeOfFinalDelivery','methodOfPayment','documentParties','isCargoDeliveredInICS2Zone','routingOfConsignmentCountries','consignmentItems','utilizedTransportEquipments'] },\n },\n houseBillOfLadingReference: {\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n houseBillOfLadings: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/HouseBillOfLading'} },\n },\n HSCodes: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, ConsignmentItem: { minItems: 1 }, ConsignmentItemShipper: {minItems: 1} },\n DEFAULT : { type: 'array', deprecated: true, items: { type: 'string', minLength: 6, maxLength: 10, pattern: '^\\\\d{6,10}$' } },\n },\n httpMethod: {\n 'OVS_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_SUR_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_ISS_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'BKG_v2.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'CS_v1.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'], pseudoEnum: [] },\n },\n humiditySetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n id: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', maxLength: 100},\n },\n IdentifyingCode: {\n DEFAULT : { type: 'object', title: 'Identifying Code', required: ['codeListProvider', 'partyCode'], CHILDREN: ['codeListProvider','partyCode','codeListName'] },\n },\n identifyingCodes: {\n 'BKG_v2.0.x' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, IssueToParty: { minItems: null }, Party: { minItems: null } } },\n PARENTS : { BookingAgent: { minItems: null }, Shipper: { minItems: null }, ShipperShipper: { minItems: null }, OnBehalfOfShipper: { minItems: null }, OnBehalfOfShipperShipper: { minItems: null }, ShipperHBL: { minItems: null }, Consignee: {}, OnBehalfOfConsignee: {}, OnBehalfOfConsigneeShipper: {}, ConsigneeShipper: { minItems: null }, ConsigneeHBL: { minItems: null }, Endorsee: {}, EndorseeShipper: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null }, PartyShipper: { minItems: null }, PartyHBL: { minItems: null }, IssuingParty: { minItems: null }, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: { minItems: null }, NotifyParty: { minItems: null }, NotifyPartyShipper: { minItems: null }, NotifyPartyHBL: { minItems: null }, Seller: { minItems: null }, SellerHBL: { minItems: null }, Buyer: { minItems: null }, BuyerHBL: { minItems: null }, ShippingInstructionsRequestor: { minItems: null }, RepresentedActorParty: { minItems: null }, RepresentedRecipientParty: { minItems: null } },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/IdentifyingCode'} },\n },\n imoClass: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 4, pseudoEnum: ['1.1A','1.6N','2.1','8'] },\n },\n imoPackagingCode: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 5, pattern: '^[A-Z0-9]{1,5}$' },\n },\n ImportLicense : {\n DEFAULT : { type: 'object', title: 'Import License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ImportLicenseShipper : {\n DEFAULT : { type: 'object', title: 'Import License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n importLicense : {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ImportLicense' },\n },\n incoTerms: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n inhalationZone: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 1, pseudoEnum: ['A','B','C','D'] },\n },\n InnerPackaging: {\n DEFAULT : { type: 'object', title: 'Inner Packaging', required: ['quantity', 'material', 'description'], CHILDREN: ['quantity','material','description', 'innerPackagings'] },\n },\n innerPackagings: {\n PARENTS : { DangerousGoods: {}, InnerPackaging: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/InnerPackaging' } },\n },\n IntermediateCall: {\n DEFAULT : { type: 'object', title: 'Intermediate Call', required: ['location'], CHILDREN: ['transportCallReference','facilityTypeCode','location','arrivalDateTime','departureDateTime'] },\n },\n intermediateCalls: {\n PARENTS : { Leg: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/IntermediateCall' } },\n },\n InvoicePayableAt: {\n 'BKG_v2.0.x' : { DEFAULT: { type: 'object', title: 'Invoice Payable At', required: ['UNLocationCode'], CHILDREN: ['UNLocationCode'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Invoice Payable At', required: ['UNLocationCode'], CHILDREN: ['UNLocationCode'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { type: 'object', title: 'Invoice Payable At', required: ['UNLocationCode'], CHILDREN: ['UNLocationCode'] } },\n DEFAULT : { type: 'object', title: 'Invoice Payable At', CHILDREN: ['UNLocationCode','freeText'] },\n },\n InvoicePayableAtShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Invoice Payable At (Shipping Instructions)', required: ['UNLocationCode'], CHILDREN: ['UNLocationCode'] },\n },\n invoicePayableAt: {\n PARENTS : { CreateBooking: { $ref: '#/components/schemas/InvoicePayableAt' }, UpdateBooking: { $ref: '#/components/schemas/InvoicePayableAt' }, Booking: { $ref: '#/components/schemas/InvoicePayableAt' }, CreateShippingInstructions: { $ref: '#/components/schemas/InvoicePayableAtShippingInstructions' }, UpdateShippingInstructions: { $ref: '#/components/schemas/InvoicePayableAtShippingInstructions' }, ShippingInstructions: { $ref: '#/components/schemas/InvoicePayableAtShippingInstructions' }, TransportDocument: { }},\n DEFAULT : { $ref: '#/components/schemas/InvoicePayableAt' },\n },\n \n isBulbMode: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isCarriersAgentAtDestinationRequired: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { type: 'boolean' },\n },\n isColdTreatmentRequired: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isCompetentAuthorityApprovalRequired: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isControlledAtmosphereRequired: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isCargoDeliveredInICS2Zone: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, HouseBillOfLading: {} },\n DEFAULT : { type: 'boolean' },\n },\n isDrainholesOpen: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isDummyVessel: {\n PARENTS : { Schedule: {}, VesselVoyage: {}, VesselSchedule: {} },\n DEFAULT : { type: 'boolean' },\n },\n isElectronic: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { type: 'boolean' },\n },\n isEmptyUncleanedResidue: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isEquipmentSubstitutionAllowed: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'boolean' },\n },\n isExceptedQuantity: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isExportDeclarationRequired: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'boolean' },\n },\n isFYI: {\n PARENTS : { Cancel: { writeOnly: null }, Decline: { writeOnly: null }, Omit: { writeOnly: null }, PortCall: {}, TerminalCall: {}, PortCallService: {}, Timestamp: {}, VesselStatus: {}, OmitPortCall: { writeOnly: null }, OmitTerminalCall: { writeOnly: null } },\n DEFAULT : { type: 'boolean', writeOnly: 'true', default: 'false' },\n },\n isGeneratorSetRequired: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isHouseBillOfLadingsIssued: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {} },\n DEFAULT : { type: 'boolean' },\n },\n isHot: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isLimitedQuantity: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isMarinePollutant: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isNonOperatingReefer: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'boolean' },\n },\n isNotifyParty: {\n PARENTS : { Consignee: {}, ConsigneeShipper: {}, Endorsee: {}, EndorseeShipper: {} },\n DEFAULT : { type: 'boolean' },\n },\n ISOEquipmentCode: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, ConfirmedEquipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n isPartialLoadAllowed: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'boolean' },\n },\n isPreCoolingRequired: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isReportableQuantity: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isRequired: {\n DEFAULT : { type: 'boolean' },\n },\n isSalvagePackings: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isShippedOnBoardType: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'boolean' },\n },\n isShipperOwned: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, UtilizedTransportEquipmentHBL: {}, UTEquipment: {}, UTEquipmentReference: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'boolean' },\n },\n IssuanceError: {\n DEFAULT : { type: 'object', title: 'Issuance Error', CHILDREN: ['reason', 'errorCode'] },\n },\n IssuanceManifest: {\n DEFAULT : { type: 'object', title: 'Issuance Manifest', required: ['documentChecksum', 'issueToChecksum'], CHILDREN: ['documentChecksum', 'eBLVisualisationByCarrierChecksum', 'issueToChecksum'] },\n },\n issuanceManifestSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n IssuanceRequest: {\n DEFAULT : { type: 'object', title: 'Issuance Request', required: ['document', 'issueTo', 'issuanceManifestSignedContent'] },\n },\n IssuanceResponse: {\n DEFAULT : { type: 'object', title: 'Issuance Response', required: ['transportDocumentReference', 'issuanceResponseCode'], CHILDREN: ['transportDocumentReference','transportDocumentSubReference', 'issuanceResponseCode', 'reason', 'errors'] },\n },\n issuanceResponseCode: {\n DEFAULT : { type: 'string', enum: ['ISSU','BREQ', 'REFU'] },\n },\n issueDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {}, ExportLicense: {}, ImportLicense: {}, ExportLicenseShipper: {}, ImportLicenseShipper: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n issueTo: {\n PARENTS : { IssuanceRequest: {}, DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesReq: {} },\n DEFAULT : { $ref: '#/components/schemas/IssueToParty' },\n },\n issueToChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n\n IssueToParty: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['partyName'] } },\n 'EBL_ISS_v3.0.x' : { DEFAULT: { required: ['partyName', 'sendToPlatform', 'identifyingCodes'] } },\n// 'EBL_ISS_v3.0.1' : { DEFAULT: { required: ['partyName', 'sendToPlatform', 'identifyingCodes'] } },\n DEFAULT : { type: 'object', title: 'Issue To Party', required: ['partyName', 'identifyingCodes'], CHILDREN: ['partyName', 'sendToPlatform', 'identifyingCodes', 'taxLegalReferences'] },\n },\n issuingParty: {\n PARENTS : { DocumentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/IssuingParty' },\n },\n IssuingParty: {\n DEFAULT : { type: 'object', title: 'Issuing Party', required: ['partyName', 'address'], CHILDREN: ['partyName','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n isToOrder: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {}, HouseBillOfLading: {} },\n DEFAULT : { type: 'boolean' },\n },\n isVentilationOpen: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isWaste: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n jsonPath: {\n PARENTS : { Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 500 },\n },\n ladenContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/LadenContainerUnits' }\n },\n LadenContainerUnits: {\n DEFAULT : { type: 'object', title: 'Laden Container Units', oneOf:true },\n },\n lashingRequirements: {\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n lastEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n latitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n Leg: {\n DEFAULT : { type: 'object', title: 'Leg', required: ['departure', 'arrival'], CHILDREN: ['sequenceNumber', 'transport', 'departure', 'intermediateCalls', 'arrival','footprint','cutOffTimes'] },\n },\n legs: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Leg'} },\n },\n length: {\n DEFAULT : { type: 'object', title: 'Length', allOf: true },\n },\n lengthOverall: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n liftingInstructions: {\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n liftingPoints: {\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n Limits: {\n DEFAULT : { type: 'object', title: 'Limits', required: ['temperatureUnit'], CHILDREN: ['temperatureUnit','flashPoint','transportControlTemperature','transportEmergencyTemperature','SADT','SAPT'] },\n },\n limits: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/Limits' },\n },\n loadLocation: {\n PARENTS : { Transport: {$ref:'#/components/schemas/LoadLocation' } },\n },\n LoadLocation: {\n DEFAULT : { type: 'object', title: 'Load Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility', 'UNLocationCode' ] },\n },\n loadUnits: {\n DEFAULT : { $ref: '#/components/schemas/LoadUnits' }\n },\n LoadUnits: {\n DEFAULT : { type: 'object', title: 'Load Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n location: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { type: 'object', title: 'Location' }, PARENTS: { TransportCall: {} } },\n 'OVS_v3.0.x' : { PARENTS: { TransportCall: {} } },\n 'CS_v1.0.x' : { PARENTS: { IntermediateCall: { $ref: '#/components/schemas/Location' }, PlaceOfReceipt: { $ref: '#/components/schemas/Location' }, TransportCall: { $ref: '#/components/schemas/TransportCallLocation' }, PortSchedule: { $ref: '#/components/schemas/PortScheduleLocation' }, PlaceOfDelivery: { $ref: '#/components/schemas/Location' }, PlaceOfArrival: { $ref: '#/components/schemas/Location' }, PlaceOfDeparture: { $ref: '#/components/schemas/Location' } } },\n PARENTS : { ShipmentLocation: {}, ContainerPositioning: {$ref: '#/components/schemas/ContainerPositioningLocation'}, ContainerPositioningEstimated: {$ref: '#/components/schemas/ContainerPositioningLocation'} },\n DEFAULT : { $ref: '#/components/schemas/Location' },\n },\n Location: {\n 'CS_v1.0.x' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','facilityName','address','addressLines','UNLocationCode','facility'] } },\n DEFAULT : { type: 'object', title: 'Location', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode','geoCoordinate'] },\n },\n locationName: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { location: {} } },\n 'OVS_v3.0.x' : { PARENTS: { AddressLocation: { pattern: null }, FacilitySMDGLocation: { pattern: null }, UNLocationLocation: { pattern: '^\\\\S+(\\\\s+\\\\S+)*$' } } },\n PARENTS : { PortScheduleLocation: {}, TransportCallLocation:{}, VesselPosition: {}, PortCallServiceLocation: {}, PortCallServiceLocationTimestamp: {}, PlaceOfAcceptance: { maxLength: 35}, PlaceOfFinalDelivery: { maxLength: 35}, PlaceOfReceipt: {}, PortOfLoading: {}, PlaceOfDelivery: {}, PortOfDischarge: {}, OnwardInlandRouting:{}, PlaceOfIssue: {}, PlaceOfBLIssue: {}, Location: {}, ContainerPositioningLocation: {}, EmptyContainerDepotReleaseLocation: {}, LoadLocation: {}, DischargeLocation: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n locationType: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 4 }, PARENTS: { AddressLocation: {}, FacilitySMDGLocation: {}, UNLocationLocation: {} } },\n// PARENTS : { AddressLocation: {}, FacilitySMDGLocation: {}, UNLocationLocation: {} },\n// PARENTS : { AddressLocation: {}, CityLocation: {}, Facility: {}, UNLocationLocation: {}, FacilitySMDGLocation: {} },\n// DEFAULT : { type: 'string', maxLength: 4 },\n },\n locationTypeCode: {\n PARENTS : { ShipmentLocation: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['PRE','POL','POD','PDE','PCF','OIR','ORI','IEL','PTP','RTP','FCD','ROU'] },\n },\n longitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 11 },\n },\n longitudinalOffset: {\n DEFAULT : { type: 'object', title: 'Longitudinal Offset', allOf: true },\n },\n manifestTypeCode: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n material: {\n PARENTS : { InnerPackaging: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n Measurement: {\n DEFAULT : { type: 'object', title: 'Measurement', required: ['value','unit'], CHILDREN: ['value','unit', 'classifier'] },\n },\n mediaType: {\n DEFAULT : { type: 'string', maxLength:100 },\n },\n message: {\n PARENTS : { Feedback: {}, FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n methodOfPayment: {\n DEFAULT : { type: 'string', maxLength: 1, pseudoEnum: ['A','B','C','D','H','Y','Z'] },\n },\n milesToDestinationPort: {\n DEFAULT : { type: 'number', format: 'float' }\n },\n missingAdditionalDocumentChecksums: {\n PARENTS : { EnvelopeTransferFinishedResponse: { minItems: null}, EnvelopeTransferStartedResponse: {} },\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n MMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n modeOfTransport: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n PARENTS : { Transport: { pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] }, VesselTransport: { maxLength: null, enum: ['VESSEL'], pseudoEnum: [] }, BargeTransport: { maxLength: null, enum: ['BARGE'], pseudoEnum: []}, OtherTransport: { maxLength: null, enum: ['RAIL_TRUCK', 'BARGE_TRUCK', 'BARGE_RAIL', 'MULTIMODAL', 'RAIL', 'TRUCK'] } },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n moves: {\n DEFAULT : { $ref: '#/components/schemas/MovesList' }\n },\n Moves: {\n DEFAULT : { type: 'object', title: 'Moves', CHILDREN: ['carrierCode','carrierCodeListProvider','restows'], oneOf: true },\n },\n MovesList: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Moves'} },\n },\n name: {\n 'OVS_HUB_REF_v1.0.x' : { DEFAULT: { maxLength: 50 }, PARENTS: { Vessel: {} } },\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 100, pattern: null }, PARENTS: { address: {} } },\n PARENTS : { DocumentMetadata: {}, Vessel: { maxLength: 50 }, Barge: { maxLength: 50 }, SupportingDocument: {maxLength: 100, pattern: null }, vessel: { maxLength: 50 }, PartyContactDetail: { maxLength: 35 }, PartyContactDetailHBL: { maxLength: 35 }, PartyContactDetailWithPattern: { maxLength: 35 } },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n NANumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n NationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code', deprecated: true, required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n nationalCommodityCode: {\n PARENTS : { ConsignmentItemHBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NationalCommodityCode' },\n },\n nationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { type: 'array', deprecated: true, items: {$ref: '#/components/schemas/NationalCommodityCode'} },\n },\n netExplosiveContent: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetExplosiveContent' },\n },\n NetExplosiveContent: {\n DEFAULT : { type: 'object', title: 'Net Explosive Content', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetWeight' },\n },\n NetWeight: {\n DEFAULT : { type: 'object', title: 'Net Weight', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netVolume: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetVolume' },\n },\n NetVolume: {\n DEFAULT : { type: 'object', title: 'Net Volume', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n newTransportDocumentReferences: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportDocumentRelation' } },\n },\n nox: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n notifyParties: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { items: { $ref: '#/components/schemas/NotifyPartyShipper' } } },\n DEFAULT : { type: 'array', maxItems: 3, items: { $ref: '#/components/schemas/NotifyParty' } },\n },\n notifyParty: {\n PARENTS : { DocumentPartiesHouseBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NotifyPartyHBL' },\n },\n NotifyParty: {\n DEFAULT : { type: 'object', title: 'Notify Party', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n NotifyPartyShipper: {\n DEFAULT : { basedOn: 'NotifyParty', title: 'Notify Party (Shipper provided)' },\n },\n NotifyPartyHBL: {\n DEFAULT : { type: 'object', title: 'Notify Party (House B/L)', required: ['partyName','partyContactDetails', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n number: {\n PARENTS : { Seal: {} },\n DEFAULT : { type: 'string', maxLength: 15 },\n },\n numberOfCopiesWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfCopiesWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfPackages: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {}, OuterPackagingHBL: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1, maximum: 99999999 },\n },\n numberOfRiderPages: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n o2Setpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n oldTransportDocumentReferences: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportDocumentRelation' } },\n },\n omit: {\n DEFAULT : { type: 'boolean' },\n },\n OmitPortCall: {\n DEFAULT : { type: 'object', title: 'Omit Port Call', CHILDREN: ['reason','isFYI'] },\n },\n OmitTerminalCall: {\n DEFAULT : { type: 'object', title: 'Omit Terminal Call', CHILDREN: ['reason','isFYI'] },\n },\n omitted: {\n PARENTS : { PortCall: {}, TerminalCall: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n onBehalfOfConsignee : {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/OnBehalfOfConsigneeShipper' } },\n DEFAULT : { $ref: '#/components/schemas/OnBehalfOfConsignee' },\n },\n OnBehalfOfConsignee: {\n DEFAULT : { type: 'object', title: 'On Behalf of Consignee', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes'] },\n },\n OnBehalfOfConsigneeShipper :{\n DEFAULT : { basedOn: 'OnBehalfOfConsignee', title: 'On Behalf of Consignee (Shipper provided)' },\n },\n onBehalfOfShipper : {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/OnBehalfOfShipperShipper' } },\n DEFAULT : { $ref: '#/components/schemas/OnBehalfOfShipper' },\n },\n OnBehalfOfShipper: {\n DEFAULT : { type: 'object', title: 'On Behalf of Shipper', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes'] },\n },\n OnBehalfOfShipperShipper :{\n DEFAULT : { basedOn: 'OnBehalfOfShipper', title: 'On Behalf of Shipper (Shipper provided)' },\n },\n onCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n overHeight: {\n DEFAULT : { type: 'object', title: 'Over Height', allOf: true },\n },\n overLengthFront: {\n DEFAULT : { type: 'object', title: 'Over Length Front', allOf: true },\n },\n overLengthRear: {\n DEFAULT : { type: 'object', title: 'Over Length Rear', allOf: true },\n },\n overWidthLeft: {\n DEFAULT : { type: 'object', title: 'Over Width Left', allOf: true },\n },\n overWidthRight: {\n DEFAULT : { type: 'object', title: 'Over Width Right', allOf: true },\n },\n isOnDeckOnly: {\n DEFAULT : { type: 'boolean' },\n },\n onwardInlandRouting: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/OnwardInlandRouting' },\n },\n OnwardInlandRouting: {\n DEFAULT : { type: 'object', title: 'Onward Inland Routing', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode'] },\n },\n outOfGaugeQuoteReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 70 },\n },\n oogUnits: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n servcieEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'] },\n },\n operatorCarrierCode: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n operatorCarrierCodeListProvider: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n originChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/OriginChargesPaymentTerm' },\n },\n OriginChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Origin Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n OuterPackaging: {\n 'BKG_v2.0.x' : { DEFAULT: { required: null, CHILDREN: ['packageCode','imoPackagingCode','numberOfPackages','description','dangerousGoods'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: null, CHILDREN: ['packageCode','imoPackagingCode','numberOfPackages','description','dangerousGoods'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: null, CHILDREN: ['packageCode','imoPackagingCode','numberOfPackages','description','dangerousGoods'] } },\n DEFAULT : { type: 'object', title: 'Outer Packaging', required: ['numberOfPackages', 'description'], CHILDREN: ['packageCode','imoPackagingCode','numberOfPackages','description','woodDeclaration','dangerousGoods'] },\n },\n outerPackaging: {\n PARENTS : { CargoItemHBL: { $ref: '#/components/schemas/OuterPackagingHBL' }, CommodityShipper: {$ref: '#/components/schemas/OuterPackaging'}, Commodity: {$ref: '#/components/schemas/OuterPackaging'}, CargoItemCarrier: {$ref: '#/components/schemas/OuterPackaging'}, CargoItemShipper: {$ref: '#/components/schemas/OuterPackagingShipper'}, CargoItem: {$ref: '#/components/schemas/OuterPackaging'} },\n },\n OuterPackagingHBL: {\n DEFAULT : { type: 'object', title: 'Outer Packaging (House B/L)', required: ['packageCode'], CHILDREN: ['packageCode','numberOfPackages', 'shippingMarks', 'UNNumber'] },\n },\n OuterPackagingShipper: {\n DEFAULT : { type: 'object', title: 'Outer Packaging (Shipper)', required: ['numberOfPackages', 'description'], CHILDREN: ['packageCode','numberOfPackages','description','woodDeclaration'] },\n },\n OutOfGaugeDetails: {\n DEFAULT : { type: 'object', title: 'Out of Gauge Details', CHILDREN: ['totalCargoDimensions','outOfGaugeExtensions','centerOfGravity','lashingRequirements','handlingInstructions','liftingInstructions','liftingPoints','isOnDeckOnly'] },\n },\n outOfGaugeDetails: {\n DEFAULT : { $ref: '#/components/schemas/OutOfGaugeDetails' },\n },\n OutOfGaugeExtensions: {\n DEFAULT : { type: 'object', title: 'Out of Gauge Extensions', CHILDREN: ['overLengthFront','overLengthRear','overWidthLeft','overWidthRight','overHeight'] },\n },\n outOfGaugeExtensions: {\n DEFAULT : { $ref: '#/components/schemas/OutOfGaugeExtensions' },\n },\n other: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { items: {$ref: '#/components/schemas/OtherDocumentPartyShippingInstructions'} }, DocumentPartiesHouseBL: {items: { $ref: '#/components/schemas/OtherDocumentPartyHBL'} } },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/OtherDocumentParty'} },\n },\n otherChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n OtherDocumentParty: {\n DEFAULT : { type: 'object', title: 'Other Document Party', required: ['party', 'partyFunction'], CHILDREN: ['party','partyFunction'] },\n },\n OtherDocumentPartyHBL: {\n DEFAULT : { type: 'object', title: 'Other Document Party (House B/L)', required: ['party', 'partyFunction'], CHILDREN: ['party','partyFunction'] },\n },\n OtherDocumentPartyShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Other Document Party (Shipping Instructions)', required: ['party', 'partyFunction'], CHILDREN: ['party','partyFunction'] },\n },\n OtherTransport: {\n DEFAULT : { type: 'object', title: 'Other Transport', additionalProperties: 'false', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport'] },\n },\n packageCode: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {}, OuterPackagingHBL: {} },\n DEFAULT : { type: 'string', minLength: 2, maxLength: 2, pattern: '^[A-Z0-9]{2}$' },\n },\n packingGroup: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1, maximum: 3 },\n },\n party: {\n PARENTS : { OtherDocumentParty: {}, OtherDocumentPartyShippingInstructions: { $ref: '#/components/schemas/PartyShipper' }, OtherDocumentPartyHBL: { $ref: '#/components/schemas/PartyHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Party' },\n },\n Party: {\n DEFAULT : { type: 'object', title: 'Party', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n PartyShipper: {\n DEFAULT : { basedOn: 'Party', title: 'Party (Shipper provided)' },\n },\n PartyAddress: {\n DEFAULT : { type: 'object', title: 'Party Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street','streetNumber','floor','postCode','POBox', 'city','UNLocationCode','stateRegion','countryCode'] },\n },\n PartyHBL: {\n DEFAULT : { type: 'object', title: 'Party (House B/L)', required: ['partyName'], CHILDREN: ['partyName','address','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n partyCode: {\n PARENTS : { IdentifyingCode: {}, identifyingCode: {} },\n DEFAULT : { type: 'string', maxLength: 150 },\n },\n partyContactDetails: {\n 'BKG_v2.0.x' : { DEFAULT: {items: {$ref: '#/components/schemas/PartyContactDetail'} },PARENTS: { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingAgent: {minItems: 1}, Shipper: {minItems: 1}, Consignee: {minItems: 1}, ServiceContractOwner: {minItems: 1}, CarrierBookingOffice: {minItems: 1}, Party: {minItems: 1} } },\n PARENTS : { Buyer: {items: {$ref: '#/components/schemas/PartyContactDetailWithPattern'}}, BuyerHBL: {items: {$ref: '#/components/schemas/PartyContactDetailHBL'}}, Seller: {items: {$ref: '#/components/schemas/PartyContactDetailWithPattern'}}, SellerHBL: {items: {$ref: '#/components/schemas/PartyContactDetailHBL'}}, CreateShippingInstructions: {minItems: 1}, UpdateShippingInstructions: {minItems: 1}, ShippingInstructions: {minItems: 1}, shippingInstructions: {minItems: 1}, updatedShippingInstructions: {minItems: 1}, Shipper: {}, ShipperShipper: {}, ShipperHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {}, NotifyPartyShipper: {}, NotifyPartyHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Party: {}, PartyShipper: {}, PartyHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL' } }, CarriersAgentAtDestination: {}, IssuingParty: {}, ShippingInstructionsRequestor: {}, TransportDocument: {minItems: 1}, transportDocument: { minItems: 1 } },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/PartyContactDetail'} },\n },\n PartyContactDetail: {\n DEFAULT : { type: 'object', title: 'Party Contact Detail', required: ['name'], CHILDREN: ['name'] },\n },\n PartyContactDetailHBL: {\n DEFAULT : { type: 'object', title: 'Party Contact Detail (House B/L)', required: ['name'], CHILDREN: ['name'] },\n },\n PartyContactDetailWithPattern: {\n DEFAULT : { type: 'object', title: 'Party Contact Detail (with phone pattern)', required: ['name'], CHILDREN: ['name'] },\n },\n partyFunction: {\n 'BKG_v2.0.0' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI'] } } },\n 'BKG_v2.0.x' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC','CSR'] } } },\n// 'BKG_v2.0.2' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC'] } } },\n PARENTS : { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','SCO'] }, OtherDocumentPartyShippingInstructions: { pseudoEnum: ['DDR','DDS','COW','COX','SCO','CS','MF','WH'] }, OtherDocumentPartyHBL: { pseudoEnum: ['DDR','DDS','CS','MF','WH']} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n partyName: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperShipper: {}, OnBehalfOfShipper: {}, OnBehalfOfShipperShipper: {}, ShipperHBL: {}, Consignee: {}, OnBehalfOfConsignee: {}, OnBehalfOfConsigneeShipper: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, CarrierBookingOffice: {}, Party: {}, PartyShipper: {}, PartyHBL: {}, CarriersAgentAtDestination: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, NotifyPartyShipper: {}, NotifyPartyHBL: {}, Seller: {}, SellerHBL: {}, Buyer: {}, BuyerHBL: {}, ReceiverValidationResponse: {}, ShippingInstructionsRequestor: {}, RepresentedActorParty: {}, RepresentedRecipientParty: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n paymentTermCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n phone: {\n PARENTS : { PartyContactDetail: {}, PartyContactDetailHBL: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, PartyContactDetailWithPattern: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 30, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n placeOfAcceptance: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfAcceptance' },\n },\n PlaceOfAcceptance: {\n DEFAULT : { type: 'object', title: 'Place of Acceptance', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n PlaceOfArrival: {\n DEFAULT : { type: 'object', title: 'Place of Arrival', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['transportCallReference','facilityTypeCode','location','dateTime'] },\n },\n placeOfBLIssue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfBLIssue' },\n },\n PlaceOfBLIssue: {\n DEFAULT : { type: 'object', title: 'Place of B/L Issue', oneOf: {UNLocationCode: {}, countryCode: {} }, CHILDREN: ['locationName'] },\n },\n PlaceOfDeparture: {\n DEFAULT : { type: 'object', title: 'Place of Departure', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['transportCallReference','facilityTypeCode','location','dateTime'] },\n },\n placeOfFinalDelivery: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfFinalDelivery' },\n },\n PlaceOfFinalDelivery: {\n DEFAULT : { type: 'object', title: 'Place of Final Delivery', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n placeOfIssue: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfIssue' },\n },\n PlaceOfIssue: {\n DEFAULT : { type: 'object', title: 'Place of Issue', oneOf: true, CHILDREN: ['locationName'] },\n },\n placeOfDelivery: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDelivery' },\n },\n PlaceOfDelivery: {\n 'CS_v1.0.x' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n// 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Delivery', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode','geoCoordinate'] },\n },\n placeOfReceipt: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfReceipt' },\n },\n PlaceOfReceipt: {\n 'CS_v1.0.x' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n// 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Receipt', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode','geoCoordinate'] },\n },\n plannedArrivalDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n plannedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n plannedDepartureDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n pm10: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n POBox: {\n DEFAULT : { type: 'string', maxLength: 20 },\n },\n PointToPoint: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','transitTime','legs'] } },\n DEFAULT : { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','routingReference','transitTime','solutionFootprint','legs'] },\n },\n portCall: {\n DEFAULT : { $ref: '#/components/schemas/PortCall' },\n },\n PortCall: {\n DEFAULT : { type: 'object', title: 'Port Call', required: ['portCallID', 'UNLocationCode','vessel'], CHILDREN: ['portCallID','portVisitReference','UNLocationCode','vessel','omitted','isFYI'] },\n },\n PortCalls: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCall' } },\n },\n portCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallPhaseTypeCode: {\n DEFAULT : { type: 'string', enum: ['INBD', 'ALGS', 'SHIF', 'OUTB'], pseudoEnum: []}, // No validation added for description\n },\n PortCallServices: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCallService' } },\n },\n PortCallService: {\n DEFAULT : { type: 'object', title: 'Port Call Service', required: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallServiceLocation'], CHILDREN: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallPhaseTypeCode','facilityTypeCode','portCallServiceLocation','moves','cancelled','declined','isFYI'] },\n },\n portCallServiceEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'], pseudoEnum: []}, // No validation added for description\n },\n portCallServiceID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallServiceLocation: {\n PARENTS : { PortCallService: { $ref: '#/components/schemas/PortCallServiceLocation' }, Timestamp: { $ref: '#/components/schemas/PortCallServiceLocationTimestamp' } },\n },\n PortCallServiceLocation: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n PortCallServiceLocationTimestamp: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location (Timestamp)', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n portCallServiceTypeCode: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: []}, // No validation added for description\n },\n portChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n portOfDischarge: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfDischarge' },\n },\n PortOfDischarge: {\n DEFAULT : { type: 'object', title: 'Port of Discharge', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n portOfLoading: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfLoading' },\n },\n PortOfLoading: {\n DEFAULT : { type: 'object', title: 'Port of Loading', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n PortSchedule: {\n DEFAULT : { type: 'object', title: 'Port Schedule', required: ['location'], CHILDREN: ['location', 'vesselSchedules'] },\n },\n PortScheduleLocation: {\n DEFAULT : { type: 'object', title: 'Port Schedule Location', CHILDREN: ['locationName','facilityName','UNLocationCode','facilitySMDGCode'] },\n },\n portVisitReference: {\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, PortCall: {}, },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n positionCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', pseudoEnum: ['PBPL', 'BRTH', 'ANCH', 'PORT'] },\n },\n postCode: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 50 } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n preCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n previousEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n property: {\n PARENTS : { ErrorResponse: {}, Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n propertyPath: {\n PARENTS : { FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 1000 },\n },\n provider: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n properShippingName: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 250 },\n },\n providerCorrelationReference: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n publisherRole: {\n DEFAULT : { type: 'string', enum: ['CA', 'AG', 'VSL', 'ATH', 'PLT', 'TWG', 'MOR', 'TR', 'LSH', 'BUK', 'SLU', 'SVP'] },\n },\n purchaseOrderReferences: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n quantity: {\n PARENTS : { InnerPackaging: { type: 'integer', format: 'int32' }, Charge: { type: 'number', format: 'float', minimum: '0' } },\n },\n reason: {\n 'JIT_v2.0.0' : { DEFAULT: { maxLength: 500 } },\n PARENTS : { CancelBookingRequest: {}, EnvelopeTransferFinishedResponse: {maxLength: 255}, IssuanceError: {maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$'}, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, Booking: {}, booking: {}, amendedBooking: {}, data: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, IssuanceResponse: {maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n reasonCode: {\n DEFAULT : { type: 'string', maxLength: 4, pseudoEnum: ['SWTP', 'COD', 'SWI'] },\n },\n reeferPluggedContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/ReeferPluggedContainerUnits' }\n },\n ReeferPluggedContainerUnits: {\n DEFAULT : { type: 'object', title: 'Reefer Plugged Container Units', oneOf:true },\n },\n remark: {\n DEFAULT : { type: 'string', maxLength: 500 },\n },\n receiptTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n receivedAdditionalDocumentChecksums: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n receivedForShipmentDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n ReceiverValidationResponse: {\n DEFAULT : { type: 'object', title: 'Receiver Validation Response', required: ['partyName'], CHILDREN: ['partyName'] },\n },\n recipient: {\n PARENTS : { EndorsementChainLink: {}, Transaction: {} },\n DEFAULT : { $ref: '#/components/schemas/RecipientParty' },\n },\n reference: {\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n Reference: {\n DEFAULT : { type: 'object', title: 'Reference', required: ['type', 'value'], CHILDREN: ['type','value'] },\n },\n ReferenceConsignmentItem: {\n DEFAULT : { type: 'object', title: 'Reference (Consignment Item)', required: ['type', 'values'], CHILDREN: ['type','values'] },\n },\n referenceNumber: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n referencePoint: {\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['BOTTOM_FRONT_LEFT','BOTTOM_FRONT_CENTER','BOTTOM_FRONT_RIGHT','BOTTOM_CENTER_LEFT','BOTTOM_CENTER_CENTER','BOTTOM_CENTER_RIGHT','BOTTOM_REAR_LEFT','BOTTOM_REAR_CENTER','BOTTOM_REAR_RIGHT','MIDDLE_FRONT_LEFT','MIDDLE_FRONT_CENTER','MIDDLE_FRONT_RIGHT','MIDDLE_CENTER_LEFT','MIDDLE_CENTER_CENTER','MIDDLE_CENTER_RIGHT','MIDDLE_REAR_LEFT','MIDDLE_REAR_CENTER','MIDDLE_REAR_RIGHT','TOP_FRONT_LEFT','TOP_FRONT_CENTER','TOP_FRONT_RIGHT','TOP_CENTER_LEFT','TOP_CENTER_CENTER','TOP_CENTER_RIGHT','TOP_REAR_LEFT','TOP_REAR_CENTER','TOP_REAR_RIGHT'] },\n },\n references: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, CreateBooking: { items: {$ref: '#/components/schemas/ReferenceShipper'} }, UpdateBooking: { items: {$ref: '#/components/schemas/ReferenceShipper'} }, Booking: {}, booking: {}, amendedBooking: {}, RequestedEquipment: {}, RequestedEquipmentShipper: { items: {$ref: '#/components/schemas/ReferenceShipper'} }, CommodityShipper: { items: {$ref: '#/components/schemas/ReferenceShipper'} }, Commodity: {}, ConsignmentItem: { items: {$ref: '#/components/schemas/ReferenceConsignmentItem'} }, ConsignmentItemShipper: { items: {$ref: '#/components/schemas/ReferenceConsignmentItem'} }, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipmentShipper: {}, TransportDocument: {}, transportDocument: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Reference'} },\n },\n ReferenceShipper: {\n DEFAULT : { type: 'object', title: 'Reference (Shipper)', required: ['type', 'value'], CHILDREN: ['type','value'] },\n },\n replyToTimestampID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n representedParty: {\n PARENTS : { RecipientParty: {$ref: '#/components/schemas/RepresentedRecipientParty'}, ActorParty: {$ref: '#/components/schemas/RepresentedActorParty'} },\n },\n RepresentedActorParty: {\n DEFAULT : { type: 'object', title: 'Represented Party', required: ['partyName'],CHILDREN: ['partyName','identifyingCodes'] },\n },\n RepresentedRecipientParty: {\n DEFAULT : { type: 'object', title: 'Represented Party', required: ['partyName'],CHILDREN: ['partyName','identifyingCodes'] },\n },\n RequestedCarrierCertificate: {\n DEFAULT : { type: 'string', maxLength: 100, title: 'Requested Carrier Certificate' },\n },\n RequestedCarrierClause: {\n DEFAULT : { type: 'string', maxLength: 100, title: 'Requested Carrier Clause' },\n },\n requestedCarrierCertificates: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 100, pseudoEnum: ['SHIPMENT_VOYAGE_PARTICULARS_1','SHIPMENT_VOYAGE_PARTICULARS_2','SHIPMENT_VOYAGE_PARTICULARS_3','SHIPMENT_VOYAGE_PARTICULARS_4','SHIPMENT_VOYAGE_PARTICULARS_5','SHIPMENT_VOYAGE_PARTICULARS_6','SHIPMENT_VOYAGE_PARTICULARS_7','VESSEL_PARTICULARS_1','VESSEL_PARTICULARS_2','VESSEL_PARTICULARS_3','VESSEL_PARTICULARS_4','VESSEL_PARTICULARS_5','VESSEL_PARTICULARS_6','VESSEL_PARTICULARS_7','VESSEL_PARTICULARS_8','VESSEL_PARTICULARS_9','VESSEL_PARTICULARS_10','VESSEL_PARTICULARS_11','VESSEL_PARTICULARS_12','VESSEL_PARTICULARS_13','VESSEL_PARTICULARS_14','VESSEL_PARTICULARS_15','VESSEL_PARTICULARS_16','VESSEL_PARTICULARS_17','VESSEL_PARTICULARS_18'] } },\n },\n requestedCarrierClauses: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 100, pseudoEnum: ['CARGO_CARGOSPECIFICS','VESSELCONVEYANCE_COUNTRYSPECIFIC','CARGO_RETURNOFEMPTYCONTAINER','CARGO_CARGOVALUE','CARGO_REEFERTEMPERATURE','CARGO_CONFLICTINGTEMPERATURES_MIXEDLOADS','SHIPPERSLOADSTOWWEIGHTANDCOUNT','INTRANSITCLAUSE'] } },\n },\n requestedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n RequestedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n DEFAULT : { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup','fullContainerPickupDateTime','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities','outOfGaugeDetails'] },\n },\n RequestedEquipmentShipper: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n DEFAULT : { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup','fullContainerPickupDateTime','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences','commodities','outOfGaugeDetails'] },\n },\n requestedEquipments: {\n PARENTS : { CreateBooking: {items: {$ref: '#/components/schemas/RequestedEquipmentShipper'}}, UpdateBooking: {items: {$ref: '#/components/schemas/RequestedEquipmentShipper'}}, Booking: {items: {$ref: '#/components/schemas/RequestedEquipment'}}, booking: {items: {$ref: '#/components/schemas/RequestedEquipment'}}, amendedBooking: {items: {$ref: '#/components/schemas/RequestedEquipment'}} },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n requestedNumberOfTransportDocuments: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n requestedOnCarriageModeOfTransport: {\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] },\n },\n requestedPreCarriageModeOfTransport: {\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] },\n },\n requestUri: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string' },\n },\n RequiredEquipment: {\n DEFAULT : { type: 'object', title: 'Equipment (Required Properties)', required: ['equipmentReference', 'ISOEquipmentCode', 'tareWeight'], CHILDREN: ['equipmentReference','ISOEquipmentCode','tareWeight'] },\n },\n responseCode: {\n DEFAULT : { type: 'string', enum: ['RECE','DUPE','BSIG','BENV','INCD','MDOC','DISE'] },\n },\n restows: {\n DEFAULT : { $ref: '#/components/schemas/Restows' },\n },\n Restows: {\n DEFAULT : { type: 'object', title: 'Restows', oneOf:true },\n },\n role: {\n PARENTS : { VesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['FIRST_SEA_GOING', 'MOTHER'] },\n },\n routingOfConsignmentCountries: {\n DEFAULT : { type: 'array', minItems: 1, items: { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' } },\n },\n routingReference: {\n DEFAULT : { type: 'string', maxLength: 5000, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n SADT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n SAPT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n Schedule: {\n DEFAULT : { type: 'object', title: 'Schedule', required: ['servicePartners', 'isDummyVessel', 'timestamps'] },\n },\n Seal: {\n DEFAULT : { type: 'object', title: 'Seal', required: ['number'], CHILDREN: ['number','source'] },\n },\n seals: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, UtilizedTransportEquipmentShipper: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Seal'} },\n },\n segregationGroups: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: {type: 'string', maxLength: 2, pseudoEnum: ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18'] } },\n },\n selfFilerCode: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n seller: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesHouseBL: { $ref: '#/components/schemas/SellerHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Seller' },\n },\n Seller: {\n DEFAULT : { type: 'object', title: 'Seller', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n SellerHBL: {\n DEFAULT : { type: 'object', title: 'Seller (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n sendToPlatform: {\n PARENTS : { IssueToParty: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$' },\n },\n sequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n serviceContractOwner: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { documentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/ServiceContractOwner' },\n },\n ServiceContractOwner: {\n DEFAULT : { type: 'object', title: 'Service Contract Owner', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference'] },\n },\n serviceContractReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 30 },\n },\n ServicePartner: {\n 'OVS_HUB_REF_v1.0.0' : { DEFAULT: { type: 'object', title: 'Service Partner', required: [ 'carrierSMDGCode','carrierServiceCode' ], CHILDREN: ['carrierSMDGCode', 'carrierServiceName','carrierServiceCode'] } },\n DEFAULT : { type: 'object', title: 'Service Partner', CHILDREN: ['carrierCode','carrierCodeListProvider', 'carrierServiceName','carrierServiceCode','carrierImportVoyageNumber','carrierExportVoyageNumber'] },\n },\n ServicePartnerSchedule: {\n DEFAULT : { type: 'object', title: 'Service Partner Schedule', required: ['carrierServiceName','carrierServiceCode','carrierImportVoyageNumber','carrierExportVoyageNumber'], CHILDREN: ['carrierCode','carrierCodeListProvider','carrierServiceName','carrierServiceCode','carrierImportVoyageNumber','carrierExportVoyageNumber'] },\n },\n servicePartners: {\n PARENTS : { PartnerService: {items: {$ref: '#/components/schemas/ServicePartner' } }, Schedule: {}, VesselTransport: {minItems: null, items: {$ref: '#/components/schemas/ServicePartner' } }, BargeTransport: {minItems: null, items: {$ref: '#/components/schemas/ServicePartner' } } },\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/ServicePartnerSchedule' } },\n },\n ServiceSchedule: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'Service Schedule', required: ['carrierServiceCode','carrierServiceName'], CHILDREN: ['carrierServiceName','carrierServiceCode','universalServiceReference','vesselSchedules'] } },\n DEFAULT : { type: 'object', title: 'Service Schedule', required: ['carrierServiceName', 'carrierServiceCode', 'vesselSchedules'], CHILDREN: ['carrierServiceName','carrierServiceCode','universalServiceReference','vesselSchedules'] },\n },\n severity: {\n PARENTS : { Feedback: {}, FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFO','WARN','ERROR'] },\n },\n shipmentCutOffTimes: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ShipmentCutOffTime'} },\n },\n ShipmentCutOffTime: {\n DEFAULT : { type: 'object', title: 'Shipment Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n ShipmentLocation: {\n DEFAULT : { type: 'object', title: 'Shipment Location', required: ['location', 'locationTypeCode'], CHILDREN: ['location','locationTypeCode', 'departingVesselVoyage'] },\n },\n shipmentLocations: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/ShipmentLocation'} },\n },\n shippedOnBoardDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n shipper: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/ShipperShipper' }, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ShipperHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Shipper' },\n },\n Shipper: {\n 'BKG_v2.0.x' : { DEFAULT: { CHILDREN: ['partyName','eblPlatform','address','addressLines','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference', 'purchaseOrderReferences'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference', 'purchaseOrderReferences'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference', 'purchaseOrderReferences'] } },\n DEFAULT : { type: 'object', title: 'Shipper', required: ['partyName'], CHILDREN: ['partyName','eblPlatform','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference', 'purchaseOrderReferences'] },\n },\n ShipperShipper: {\n DEFAULT : { basedOn: 'Shipper', title: 'Shipper (Shipper provided)' },\n },\n ShipperHBL: {\n DEFAULT : { type: 'object', title: 'Shipper (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n ShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions', required: ['shippingInstructionsStatus', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n shippingInstructions: {\n PARENTS : { ShippingInstructionsData: {} },\n DEFAULT : { $ref: '#/components/schemas/ShippingInstructionsFullNotification' },\n },\n ShippingInstructionsData: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Data', required: ['shippingInstructionsStatus'], CHILDREN: ['shippingInstructionsStatus', 'updatedShippingInstructionsStatus', 'shippingInstructionsReference', 'transportDocumentReference','transportDocumentSubReference', 'feedbacks', 'shippingInstructions', 'updatedShippingInstructions'] }\n },\n ShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Full Notification', allOf: true },\n },\n ShippingInstructionsNotification: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data']},\n },\n shippingInstructionsReference: {\n PARENTS : { CreateShippingInstructionsResponse: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, TransportDocument: {}, transportDocument: {}, ShippingInstructionsData: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n ShippingInstructionsRefCancelStatus: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Cancel Response', required: ['shippingInstructionsStatus'] },\n },\n ShippingInstructionsRefStatus: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Response', required: ['shippingInstructionsStatus'] },\n },\n shippingInstructionsRequestor: {\n PARENTS : { DocumentPartiesShippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/ShippingInstructionsRequestor' },\n },\n ShippingInstructionsRequestor: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Requestor', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes','partyContactDetails'] },\n },\n shippingInstructionsRevisionNumber: {\n DEFAULT : { type: 'integer' },\n },\n shippingInstructionsStatus: {\n PARENTS : { CancelShippingInstructionsUpdate: { pseudoEnum: [] }, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['RECEIVED','PENDING_UPDATE','COMPLETED', 'CANCELLED', 'DECLINED'] },\n },\n shippingMarks: {\n PARENTS : { OuterPackagingHBL: {type: 'string', maxItems: null, maxLength: 512, items: null}, ConsignmentItem: {}, ConsignmentItemShipper: {}, UtilizedTransportEquipment: {}, UtilizedTransportEquipmentShipper: {} },\n DEFAULT : { type: 'array', maxItems: 50, items: {type: 'string', maxLength: 35 } },\n },\n shippingMarksForCustoms: {\n PARENTS : { ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', maxItems: 50, items: {type: 'string', maxLength: 35 } },\n },\n signatureHash: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n size: {\n PARENTS : { DocumentMetadata: {} },\n DEFAULT : { type: 'number', minimum: 1 }\n },\n sox: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n solutionFootprint: {\n DEFAULT : { type: 'object', CHILDREN: ['co2','co2e','sox','nox','pm10'] }\n },\n solutionNumber: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 }\n },\n source: {\n // Removing DCSA_CLOUDEVENT_GROUP in the default in order to handle 'source' inside a 'Seal'\n PARENTS : { ShippingInstructionsNotification: {maxLength: 4096}, TransportDocumentNotification: {maxLength: 4096}, BookingNotification: {maxLength: 4096}, ArrivalNoticeNotification: {maxLength: 4096}, Seal: {enum: ['CAR', 'SHI', 'VET', 'CUS'] } },\n DEFAULT : { type: 'string' },\n },\n SpecificUnits: {\n DEFAULT : { type: 'object', title: 'Specific Units (for load and discharge)', CHILDREN: ['loadUnits', 'dischargeUnits'] },\n },\n specialCertificateNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n specversion: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['1.0'], pseudoEnum: [] },\n },\n stateRegion: {\n PARENTS : { Address:{}, address: {}, AddressHBL: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 65 },\n },\n statusCode: {\n 'OVS_v3.0.2' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'], deprecated: true } }, },\n 'OVS_v3.0.1' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'], deprecated: true } }, },\n 'OVS_v3.0.0' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'] } }, },\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n statusCodes: {\n DEFAULT : { type: 'array', items: { type: 'string', pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR','DRYD','BUNK','OOSV'] } },\n },\n statusCodeMessage: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 200 },\n },\n statusCodeText: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n street: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 100 } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 70 },\n },\n streetNumber: {\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n subFacility: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subscriptionReference: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subsidiaryRisk1: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n subsidiaryRisk2: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n identificationNumber: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 17 },\n },\n SupportingDocument: {\n DEFAULT : { type: 'object', title: 'Supporting Document', required: ['name', 'content'] },\n },\n supportingDocuments: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/DocumentMetadata'} },\n },\n SurrenderRequestAnswer: {\n DEFAULT : { type: 'object', title: 'Surrender Request Answer', required: ['surrenderRequestReference', 'action'] },\n },\n surrenderRequestCode: {\n DEFAULT : { type: 'string', enum: ['SREQ', 'AREQ'] },\n },\n SurrenderRequestDetails: {\n DEFAULT : { type: 'object', title: 'Surrender Request Details', required: ['surrenderRequestReference','transportDocumentReference','surrenderRequestCode'] },\n },\n // SurrenderRequestedBy should be deleted\n SurrenderRequestedBy: {\n DEFAULT : { type: 'object', title: 'Surrender Requested By', required: ['partyName', 'eblPlatform'] },\n },\n surrenderRequestReference: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n tareWeight: {\n PARENTS : { Equipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, RequiredEquipment: {} },\n DEFAULT : { $ref: '#/components/schemas/TareWeight' },\n },\n TareWeight: {\n DEFAULT : { type: 'object', title: 'Tare Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n tareWeightUnit: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n TaxLegalReference: {\n DEFAULT : { type: 'object', title: 'Tax & Legal Reference', required: ['type', 'countryCode', 'value'], CHILDREN: ['type','countryCode','value'] },\n },\n taxLegalReferences: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperShipper: {}, ShipperHBL: {}, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, Party: {}, PartyShipper: {}, PartyHBL: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, NotifyPartyShipper: {}, NotifyPartyHBL: {}, Seller: {}, SellerHBL: {}, Buyer: {}, BuyerHBL: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/TaxLegalReference'} },\n },\n technicalName: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 250 },\n },\n temperatureSetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n temperatureUnit: {\n PARENTS : { ActiveReeferSettings: {}, Limits: {} },\n DEFAULT : { type: 'string', enum: ['CEL', 'FAH'] },\n },\n terminalCall: {\n DEFAULT : { $ref: '#/components/schemas/TerminalCall' },\n },\n TerminalCall: {\n DEFAULT : { type: 'object', title: 'Terminal Call', required: ['terminalCallID','portCallID','carrierServiceName','carrierServiceCode'], CHILDREN: ['terminalCallID','portCallID', 'terminalCallReference', 'terminalCallSequenceNumber','carrierServiceName','carrierServiceCode','universalServiceReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','omitted','isFYI'] },\n },\n TerminalCalls: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TerminalCall' } },\n },\n terminalCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n terminalCallReference: {\n PARENTS : { TerminalCall: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n terminalCallSequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n TerminalTimestamp: {\n DEFAULT : { type: 'object', title: 'Terminal Timestamp', required: ['vesselOperatorSMDGLinerCode','timestampClassifierCode','timestampTypeCode','timestampPositionCode','timestampDateTime'] },\n },\n termsAndConditions: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 50000 },\n },\n time: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', format: 'date-time'},\n },\n Timestamp: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { required: ['typeCode', 'classifierCode', 'positionCode', 'dateTime'], CHILDREN: ['typeCode', 'classifierCode', 'positionCode', 'dateTime'] } },\n 'OVS_v3.0.x' : { DEFAULT: { required: ['eventClassifierCode', 'eventDateTime','eventTypeCode'], CHILDREN: ['eventTypeCode','eventClassifierCode','eventDateTime','delayReasonCode','delayReasonCodes','changeRemark', 'facilityTypeCode']} },\n 'JIT_v2.0.0' : { DEFAULT: { required: ['timestampID','portCallServiceID','classifierCode','dateTime'], CHILDREN: ['timestampID','replyToTimestampID','portCallServiceID','classifierCode','dateTime','portCallServiceLocation','delayReasonCode','remark','isFYI'] } },\n DEFAULT : { type: 'object', title: 'Timestamp', required: ['eventTypeCode', 'eventClassifierCode', 'eventDateTime'], CHILDREN: ['eventTypeCode','eventClassifierCode','eventDateTime'] },\n },\n timestampClassifierCode: {\n PARENTS : { TerminalTimestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT','EST'] },\n },\n timestampDateTime: {\n PARENTS : { TerminalTimestamp: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n timestampPositionCode: {\n PARENTS : { TerminalTimestamp: {} },\n DEFAULT : { type: 'string', pseudoEnum: ['PBPL', 'BRTH', 'ANCH', 'PORT'] },\n },\n timestampID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n timestampPositionCode: {\n PARENTS : { TerminalTimestamp: {} },\n DEFAULT : { type: 'string', pseudoEnum: ['PBPL', 'BRTH', 'ANCH', 'PORT'] },\n },\n timestamps: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'array', minItems: null, items: {$ref: '#/components/schemas/Timestamp'} } },\n PARENTS : { TransportCall: {}, TerminalCall: {}, Schedule: {}, PortCallService: { minItems: null } },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Timestamp'} },\n },\n Timestamps: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/Timestamp' } },\n },\n timestampTypeCode: {\n DEFAULT : { basedOn: 'eventTypeCode' },\n },\n totalCargoDimensions: {\n DEFAULT : { $ref: '#/components/schemas/TotalCargoDimensions' },\n },\n TotalCargoDimensions: {\n DEFAULT : { type: 'object', title: 'Total Cargo Dimensions', CHILDREN: ['length','width','height'] },\n },\n totalUnits: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n TotalEmptyUnits: {\n DEFAULT : { type: 'object', title: 'Total Empty Units', additionalProperties: 'false', required: ['totalUnits'], CHILDREN: ['totalUnits'] },\n },\n TotalLadenUnits: {\n DEFAULT : { type: 'object', title: 'Total Laden Units (Dry)', additionalProperties: 'false', required: ['totalUnits'], CHILDREN: ['totalUnits'] },\n },\n TotalReeferPluggedUnits: {\n DEFAULT : { type: 'object', title: 'Total Reefer Plugged Units', additionalProperties: 'false', required: ['totalUnits'], CHILDREN: ['totalUnits'] },\n },\n TotalUnits: {\n DEFAULT : { type: 'object', title: 'Total Units (Dry + Reefer + OOG)', additionalProperties: 'false', required: ['totalUnits'], CHILDREN: ['totalUnits'] },\n },\n totalRestows: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n TotalRestows: {\n DEFAULT : { type: 'object', title: 'Total units to restow', additionalProperties: 'false', required: ['totalRestows'], CHILDREN: ['totalRestows'] },\n },\n ActorParty: {\n DEFAULT : { type: 'object', title: 'Actor Party', required: ['partyName', 'eblPlatform', 'identifyingCodes'] },\n },\n RecipientParty: {\n DEFAULT : { type: 'object', title: 'Recipient Party', required: ['partyName', 'eblPlatform', 'identifyingCodes'] },\n },\n Transaction: {\n DEFAULT : { type: 'object', title: 'Transaction', required: ['actionCode','actor','actionDateTime'], CHILDREN: ['actionCode','actor','recipient','actionDateTime','reasonCode','comments','auditReference'] },\n },\n transactions: {\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Transaction'} },\n },\n transitTime: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transport: {\n PARENTS : { Leg: {} },\n DEFAULT : { },\n },\n Transport: {\n DEFAULT : { type: 'object', title: 'Transport', required: ['transportPlanStage', 'transportPlanStageSequenceNumber', 'loadLocation', 'dischargeLocation', 'plannedDepartureDate', 'plannedArrivalDate'], CHILDREN: ['transportPlanStage','transportPlanStageSequenceNumber','loadLocation','dischargeLocation','plannedDepartureDate','plannedArrivalDate','modeOfTransport','vesselName','vesselIMONumber','carrierServiceCode','universalServiceReference','carrierImportVoyageNumber','universalImportVoyageReference','carrierExportVoyageNumber','universalExportVoyageReference'] },\n },\n transportCall: {\n DEFAULT : { $ref: '#/components/schemas/TransportCall' },\n },\n TransportCall: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { required: ['carrierImportVoyageNumber','transportCallReference', 'timestamps'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','timestamps'] } },\n 'OVS_v3.0.2' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','statusCodes','timestamps'] } },\n 'OVS_v3.0.1' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','statusCodes','timestamps'] } },\n 'OVS_v3.0.0' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','timestamps'] } },\n 'JIT_v2.0.0' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['transportCallID'], CHILDREN: ['transportCallID', 'transportCallReference', 'transportCallSequenceNumber','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','omitted'] } },\n DEFAULT : { type: 'object', title: 'Transport Call', required: ['transportCallReference', 'carrierImportVoyageNumber', 'timestamps'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','cutOffTimes','location','timestamps'] },\n },\n transportCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n transportCallReference: {\n 'OVS_HUB_TER_v1.0.0' : { DEFAULT: { pseudoEnum: [] } },\n PARENTS : { IntermediateCall: {}, TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: { deprecated: true }, BargeTransport: { deprecated: true }, PlaceOfArrival: {}, PlaceOfDeparture: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n TransportCallLocation: {\n DEFAULT : { type: 'object', title: 'TransportCall Location', CHILDREN: ['locationName','facilityName','address','addressLines','UNLocationCode','facilitySMDGCode'] },\n },\n transportCalls: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { minItems: 1 } },\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportCall' } },\n },\n transportCallSequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transportControlTemperature: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n TransportDocument: {\n 'EBL_PINT_v3.0.0' : { DEFAULT: { $ref: '#/components/schemas/TransportDocument' } },\n 'EBL_v3.0.4' : { DEFAULT: { CHILDREN: ['transportDocumentReference','transportDocumentSubReference','shippingInstructionsReference','transportDocumentStatus','transportDocumentTypeCode','isShippedOnBoardType','freightPaymentTermCode','isElectronic','isToOrder','numberOfCopiesWithCharges','numberOfCopiesWithoutCharges','numberOfOriginalsWithCharges','numberOfOriginalsWithoutCharges','displayedNameForPlaceOfReceipt','displayedNameForPortOfLoad','displayedNameForPortOfDischarge','displayedNameForPlaceOfDelivery','shippedOnBoardDate','displayedShippedOnBoardReceivedForShipment','termsAndConditions','receiptTypeAtOrigin','deliveryTypeAtDestination','cargoMovementTypeAtOrigin','cargoMovementTypeAtDestination','issueDate','receivedForShipmentDate','serviceContractReference','contractQuotationReference','extendedContractQuotationReference','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','displayedToOrderText','consignmentItems','utilizedTransportEquipments','exportLicense','importLicense','references','customsReferences','feedbacks'] } },\n 'EBL_v3.0.3' : { DEFAULT: { CHILDREN: ['transportDocumentReference','transportDocumentSubReference','shippingInstructionsReference','transportDocumentStatus','transportDocumentTypeCode','isShippedOnBoardType','freightPaymentTermCode','isElectronic','isToOrder','numberOfCopiesWithCharges','numberOfCopiesWithoutCharges','numberOfOriginalsWithCharges','numberOfOriginalsWithoutCharges','displayedNameForPlaceOfReceipt','displayedNameForPortOfLoad','displayedNameForPortOfDischarge','displayedNameForPlaceOfDelivery','shippedOnBoardDate','displayedShippedOnBoardReceivedForShipment','termsAndConditions','receiptTypeAtOrigin','deliveryTypeAtDestination','cargoMovementTypeAtOrigin','cargoMovementTypeAtDestination','issueDate','receivedForShipmentDate','serviceContractReference','contractQuotationReference','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','consignmentItems','utilizedTransportEquipments','exportLicense','importLicense','references','customsReferences','feedbacks'] } },\n 'EBL_v3.0.2' : { DEFAULT: { CHILDREN: ['transportDocumentReference','transportDocumentSubReference','shippingInstructionsReference','transportDocumentStatus','transportDocumentTypeCode','isShippedOnBoardType','freightPaymentTermCode','isElectronic','isToOrder','numberOfCopiesWithCharges','numberOfCopiesWithoutCharges','numberOfOriginalsWithCharges','numberOfOriginalsWithoutCharges','displayedNameForPlaceOfReceipt','displayedNameForPortOfLoad','displayedNameForPortOfDischarge','displayedNameForPlaceOfDelivery','shippedOnBoardDate','displayedShippedOnBoardReceivedForShipment','termsAndConditions','receiptTypeAtOrigin','deliveryTypeAtDestination','cargoMovementTypeAtOrigin','cargoMovementTypeAtDestination','issueDate','receivedForShipmentDate','serviceContractReference','contractQuotationReference','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','consignmentItems','utilizedTransportEquipments','exportLicense','importLicense','references','customsReferences','feedbacks'] } },\n DEFAULT : { type: 'object', title: 'Transport Document', required: ['transportDocumentReference', 'transportDocumentStatus', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'invoicePayableAt', 'partyContactDetails', 'documentParties', 'consignmentItems', 'utilizedTransportEquipments', 'termsAndConditions', 'receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'carrierCode', 'carrierCodeListProvider', 'transports'], CHILDREN: ['transportDocumentReference','transportDocumentSubReference','shippingInstructionsReference','transportDocumentStatus','transportDocumentTypeCode','isShippedOnBoardType','freightPaymentTermCode','isElectronic','isToOrder','numberOfCopiesWithCharges','numberOfCopiesWithoutCharges','numberOfOriginalsWithCharges','numberOfOriginalsWithoutCharges','displayedNameForPlaceOfReceipt','displayedNameForPortOfLoad','displayedNameForPortOfDischarge','displayedNameForPlaceOfDelivery','shippedOnBoardDate','displayedShippedOnBoardReceivedForShipment','termsAndConditions','receiptTypeAtOrigin','deliveryTypeAtDestination','cargoMovementTypeAtOrigin','cargoMovementTypeAtDestination','issueDate','receivedForShipmentDate','serviceContractReference','contractQuotationReference','extendedContractQuotationReference','OOGQuoteReference','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','displayedToOrderText','consignmentItems','utilizedTransportEquipments','exportLicense','importLicense','references','customsReferences'] },\n },\n transportDocument: {\n PARENTS : { TransportDocumentData: {}, EblEnvelope: {$ref: '#/components/schemas/TransportDocument'} },\n DEFAULT : { $ref: '#/components/schemas/TransportDocumentFullNotification' }\n },\n TransportDocumentAmend: {\n DEFAULT : { type: 'object', title: 'Transport Document (Amend)', required: ['amendedTransportDocumentStatus', 'amendedTransportDocument'], CHILDREN: ['amendedTransportDocumentStatus', 'amendedTransportDocument'] },\n },\n transportDocumentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n TransportDocumentData: {\n DEFAULT : { type: 'object', title: 'Transport Document Data', required: ['transportDocumentStatus', 'transportDocumentReference'], CHILDREN: ['transportDocumentStatus', 'amendedTransportDocumentStatus', 'shippingInstructionsReference', 'transportDocumentReference','transportDocumentSubReference', 'feedbacks', 'transportDocument', 'amendedTransportDocument'] },\n },\n TransportDocumentFullNotification: {\n DEFAULT : { type: 'object', title: 'Transport Document Full Notification', allOf: true },\n },\n TransportDocumentRefStatus: {\n DEFAULT : { type: 'object', title: 'Transport Document Response', required: ['transportDocumentReference', 'transportDocumentStatus'] },\n },\n TransportDocumentRelation: {\n DEFAULT : { type: 'object', title: 'Transport Document Relation', required: ['transportDocumentReference'], CHILDREN: ['transportDocumentReference', 'transportDocumentSubReference'] },\n },\n transportDocumentReplacements: {\n DEFAULT : { $ref: '#/components/schemas/TransportDocumentReplacements' }\n },\n TransportDocumentReplacements: {\n DEFAULT : { type: 'object', title: 'Transport Document Replacements', CHILDREN: ['oldTransportDocumentReferences', 'newTransportDocumentReferences'] },\n },\n TransportDocumentNotification: {\n DEFAULT : { type: 'object', title: 'Transport Document Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data'] },\n },\n transportDocumentReference: {\n 'BKG_v2.0.0' : {type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n 'BKG_v2.0.1' : {type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n PARENTS : { TransportDocumentRelation: {}, EndorsementChain: {}, ShippingInstructions: {}, shippingInstructions: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, CreateBooking: { deprecated: true }, UpdateBooking: { deprecated: true }, Booking: { deprecated: true }, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, TransportDocumentRefStatus: {}, IssuanceResponse: {}, SurrenderRequestAcknowledgement: {}, ShippingInstructionsData: {}, SurrenderRequestDetails: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n transportDocumentReferences: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n transportDocumentSubReference: {\n PARENTS : { TransportDocumentRelation: {}, EndorsementChain: {}, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, TransportDocumentRefStatus: {}, IssuanceResponse: {}, SurrenderRequestAcknowledgement: {}, ShippingInstructionsData: {}, SurrenderRequestDetails: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n transportDocumentStatus: {\n PARENTS : { ApproveTransportDocument: { pseudoEnum: [] }, TransportDocument: {}, transportDocument: {}, TransportDocumentRefStatus: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['DRAFT','APPROVED','ISSUED','PENDING_SURRENDER_FOR_AMENDMENT','SURRENDERED_FOR_AMENDMENT','VOIDED','PENDING_SURRENDER_FOR_DELIVERY','SURRENDERED_FOR_DELIVERY'] },\n },\n transportDocumentTypeCode: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', enum: ['BOL', 'SWB'] },\n },\n transportEmergencyTemperature: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n transportPlan: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Transport'} },\n },\n transportPlanStage: {\n PARENTS : { Transport: {} },\n DEFAULT : { type: 'string', enum: ['PRC', 'MNC', 'ONC'] },\n },\n transportPlanStageSequenceNumber: {\n PARENTS : { Transport: {} },\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transports: {\n DEFAULT : { $ref: '#/components/schemas/Transports' },\n },\n Transports: {\n DEFAULT : { type: 'object', title: 'Transports', required: ['plannedArrivalDate', 'plannedDepartureDate', 'portOfLoading', 'portOfDischarge', 'vesselVoyages'], CHILDREN: ['plannedArrivalDate','plannedDepartureDate','preCarriageBy','onCarriageBy','placeOfReceipt','portOfLoading','portOfDischarge','placeOfDelivery','onwardInlandRouting','vesselVoyages'] },\n },\n transverseOffset: {\n DEFAULT : { type: 'object', title: 'Transverse Offset', allOf: true },\n },\n type: {\n 'BKG_v2.0.x' : { PARENTS: {\n BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n ExtendedNationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n// 'BKG_v2.0.1' : { PARENTS: {\n// BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n// CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n// Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n// NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n// } },\n// 'BKG_v2.0.2' : { PARENTS: {\n// BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n// CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n// Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n// NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n// } },\n PARENTS : { \n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n Reference: {maxLength: 3, pseudoEnum: ['CR','AKG'] },\n ReferenceConsignmentItem: {maxLength: 3, pseudoEnum: ['CR','AKG','SPO','CPO'] },\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n ArrivalNoticeNotification: {enum: ['org.dcsa.arrival-notice-notification.v1'], pseudoEnum: [] },\n TransportDocumentNotification: {enum: ['org.dcsa.transport-document.v3'], pseudoEnum: [] },\n ShippingInstructionsNotification: {enum: ['org.dcsa.shipping-instructions.v3'], pseudoEnum: [] },\n vessel: {enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n ExtendedNationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n },\n DEFAULT : { type: 'string' },\n },\n typeCode: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { enum: ['ARRI', 'DEPA'] } },\n PARENTS : { Vessel: { enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] } },\n DEFAULT : { type: 'string' },\n },\n typeOfPerson: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: ['NATURAL_PERSON','LEGAL_PERSON','ASSOCIATION_OF_PERSONS'] },\n },\n unit: {\n PARENTS : { \n CargoGrossWeight: {enum: ['KGM', 'LBR']},\n CargoNetWeight: {enum: ['KGM', 'LBR']},\n TareWeight: {enum: ['KGM', 'LBR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossVolume: {enum: ['MTQ', 'FTQ']}, \n NetVolume: {enum: ['MTQ', 'FTQ', 'LTR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossWeight: {enum: ['KGM', 'LBR']}, \n CargoGrossWeightReq: {enum: ['KGM', 'LBR']}, \n GrossWeight: {enum: ['KGM', 'LBR']}, \n CargoNetWeight: {enum: ['KGM', 'LBR']}, \n NetWeight: {enum: ['KGM', 'LBR']}, \n NetExplosiveContent: {enum: ['KGM', 'LBR', 'GRM', 'ONZ']},\n Measurement: { maxLength: 3, pseudoEnum: ['MTR', 'CMT', 'FOT', 'INH'] },\n },\n DEFAULT : { type: 'string' },\n },\n units: {\n PARENTS : { ConfirmedEquipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n unitPrice: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n universalExportVoyageReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: null, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalImportVoyageReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: null, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalServiceReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, Schedule: {}, ServiceSchedule: {}, VesselTransport: {}, BargeTransport: {}, departingVesselVoyage: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', minLength: 8, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' },\n },\n UNLocationCode: {\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^[A-Z]{2}[A-Z2-9]{3}$', pseudoEnum: [] },\n },\n UNLocationLocation: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'UN Location', required: ['UNLocationCode','locationType'] } },\n },\n UNNumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n UpdateBooking: {\n DEFAULT : { type: 'object', title: 'Update Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n UpdateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Update Shipping Instructions', required: ['shippingInstructionsReference', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n updatedShippingInstructions: {\n PARENTS : { ShippingInstructionsData: {} },\n DEFAULT : { $ref: '#/components/schemas/UpdatedShippingInstructionsFullNotification' },\n },\n UpdatedShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Updated Shipping Instructions', allOf: true },\n },\n updatedShippingInstructionsStatus: {\n PARENTS : { CancelShippingInstructionsUpdate: { pseudoEnum: [] }, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['UPDATE_RECEIVED','UPDATE_CONFIRMED','UPDATE_CANCELLED','UPDATE_DECLINED'] },\n },\n UTEquipment: {\n DEFAULT : { type: 'object', title: 'Shipper Owned Equipment (SoC)', required: ['isShipperOwned', 'equipment'], CHILDREN: ['isShipperOwned','equipment'] },\n },\n UTEquipmentReference: {\n DEFAULT : { type: 'object', title: 'Carrier Owned Equipment', required: ['isShipperOwned', 'equipmentReference'], CHILDREN:['isShipperOwned','equipmentReference'] },\n },\n UtilizedTransportEquipment: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment', required: ['equipment', 'isShipperOwned', 'seals'], CHILDREN: ['equipment','isShipperOwned','isNonOperatingReefer','activeReeferSettings','shippingMarks','seals','references','customsReferences'] },\n },\n utilizedTransportEquipments: {\n PARENTS : { HouseBillOfLading: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentHBL'}}, CreateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, UpdateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, ShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, shippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, updatedShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, TransportDocument: {items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} }, transportDocument: { items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n UtilizedTransportEquipmentHBL: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (House B/L)', required: ['emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode'], oneOf: true, CHILDREN: ['seals','emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode']},\n },\n UtilizedTransportEquipmentShipper: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (Shipper)', required: ['seals'], oneOf: true, CHILDREN: ['shippingMarks','seals','emptyIndicatorCode','references','customsReferences']},\n },\n value: {\n PARENTS : {\n TareWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n NetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n CargoGrossWeightReq: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n GrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetExplosiveContent: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n DetailedError: { type: 'string', maxLength: 500 },\n errors: {type: 'string', maxLength: 500}, \n TaxLegalReference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n Reference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n Measurement: { type: 'number', format: 'float' },\n },\n },\n values: {\n PARENTS : { \n NationalCommodityCode: {}, \n ExtendedNationalCommodityCode: { items: {type: 'string', maxLength: 16, pattern: '^\\\\S(?:.*\\\\S)?$' } }, \n CustomsReference: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n ReferenceConsignmentItem: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n DEFAULT : { type: 'array', minItems: 1, items: {type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n verticalOffset: {\n DEFAULT : { type: 'object', title: 'Vertical Offset', allOf: true },\n },\n vessel: {\n 'CS_v1.0.x' : { DEFAULT: { type: null, title: null, required: null, CHILDREN: null, $ref: '#/components/schemas/Vessel' } },\n// 'CS_v1.0.1' : { DEFAULT: { type: null, title: null, required: null, CHILDREN: null, $ref: '#/components/schemas/Vessel' } },\n PARENTS : { PortCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { $ref: '#/components/schemas/Vessel' },\n },\n Vessel: {\n 'OVS_HUB_REF_v1.0.x' : { DEFAULT: { CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','name','callSign','isDummyVessel']} },\n 'JIT_v2.0.0' : { DEFAULT: { type: 'object', title: 'Vessel', CHILDREN: ['vesselIMONumber','MMSINumber','name','lengthOverall','width','dimensionUnit','callSign','typeCode'] } },\n 'BKG_v2.0.x' : { DEFAULT: { type: 'object', title: 'Vessel', required: ['name'], CHILDREN: ['name','vesselIMONumber'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Vessel', required: ['name'], CHILDREN: ['name','vesselIMONumber'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { type: 'object', title: 'Vessel', required: ['name'], CHILDREN: ['name','vesselIMONumber'] } },\n DEFAULT : { type: 'object', title: 'Vessel', CHILDREN: ['vesselIMONumber','MMSINumber','name','flag','callSign','operatorCarrierCode','operatorCarrierCodeListProvider'] },\n },\n vesselCallSign: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 10, pattern: null }, PARENTs: { VesselSchedule: {} } },\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n vesselCallSignNumber: {\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselIMONumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: 7, pattern: '^\\\\d{7}$' }, PARENTs: { VesselSchedule: {} } },\n PARENTS : { TerminalTimestamp: {}, vessel: {}, Vessel: {}, Transport: {}, VesselVoyage: {}, Barge: {}, VesselSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', minLength: 7, maxLength: 8, pattern: '^\\\\d{7,8}$' },\n },\n vesselMMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n vesselName: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 35, pattern: null, pseudoEnum: [] }, PARENTs: { VesselSchedule: {} } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, VesselVoyage: {}, VesselSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n vesselOperatorCarrierCode: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselOperatorSMDGLinerCode: {\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselOperatorCarrierCodeListProvider: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n vesselPosition: {\n DEFAULT : { $ref: '#/components/schemas/VesselPosition' },\n },\n VesselPosition: {\n DEFAULT : { type: 'object', title: 'Vessel Position', CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n VesselSchedule: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { required: ['vesselOperatorSMDGLinerCode', 'transportCalls'], CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','MMSINumber','vesselName','vesselCallSign','transportCalls'] } },\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel', 'vesselOperatorSMDGLinerCode'], CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','MMSINumber','vesselName','vesselCallSign','isDummyVessel','transportCalls'] } },\n DEFAULT : { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel'], CHILDREN: ['vessel','isDummyVessel','transportCalls'] },\n },\n vesselSchedules: {\n 'OVS_v3.0.x' : { PARENTS: { ServiceSchedule: { minItems: null, items: {$ref: '#/components/schemas/VesselSchedule'} } } },\n PARENTS : { ServiceSchedule: { minItems: 1, items: {$ref: '#/components/schemas/VesselSchedule'} }, PortSchedule: { items: { $ref: '#/components/schemas/Schedule' } } },\n DEFAULT : { type: 'array' },\n },\n VesselStatus: {\n DEFAULT : {type: 'object', title: 'Vessel Status', required: ['portCallServiceID'], CHILDREN: ['portCallServiceID', 'draft','airDraft','aftDraft','forwardDraft','dimensionUnit','vesselPosition','milesToDestinationPort','isFYI']}\n },\n VesselStatuses: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/VesselStatus' } },\n },\n VesselTransport: {\n DEFAULT : { type: 'object', title: 'Vessel Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','vessel'] },\n },\n VesselVoyage: {\n DEFAULT : { type: 'object', title: 'Vessel/Voyage', required: ['vesselName', 'carrierExportVoyageNumber'], CHILDREN: ['vesselName','carrierExportVoyageNumber','universalExportVoyageReference','role'] },\n },\n vesselVoyages: {\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/VesselVoyage'} },\n },\n weightUnit: {\n PARENTS : { Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n width: {\n PARENTS : { Vessel: {}, TotalCargoDimensions: { type: 'object', title: 'Width', format: null, allOf: true } },\n DEFAULT : { type: 'number', format: 'float' }, // JIT\n },\n woodDeclaration: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['NOT_APPLICABLE','NOT_TREATED_AND_NOT_CERTIFIED','PROCESSED','TREATED_AND_CERTIFIED'] },\n },\n};\n\n\n// Makes sure two arrays are equal if:\n// * they are the same array\n// * they have the same size\n// * items on each position in the list are the same\nfunction arraysEqual(a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\n// input: the property (Node) in the API to validate\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// attribute: the attribute to test (type, minLength, required, etc...) if specified correctly\n// requirements: the list of attributes that from the Spectral rule that is valid\n// results: an accumulated list of errors for a particular property\nfunction checkRequirement(input, propertyName, attribute, requirements, results) {\n // Checking 'enum' attribute\n if (attribute === 'enum') {\n // Check that enum values match (= are specified the same way...)\n const enumValuesRequired = requirements[attribute];\n const enumValues = input[attribute];\n if (!arraysEqual(enumValues, enumValuesRequired)) {\n // The two enum lists do not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: [` + enumValuesRequired + `], value provided: [` + enumValues + `]`, }, );\n }\n // Checking 'required' attribute\n } else if (attribute === 'required') {\n // Check that required lists match (= are specified the same way...)\n const requiredValues = requirements[attribute];\n const inputValues = input[attribute];\n if (!arraysEqual(inputValues, requiredValues)) {\n // The two required lists do not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: [` + requiredValues + `], value provided: [` + inputValues + `]`, }, );\n }\n\n // Check that required attributes are part of the Schema (if schema is updated without the required list being updated)\n if (requiredValues && requiredValues.length > 0) {\n if (!input.properties) {\n results.push( { message: propertyName + ` has required child-properties defined...`, }, );\n } else {\n for (let i = 0; i < requiredValues.length; ++i) {\n if (!input.properties[requiredValues[i]]) {\n results.push( { message: propertyName + ` HAS required property ` + requiredValues[i] + ` but it is missing as a child in the schema`, }, );\n }\n }\n }\n }\n // Checking 'items' attribute\n } else if (attribute === 'items') {\n if (input['items'] && requirements['items']) {\n // Check if a $ref MUST be used\n if (Object.keys(input['items']).length === 1 && input['items']['$ref']) {\n // the input contains a $ref\n if (requirements['items']['$ref'] !== input['items']['$ref']) {\n results.push( { message: propertyName + `.` + attribute + ` is defined as a $ref pointing to '` + input['items']['$ref'] + `' - but must be defined ` + (requirements['items']['$ref'] ? `as a $ref pointing to: ` + requirements['items']['$ref'] : `inline`), }, );\n }\n } else if (Object.keys(requirements['items']).length === 1 && requirements['items']['$ref']) {\n // the spec requires a $ref\n if (input['items']['$ref'] !== requirements['items']['$ref']) {\n results.push( { message: propertyName + `.` + attribute + ` is not defined as a $ref and MUST point to: ` + requirements['items']['$ref'], }, );\n }\n } else {\n // Multiple properties defined for an inline defined items\n for (const attribute2 of ATTRIBUTES_TO_CHECK) {\n checkRequirement(input.items, propertyName + '.items', attribute2, requirements.items, results)\n }\n\n // Check Enums and Pseudo-Enums\n checkEnumAndPseudoEnum(input.items, propertyName + '.items', requirements.items, results);\n\n }\n } else {\n if (input['items']) {\n // input.items is defined - but it is not part of the required properties\n results.push( { message: propertyName + `.` + attribute + ` value defined but shouldn't be according to the rules`, }, );\n } else if (requirements['items']) {\n // requirements.items is defined - but it is not part of the input properties\n results.push( { message: propertyName + `.` + attribute + ` value is missing - MUST be defined`, }, );\n }\n }\n } else if ((typeof input[attribute]) === 'boolean' || (typeof input[attribute]) === 'number') {\n // NOTE: It is IMPORTANT to convert to string before comparison otherwise boolean comparison will validate wrong\n if (String(requirements[attribute]) !== String(input[attribute])) {\n // The value provided and the value required does not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: ` + requirements[attribute] + `, value provided: ` + input[attribute], }, );\n }\n\n // Checking a specific attribute\n } else if (requirements[attribute] !== input[attribute]) {\n // The below line was wrongly included - it results in 2 errors in case e.g. Title from spec does not match the accepted value\n // results.push( { message: propertyName + `.` + attribute + ` TYPEOF INPUT VALUE IS: ` + (typeof input[attribute]), }, );\n\n // The value provided and the value required does not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: ` + requirements[attribute] + `, value provided: ` + input[attribute], }, );\n }\n\n // Make sure type attributes that are strings have example attribute value set\n if (attribute === 'type' && requirements[attribute] === \"string\") {\n if (!input['example'] || input['example'].length === 0){\n // Example value missing when type=string - file an error\n results.push( { message: propertyName + `.example attribute must be set with a value`, }, );\n } else if (input['format'] && input['format'] === 'date') {\n // Make sure the example contains an offset or is defined as UTC\n if (input['example'].match(/^.+((Z)|([\\+\\-])(\\d\\d):(\\d\\d))$/)) {\n results.push( { message: propertyName + `.example must not contain an offset or be a UTC date when format=date`, }, );\n }\n } else if (input['format'] && input['format'] === 'date-time') {\n // Make sure the example contains an offset or is defined as UTC\n if (!input['example'].match(/^.+((Z)|([\\+\\-])(\\d\\d):(\\d\\d))$/)) {\n results.push( { message: propertyName + `.example must contain an offset or be UTC if format=date-time`, }, );\n }\n } \n }\n}\n\n// Check two lists against each other and list the differences (disregarding order if items)\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// text: the text to test against (most likely the description field)\n// list: the list of items to check from the Spec\n// isEnum: used for presentation purposes - indicates if it is an enum or a pseudoEnum\n// results: an accumulated list of errors for a particular property\nfunction checkLists(propertyName, text, list, isEnum, results) {\n let match;\n const fullMatches = [];\n const matches = [];\n // Use a loop to find all matches\n\n // IMPORTANT: reset lastIndex because PSEUDO_ENUM_PATTERN is global (/g)\n PSEUDO_ENUM_PATTERN.lastIndex = 0;\n\n while ((match = PSEUDO_ENUM_PATTERN.exec(text)) !== null) {\n fullMatches.push(match[0]);\n matches.push(match[1]); // Add the first capturing group to the list\n if (false && 'transportDocumentStatus' === propertyName) {\n results.push( { message: propertyName + `.description FULL MATCHES ` + match[0], }, );\n results.push( { message: propertyName + `.description exact MATCHES ` + match[1], }, );\n }\n }\n\n var output = [];\n var formatList = [];\n outer:\n for (let k = 0; k < list.length; ++k) {\n for (let j = 0; j < matches.length; ++j) {\n if (matches[j] === list[k]) {\n if (!fullMatches[j].includes('- `' + list[k] + '`')) {\n formatList.push(list[k]);\n }\n fullMatches.splice(j, 1);\n matches.splice(j, 1);\n continue outer;\n }\n }\n output.push(list[k]);\n }\n\n if (output.length > 0) {\n results.push( { message: propertyName + `.description does not mention ` + (isEnum ? `Enum` : `PseudoEnum`) + ` value(s): [` + output + `]`, }, );\n }\n\n if (matches.length > 0) {\n if (isEnum) {\n results.push( { message: propertyName + `.description contains descriptions for the following Enum-values but they are missing in the Enum list: [` + matches + `]`, }, );\n } else {\n results.push( { message: propertyName + `.description contains descriptions for the following PseudoEnum-values but they are missing in the pseudoEnum-Spec list: [` + matches + `]`, }, );\n }\n }\n\n if (formatList.length > 0) {\n results.push( { message: propertyName + `.description does not follow the agreed pattern for presenting ` + (isEnum ? `an Enum` : `a PseudoEnum`) + `: [` + formatList + `]\\nShould follow the pattern: - \\`...\\` (...)`, }, );\n }\n}\n\nfunction checkEnumAndPseudoEnum(input, propertyName, spec, results) {\n // - Only check for String types\n if ((spec && spec.type && spec.type === 'string' && !spec.format) || (!(spec && spec.type) && input && input.type && input.type === 'string')) {\n if (spec && spec.pseudoEnum) {\n if (spec.pseudoEnum.length === 0) {\n // The description of the property contains PseudoEnum like text but is not a PseudoEnum\n // ** This allows a property description to match PsudeoEnum without being treated as one **\n } else {\n // The spec contains a pseudoEnum pattern that needs to be checked\n if (input && input.description) {\n const matches = input.description.match(PSEUDO_ENUM_PATTERN) || [];\n\n // This property contains PseudoEnum values - make sure they are all present in the description\n checkLists(propertyName, input.description, spec.pseudoEnum, false, results);\n }\n }\n } else {\n // Test the description for Enum or PseudoEnum values-descriptions\n if (input && input.description) {\n if (input.enum) {\n // Test if Enum values are mentioned in the description\n \n checkLists(propertyName, input.description, input.enum, true, results);\n } else {\n // Make sure no PseudoEnum are present in the description\n PSEUDO_ENUM_PATTERN.lastIndex = 0;\n if (PSEUDO_ENUM_PATTERN.test(input.description)) {\n results.push( { message: propertyName + `.description contains a 'PseudoEnum'-pattern but the property is not defined as one.\\nIf this is not a PseudoEnum then the spec must contain 'pseudoEnum: []'`, }, );\n }\n }\n }\n }\n }\n}\n\n// spec: the accumulated spec to validate against in all uses of a property\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// input: the property (Node) in the API to validate\n// results: an accumulated list of errors for a particular property\nfunction checkAttributeRequirements(spec, propertyName, input, results) {\n // Test valid $ref specifications\n if (input && Object.keys(input).length === 1 && input['$ref']) {\n // Make sure correct use of $ref is used\n if (spec && spec['$ref']) {\n if (spec['$ref'] !== input['$ref']) {\n results.push({ message: propertyName + ` - if not defined inline it MUST use a $ref pointing to: ` + spec['$ref'] + ` (currently pointing to: ` + input['$ref'] +`)`, }, );\n }\n } else {\n // The attribute exists only in the API - NOT as a Spectral rule - file an error\n results.push( { message: propertyName + `.$ref is specified - but should be removed as it is not a required attribute`, }, );\n }\n // Don't validate anything else - if specified using a $ref - it must match and nothing else\n return;\n }\n\n // Check Enums and Pseudo-Enums\n checkEnumAndPseudoEnum(input, propertyName, spec, results);\n\n // Run through all properties to check\n for (const attribute of ATTRIBUTES_TO_CHECK) {\n\n // For debugging!!!!\n if (false && (attribute === 'minItems' && propertyName === 'identifyingCodes')) {\n if (input) {\n if ((attribute in input)) {\n results.push( { message: propertyName + `.` + attribute + ` is specified in INPUT and has value:` + input[attribute], }, );\n } else {\n results.push( { message: propertyName + `.` + attribute + ` is NOT specified in INPUT`, }, );\n }\n }\n if (spec) {\n if ((attribute in spec)) {\n results.push( { message: propertyName + `.` + attribute + ` is specified in SPEC and has value:` + spec[attribute], }, );\n results.push( { message: propertyName + `.` + attribute + ` SPEC =` + spec[attribute] + `, typeOf=` + (typeof spec[attribute]), }, );\n results.push( { message: propertyName + `.` + attribute + ` INPUT =` + input[attribute] + `, typeOf=` + (typeof input[attribute]), }, );\n if (String(spec[attribute]) !== String(input[attribute])) {\n results.push( { message: propertyName + `.` + attribute + `: SPEC and INPUT are NOT alligned`, }, );\n } else {\n results.push( { message: propertyName + `.` + attribute + `: SPEC and INPUT are alligned`, }, );\n }\n } else {\n results.push( { message: propertyName + `.` + attribute + ` is NOT specified in SPEC`, }, );\n }\n }\n }\n\n // Check if the property is used in the API\n if (input && (attribute in input)) {\n // ...and check if it also exists in the spec\n if (spec && (attribute in spec)) {\n checkRequirement(input, propertyName, attribute, spec, results);\n } else {\n // The attribute exists only in the API - NOT in the spec - file an error\n results.push( { message: propertyName + `.` + attribute + ` is specified - but should be removed as it is not a required attribute`, }, );\n }\n } else if (spec && (attribute in spec) && (spec[attribute] !== undefined)) {\n // The attribute exists in the spec - NOT in the API (if the attribute is specified as \"Null\" or \"Undefined\" then it is treated just like if it was not specified - this is how you \"overrule\" a specified value)\n if (attribute === 'enum' || attribute === 'required') {\n // Provide better error message for missing enum\n results.push( { message: propertyName + `.` + attribute + ` must contain the list: [` + spec[attribute] + `] but nothing was provided`, }, );\n } else {\n results.push( { message: propertyName + `.` + attribute + ` value must equal: ` + spec[attribute] + ` but nothing was provided`, }, );\n }\n } else {\n // In none of the lists - there is no requirement for this attribute\n }\n }\n\n //Check descriptions\n if (input && input['type'] && input['type'] === 'string' && input['description']) {\n if (input.format && (input.format === 'date' || input.format === 'date-time') && input['description'].match(/iso *8601/i)) {\n results.push( { message: propertyName + `.description contains an invalid reference to ISO 8601 - please remove`, }, );\n }\n } else if (input['type'] && input['type'] !== 'array' && !input['description']) {\n // File an error if no description has been written\n results.push( { message: propertyName + `.description is missing....`, }, );\n }\n\n // Check that children are specified correctly\n if (input && input['type'] && input['type'] === 'object' && spec['CHILDREN']) {\n// if (input.properties && !arraysEqual(Object.keys(input.properties), spec['CHILDREN'])) {\n if (input.properties && !arraysEqual(Array.from(Object.keys(input.properties)), spec['CHILDREN'])) {\n // The two enum lists do not match - file an error\n results.push( { message: propertyName + ` MUST have the following children: [` + spec['CHILDREN'] + `], value provided: [` + Object.keys(input.properties) + `]`, }, );\n }\n // results.push( { message: propertyName + ` looking for children: ` + JSON.stringify(Object.keys(input.properties)) + spec['CHILDREN'], }, );\n }\n}\n\n// specA: the accumulated spec for the property\n// specB: the spec to merge into the accumulated spec. Null removes a property, otherwise it will be added or updated\n// includeParentProperty: weather to use this method to also copy the PARENTS property\nfunction mergeSpecs(specA, specB, includeParentProperty) {\n // Make sure specB exists\n if (specB) {\n // Run through all elements in specB\n for (const [key, value] of Object.entries(specB)) {\n // If value of key in specB is null\n if (!value) {\n // ...and it exists in specA\n specA[key] = undefined;\n// if (specA[key]) {\n// // ...then delete the key in specA!\n// //delete specA[key];\n// }\n // If the key already exists in specA\n } else if (includeParentProperty || key !== 'PARENTS') {\n // ...then update or add the value in specA\n specA[key] = value;\n }\n }\n }\n}\n\n// spec: the spec as defined for the current location\n// parentSpec: the spec as defined for the specific parent node\n// context: a StopLight object containing metadata about the API property being tested\n// index: the parent index of the context.path currently being checked\n// results: an accumulated list of errors for a particular property\n// returns true if location is matched - false if the property is not allowed\nfunction checkParent(spec, parentSpec, context, index, results) {\n // Check if parentSpec is defined\n if (parentSpec) {\n // Find the index of the parentName\n const newIndex = ((context.path.length > (3 + index)) && (context.path[context.path.length - (3 + index)] === 'items')) ?\n (4 + index) : (3 + index);\n // Get the parentName\n const parentPropertyName = context.path[context.path.length - newIndex];\n // Check if the parent spec has defined something for the parentName\n if (parentSpec[parentPropertyName]) {\n // ...if so - merge the spec of the parentSpec with the accumulated spec (excluding PARENTS property)\n mergeSpecs(spec, parentSpec[parentPropertyName], false);\n // ...and recursively check next parent\n return checkParent(spec, parentSpec[parentPropertyName]['PARENTS'], context, newIndex, results);\n } else {\n // Check if we are in a oneOf situation\n if (/^[0-9]+$/.test(parentPropertyName) && (context.path.length > (newIndex + 2)) && parentSpec[context.path[context.path.length - (newIndex + 2)]]) {\n mergeSpecs(spec, parentSpec[context.path[context.path.length - (newIndex + 2)]], false);\n return checkParent(spec, parentSpec[context.path[context.path.length - (newIndex + 2)]]['PARENTS'], context, newIndex + 2, results);\n } else {\n // If the parentName does not exist in the parentSpec - then the property is not allowed in that particular position\n results.push( { message: context.path[context.path.length - 1] + ` is only allowed under one of these parents: [` + Object.keys(parentSpec) + `] - was found under: ` + parentPropertyName, }, );\n return false;\n }\n }\n } else {\n return true;\n }\n}\n\n// property: the Spectral spec to validate against\n// standard: the name of the OAS file (without \".yaml\"-extension)\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// input: the property (Node) in the API to validate\n// context: a StopLight object containing metadata about the API property being tested\n// specs: the specs to test against\n//\nfunction checkStandard(property, standard, propertyName, input, context, specs, results) {\n // Gather all errors in results\n// const results = [];\n\n// let specs = {};\n if (property['DEFAULT'] && property['DEFAULT'].basedOn) {\n const basedOnPropertyName = property['DEFAULT'].basedOn;\n checkStandard(DCSA_PROPERTIES[basedOnPropertyName], standard, basedOnPropertyName, input, context, specs, results);\n }\n mergeSpecs(specs, property['DEFAULT'], false);\n\n // Merge with standard specific specs (if any)\n var standardProperty = property[standard];\n if (standardProperty) {\n mergeSpecs(specs, standardProperty['DEFAULT'], false);\n } else {\n // Check if there is a MINOR default (a 'yyy.x API spec which covers multiple APIs)\n standardProperty = property[standard.replace(/(\\d+\\.\\d+)\\.\\d+$/, '$1.x')];\n if (standardProperty) {\n mergeSpecs(specs, standardProperty['DEFAULT'], false);\n }\n }\n\n // Check if parent requirements should be checked\n if (!NO_PARENT_CHECK.has(standard)) {\n let parentSpecs = {};\n if (standardProperty) {\n // Use the PARENTS from the standard\n mergeSpecs(parentSpecs, standardProperty['PARENTS'], true);\n// if (propertyName === 'documentParties') {\n// results.push( { message: `**** parentSpecs: [` + Object.keys(parentSpecs) + `]`, }, );\n// }\n } else {\n // Use the PARENTS from the default\n mergeSpecs(parentSpecs, property['PARENTS'], true);\n }\n\n // Only merge a possible parent requirement if one has been defined\n if (!isEmptyObject(parentSpecs)) {\n let resultingParentSpecs = {};\n if (!IGNORE_PARENT_CHECK.has(standard)) {\n if (checkParent(resultingParentSpecs, parentSpecs, context, 0, results)) {\n mergeSpecs(specs, resultingParentSpecs)\n }\n }\n }\n }\n}\n\nfunction isEmpty(obj) {\n for (const prop in obj) {\n if (Object.hasOwn(obj, prop)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isEmptyObject(value) {\n if (value == null) {\n // null or undefined\n return false;\n }\n\n if (typeof value !== 'object') {\n // boolean, number, string, function, etc.\n return false;\n }\n\n const proto = Object.getPrototypeOf(value);\n\n // consider `Object.create(null)`, commonly used as a safe map\n // before `Map` support, an empty object as well as `{}`\n if (proto !== null && proto !== Object.prototype) {\n return false;\n }\n\n return isEmpty(value);\n}\n\nexport default createRulesetFunction(\n {\n input: null,\n options: null,\n },\n function checkRequirements(input, options, context) {\n // Get propertyName to check based on the path in the Context\n const propertyName = context.path[context.path.length - 1];\n\n // Get the Standard being tested (this excludes the '.yaml' e.g.: BKG_v2.0.2)\n const standard = context['document']['source'].substring(context['document']['source'].lastIndexOf('/') + 1, context['document']['source'].length - 5);\n\n // Check if the standard is in the list of standards that is currently covered by Spectral\n if (COVERED_STANDARDS.has(standard)) {\n // Get the property in the list of DCSA_PROPERTIES\n const property = DCSA_PROPERTIES[propertyName];\n if (property) {\n // Gather all errors in results\n const results = [];\n // Gather the specs to check against\n let specs = {};\n checkStandard(property, standard, propertyName, input, context, specs, results);\n //results.push( { message: propertyName + ` specs: [` + Object.keys(specs) + `]`, }, );\n\n // Specs is now correct in regard to specification and location\n checkAttributeRequirements(specs, propertyName, input, results);\n\n // Only return a list if it contains something - StopLight requirement!!\n if (results.length > 0) {\n return results;\n }\n } else {\n // the property name not part of DCSA_PROPERTIES\n if (!IGNORE_UNSUPPORTED_PROPERTIES.has(standard)) {\n // if (ERROR_ON_UNSUPPORTED_PROPERTIES) {\n return [ { message: propertyName + ` is not in the list of DCSA supported property names`, }, ];\n }\n }\n }\n }\n);" + "content": "import { createRulesetFunction } from '@stoplight/spectral-core';\n\n// Should Spectral return an error if unsupported properties are found\nconst IGNORE_UNSUPPORTED_PROPERTIES = new Set([\n 'OVS_HUB_TER_v1.0.0',\n 'OVS_HUB_REF_v1.0.0',\n 'OVS_HUB_NTF_v1.0.0',\n]);\n\n// Should Spectral return an error if wrong parent element is found\nconst IGNORE_PARENT_CHECK = new Set([\n 'OVS_HUB_TER_v1.0.0',\n 'OVS_HUB_REF_v1.0.0',\n 'OVS_HUB_NTF_v1.0.0',\n]);\n\n// Pattern used to find PseudoEnums and enums in descriptions\nconst PSEUDO_ENUM_PATTERN = /\\n *- *`?([A-Z0-9_.]+)`? *(\\(|:)?/g;\n\n// Should Spectral ignore checks regarding \"location\" of the property\n// (parent specific specifications (also if defined in a standard) are ignored)\nconst NO_PARENT_CHECK = new Set([\n //'CS_v1.0.0',\n]);\n\n// List of eBL Platform Solution Providers\nconst EBL_PLATFORM_SOLUTION_PROVIDERS = ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC','DOCU','AEOT','SGTD'];\n\n// List of attributes to be checked\n// For all attributes in ATTRIBUTES_TO_CHECK, this Spectral rule will make sure:\n// * if attribute is in the Spec - the attribute MUST also be in the requirements\n// * if attribute is in the requirements - then it also need to be in the Spec\nconst ATTRIBUTES_TO_CHECK= ['type', 'minLength', 'maxLength', 'pattern', 'enum', 'format', 'deprecated', 'exclusiveMaximum',\n 'exclusiveMinimum', 'maximum', 'minimum', 'minItems', 'maxItems', 'required', 'nullable', 'items', 'title', 'additionalProperties', 'default', 'readOnly', 'writeOnly'];\n\n// List of Objects that must follow the CloudEvent Notification pattern\nconst DCSA_CLOUDEVENT_GROUP = { ShippingInstructionsNotification: {}, TransportDocumentNotification: {}, BookingNotification: {}, ArrivalNoticeNotification: {} };\n\n// Spectral will **ONLY** check the standards in this list (in the future all APIs should be covered).\nconst COVERED_STANDARDS = new Set([\n // Arrival Notice\n // 'AN_v1.0.0-Beta-1',\n // Booking\n 'BKG_v2.0.0',\n 'BKG_v2.0.1',\n 'BKG_v2.0.2',\n 'BKG_v2.0.3',\n 'BKG_v2.0.4',\n 'BKG_v2.0.5',\n // Commercial Schedules\n 'CS_v1.0.0',\n 'CS_v1.0.1',\n 'CS_v1.0.2',\n 'CS_v1.0.3',\n // electronic Bill of Lading\n 'EBL_v3.0.0',\n 'EBL_v3.0.1',\n 'EBL_v3.0.2',\n 'EBL_v3.0.3',\n 'EBL_v3.0.4',\n 'EBL_END_v3.0.2',\n 'EBL_END_v3.0.3',\n 'EBL_END_v3.0.4',\n 'EBL_ISS_v3.0.0',\n 'EBL_ISS_v3.0.1',\n 'EBL_ISS_v3.0.2',\n 'EBL_ISS_v3.0.3',\n 'EBL_ISS_v3.0.4',\n 'EBL_SUR_v3.0.0',\n 'EBL_SUR_v3.0.1',\n 'EBL_SUR_v3.0.2',\n 'EBL_SUR_v3.0.3',\n 'EBL_SUR_v3.0.4',\n 'EBL_PINT_v3.0.0',\n // Just in Time Port Calls\n 'JIT_v2.0.0',\n 'OVS_v3.0.0',\n 'OVS_v3.0.1',\n 'OVS_v3.0.2',\n 'OVS_HUB_TER_v1.0.0',\n 'OVS_HUB_REF_v1.0.0',\n 'OVS_HUB_NTF_v1.0.0',\n]);\n\n// A list of accepted properties that have changed over time or are different for different standards\n// DEFAULT covers all remaining standards\n// \"GROUPS\" - e.g. EBL_BETA2_GROUP: this covers all standards in the EBL Beta 2 release (EBL, ISS, ISS_RSP, SUR, SUR_RSP, EBL_NFT, PINT)\n// - it is possible to define more groups in which the group need to be added next to where EBL_BETA2_GROUP is used\n// If 'parent' is specified - then the spec only allows the property under the list of parents\n// If no 'parent' is specified - the spec applies to all locations in the document\n// parents-specs overrule \"globalSpec\"\n// Enum and required fields (fields specified as lists) MUST be defined in same order\nconst DCSA_PROPERTIES = {\n _20_units: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' }\n },\n _40_units: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' }\n },\n _45_units: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' }\n },\n action: {\n PARENTS : { SurrenderRequestAnswer: {} },\n DEFAULT : { type: 'string', enum: ['SURR', 'SREJ'] },\n },\n actionCode: {\n PARENTS : { EndorsementChainLink: {}, Transaction: { pseudoEnum: ['ISSUE','ENDORSE','SIGN','SURRENDER_FOR_DELIVERY','SURRENDER_FOR_AMENDMENT','SACC','SREJ','BLANK_ENDORSE','ENDORSE_TO_ORDER','TRANSFER'] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['ISSUE','ENDORSE','SIGN','SURRENDER_FOR_DELIVERY','SURRENDER_FOR_AMENDMENT','BLANK_ENDORSE','ENDORSE_TO_ORDER','TRANSFER','SURRENDERED'] },\n },\n actionDateTime: {\n PARENTS : { EndorsementChainLink: {}, Transaction: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n ActiveReeferSettings: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n// 'BKG_v2.0.1' : { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n// 'BKG_v2.0.3' : { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n DEFAULT : { type: 'object', title: 'Active Reefer Settings', CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired'] },\n },\n activeReeferSettings: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { $ref: '#/components/schemas/ActiveReeferSettings' },\n },\n actor: {\n PARENTS : { EndorsementChainLink: {}, Transaction: {} },\n DEFAULT : { $ref: '#/components/schemas/ActorParty' },\n },\n actualDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n additionalContainerCargoHandling: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n address: {\n 'OVS_v3.0.x' : { PARENTS: { AddressLocation: { type: 'object', required: ['name'] } } },\n PARENTS : {\n Location: {$ref: '#/components/schemas/Address'},\n LoadLocation: {$ref: '#/components/schemas/Address'},\n DischargeLocation: {$ref: '#/components/schemas/Address'},\n PlaceOfReceipt: {$ref: '#/components/schemas/Address'},\n PortOfLoading: {$ref: '#/components/schemas/Address'},\n PortOfDischarge: {$ref: '#/components/schemas/Address'},\n PlaceOfDelivery: {$ref: '#/components/schemas/Address'},\n OnwardInlandRouting: {$ref: '#/components/schemas/Address'},\n BookingAgent: {$ref: '#/components/schemas/PartyAddress'},\n Shipper: {$ref: '#/components/schemas/PartyAddress'},\n ShipperShipper: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfShipper: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfShipperShipper: {$ref: '#/components/schemas/PartyAddress'},\n ShipperHBL: {$ref: '#/components/schemas/Address'},\n Consignee: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfConsignee: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfConsigneeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeHBL: {$ref: '#/components/schemas/Address'},\n Endorsee: {$ref: '#/components/schemas/PartyAddress'},\n EndorseeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ServiceContractOwner: {$ref: '#/components/schemas/PartyAddress'},\n CarrierBookingOffice: {$ref: '#/components/schemas/Address'},\n NotifyParty: { $ref: '#/components/schemas/PartyAddress'},\n NotifyPartyShipper: { $ref: '#/components/schemas/PartyAddress'},\n NotifyPartyHBL: { $ref: '#/components/schemas/AddressHBL'},\n Seller: { $ref: '#/components/schemas/Address'},\n SellerHBL: { $ref: '#/components/schemas/AddressHBL'},\n Buyer: { $ref: '#/components/schemas/Address'},\n BuyerHBL: { $ref: '#/components/schemas/AddressHBL'},\n ShippingInstructionsRequestor: { $ref: '#/components/schemas/PartyAddress' },\n Party: {$ref: '#/components/schemas/PartyAddress'},\n PartyShipper: {$ref: '#/components/schemas/PartyAddress'},\n PartyHBL: {$ref: '#/components/schemas/Address'},\n CarriersAgentAtDestination: {$ref: '#/components/schemas/Address'},\n IssuingParty: {$ref: '#/components/schemas/PartyAddress'},\n EmptyContainerDepotReleaseLocation: {$ref: '#/components/schemas/Address'},\n ContainerPositioningLocation: {$ref: '#/components/schemas/Address'},\n TransportCallLocation: { $ref: '#/components/schemas/Address' }\n },\n },\n Address: {\n 'CS_v1.0.x' : { DEFAULT: { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'city', 'stateRegion', 'countryCode'] } },\n DEFAULT : { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'POBox', 'city', 'stateRegion', 'countryCode'] },\n },\n AddressHBL: {\n DEFAULT : { type: 'object', title: 'Address (House B/L)', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'POBox', 'city', 'stateRegion', 'countryCode'] },\n },\n addressLines: {\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 250 } },\n },\n AddressLocation: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'Address Location', required: ['address','locationType'], CHILDREN: ['locationName', 'locationType', 'address'] } },\n },\n advanceManifestFilings: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/AdvanceManifestFiling'} },\n },\n AdvanceManifestFiling: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n DEFAULT : { type: 'object', title: 'Advance Manifest Filing', required: ['manifestTypeCode', 'advanceManifestFilingsHouseBLPerformedBy'], CHILDREN: ['manifestTypeCode','countryCode','advanceManifestFilingsHouseBLPerformedBy','selfFilerCode','identificationNumber'] },\n },\n advanceManifestFilingsHouseBLPerformedBy: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', enum: ['SELF', 'CARRIER'] },\n },\n aftDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n airDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n airExchangeSetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n airExchangeUnit: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'string', enum: ['MQH', 'FQH']},\n },\n amendedBooking: {\n DEFAULT : { $ref: '#/components/schemas/AmendedBookingFullNotification' },\n },\n AmendedBookingFullNotification: {\n DEFAULT : { type: 'object', title: 'Amended Booking', allOf: true },\n },\n amendedBookingStatus: {\n PARENTS : { Booking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['AMENDMENT_RECEIVED','AMENDMENT_CONFIRMED','AMENDMENT_DECLINED','AMENDMENT_CANCELLED'] },\n },\n amendedTransportDocument: {\n PARENTS : { TransportDocumentData: {}, TransportDocumentAmend: { $ref: '#/components/schemas/TransportDocument' } },\n DEFAULT : { $ref: '#/components/schemas/AmendedTransportDocumentFullNotification' }\n },\n AmendedTransportDocumentFullNotification: {\n DEFAULT : { type: 'object', title: 'Amended Transport Document Full Notification', allOf: true },\n },\n amendedTransportDocumentStatus: {\n PARENTS : { TransportDocumentData: {}, TransportDocumentAmend: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['AMENDMENT_RECEIVED','AMENDMENT_CONFIRMED','AMENDMENT_DECLINED','AMENDMENT_CANCELLED'] },\n },\n ApproveTransportDocument: {\n DEFAULT : { type: 'object', title: 'Approve Transport Document', required: ['transportDocumentStatus'], CHILDREN: ['transportDocumentStatus'] },\n },\n arrival: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfArrival' },\n },\n arrivalDateTime: {\n PARENTS : { IntermediateCall: {} },\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n auditReference: {\n PARENTS : { EndorsementChainLink: {},Transaction: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n barge: {\n DEFAULT : { $ref: '#/components/schemas/Barge' },\n },\n Barge: {\n DEFAULT : { type: 'object', title: 'Barge', CHILDREN: ['vesselIMONumber','MMSINumber','name','flag','callSign','operatorCarrierCode','operatorCarrierCodeListProvider'] },\n },\n BargeTransport: {\n DEFAULT : { type: 'object', title: 'Barge Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','barge'] },\n },\n Booking: {\n DEFAULT : { type: 'object', title: 'Booking', required: ['bookingStatus', 'receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n booking: {\n DEFAULT : { $ref: '#/components/schemas/BookingFullNotification' },\n },\n bookingAgent: {\n PARENTS : { DocumentParties: {}, DocumentPartiesReq: {} },\n DEFAULT : { $ref: '#/components/schemas/BookingAgent' },\n },\n BookingAgent: {\n DEFAULT : { type: 'object', title: 'Booking Agent', required: ['partyName'], CHILDREN: ['partyName', 'address','addressLines', 'partyContactDetails', 'identifyingCodes', 'taxLegalReferences','reference']},\n },\n BookingFullNotification: {\n DEFAULT : { type: 'object', title: 'Booking Full Notification', allOf: true },\n },\n bookingChannelReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n BookingRefCancelledStatus: {\n DEFAULT : { type: 'object', title: 'Cancelled Booking Response', required: ['bookingStatus'] },\n },\n BookingRefStatus: {\n DEFAULT : { type: 'object', title: 'Booking Response', required: ['bookingStatus'] },\n },\n BookingNotification: {\n DEFAULT : { type: 'object', title: 'Booking Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data'] },\n },\n BookingNotificationData: {\n DEFAULT : { type: 'object', title: 'Data', required: ['bookingStatus'], CHILDREN: ['bookingStatus', 'amendedBookingStatus', 'bookingCancellationStatus', 'carrierBookingRequestReference', 'carrierBookingReference', 'feedbacks', 'booking', 'amendedBooking'] },\n },\n bookingStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['RECEIVED','PENDING_UPDATE','UPDATE_RECEIVED','CONFIRMED','PENDING_AMENDMENT','REJECTED','DECLINED','CANCELLED','COMPLETED'] },\n },\n bookingCancellationStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['CANCELLATION_RECEIVED','CANCELLATION_DECLINED','CANCELLATION_CONFIRMED'] },\n },\n buyer: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesHouseBL: { $ref: '#/components/schemas/BuyerHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Buyer' },\n },\n Buyer: {\n DEFAULT : { type: 'object', title: 'Buyer', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n BuyerHBL: {\n DEFAULT : { type: 'object', title: 'Buyer (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n calculationBasis: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n callSign: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n cancel: {\n DEFAULT : { type: 'boolean' },\n },\n Cancel: {\n DEFAULT : { type: 'object', title: 'Cancel', CHILDREN: ['reason','isFYI'] },\n },\n cancelled: {\n PARENTS : { PortCallService: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n CancelBookingRequest: {\n DEFAULT : { type: 'object', title: 'Cancel Booking Request', CHILDREN: ['reason'] },\n },\n CancelShippingInstructionsUpdate: {\n DEFAULT : { type: 'object', title: 'Cancel Shipping Instructions or Updated Shipping Instructions', CHILDREN: ['updatedShippingInstructionsStatus', 'shippingInstructionsStatus'] },\n },\n cargoGrossVolume: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoGrossVolume' },\n },\n CargoGrossVolume: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Volume', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoGrossWeight: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {}, CargoItemHBL: {}, RequestedEquipment: { $ref: '#/components/schemas/CargoGrossWeightReq' }, RequestedEquipmentShipper: { $ref: '#/components/schemas/CargoGrossWeightReq' } },\n DEFAULT : { $ref: '#/components/schemas/CargoGrossWeight' },\n },\n CargoGrossWeight: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n CargoGrossWeightReq: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Weight (Requested Equipment)', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoNetVolume: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoNetVolume' },\n },\n CargoNetVolume: {\n DEFAULT : { type: 'object', title: 'Cargo Net Volume', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoNetWeight: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoNetWeight' },\n },\n CargoNetWeight: {\n DEFAULT : { type: 'object', title: 'Cargo Net Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n CargoItem: {\n DEFAULT : { type: 'object', title: 'Cargo Item', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','extendedNationalCommodityCodes','customsReferences'] },\n },\n CargoItemHBL: {\n DEFAULT : { type: 'object', title: 'Cargo Item (House B/L)', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','outerPackaging'] },\n },\n cargoItems: {\n PARENTS : {\n ConsignmentItemShipper: { items: {$ref: '#/components/schemas/CargoItemShipper' } },\n ConsignmentItem : { items: {$ref: '#/components/schemas/CargoItem' } },\n ConsignmentItemHBL : { items: {$ref: '#/components/schemas/CargoItemHBL' } },\n },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n CargoItemShipper: {\n DEFAULT : {type: 'object', title: 'Cargo Item (Shipper)', required: ['equipmentReference', 'cargoGrossWeight'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','extendedNationalCommodityCodes','houseBillOfLadingReference','customsReferences'] },\n },\n cargoMovementTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n cargoMovementTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n carrierBookingOffice: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.3' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { documentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/CarrierBookingOffice' },\n },\n CarrierBookingOffice: {\n DEFAULT : { type: 'object', title: 'Carrier Booking Office', required: ['partyName', 'UNLocationCode'], CHILDREN: ['partyName','UNLocationCode','address','addressLines','partyContactDetails'] },\n },\n carrierBookingRequestReference: {\n PARENTS : { CreateBookingResponse: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, BookingNotificationData: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierBookingReference: {\n PARENTS : { UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, BookingNotificationData: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierClauses: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 20000, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n },\n carrierCode: {\n PARENTS : { Moves:{}, booking: {}, amendedBooking: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$' },\n },\n carrierCodeListProvider: {\n PARENTS : { Moves:{}, booking: {}, amendedBooking: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n carrierExportVoyageNumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern: null } },\n PARENTS : { TerminalTimestamp: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n carrierImportVoyageNumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern: null } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carriersAgentAtDestination: {\n PARENTS : { DocumentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/CarriersAgentAtDestination' },\n },\n CarriersAgentAtDestination: {\n DEFAULT : { type: 'object', title: 'Carrier\\'s Agent At Destination', required: ['partyName', 'address', 'partyContactDetails'], CHILDREN: ['partyName','address','addressLines','partyContactDetails'] },\n },\n carrierServiceCode: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 11, pattern:null } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierServiceName: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern:null } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierSCACCode: {\n DEFAULT : { type: 'string', pattern: '^\\\\S+$', maxLength: 4 },\n },\n CenterOfGravity: {\n DEFAULT : { type: 'object', title: 'Center of Gravity', CHILDREN: ['referencePoint','longitudinalOffset','transverseOffset','verticalOffset'] },\n },\n centerOfGravity: {\n DEFAULT : { $ref: '#/components/schemas/CenterOfGravity' },\n },\n changeRemark: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 250 } },\n },\n Charge: {\n DEFAULT : { type: 'object', title: 'Charge', required: ['chargeName', 'currencyAmount', 'currencyCode', 'paymentTermCode', 'calculationBasis', 'unitPrice', 'quantity'], CHILDREN: ['chargeName', 'extendedChargeName','currencyAmount','currencyCode','paymentTermCode','calculationBasis','unitPrice','quantity'] },\n },\n chargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', deprecated: true },\n },\n charges: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Charge'}},\n },\n city: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 65, pattern: null } },\n PARENTS : { PortOfLoading: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, PortOfDischarge: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, address: {}, Address: {}, AddressHBL: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n City: {\n DEFAULT : { type: 'object', title: 'City', required: ['city', 'countryCode'], CHILDREN: ['city','stateRegion','countryCode'] },\n },\n classifier: {\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['EST', 'CON'] },\n },\n classifierCode: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { enum: ['ACT', 'EST'] } },\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT', 'EST', 'PLN', 'REQ'], pseudoEnum: [] }, // No validation is done on description\n },\n co2: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n co2e: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n co2Setpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n code: {\n PARENTS : { Feedback: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFORMATIONAL_MESSAGE','PROPERTY_WILL_BE_IGNORED','PROPERTY_VALUE_MUST_CHANGE','PROPERTY_VALUE_HAS_BEEN_CHANGED','PROPERTY_VALUE_MAY_CHANGE','PROPERTY_HAS_BEEN_DELETED'] },\n },\n codedVariantList: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^[0-3][0-9A-Z]{3}$' },\n },\n codeListName: {\n PARENTS : { IdentifyingCode: {}, identifyingCode: {} },\n DEFAULT : { type: 'string', maxLength: 100, pseudoEnum: ['DID','LEI','DUNS'] },\n },\n codeListProvider: {\n// 'EBL_SUR_v3.0.x' : { DEFAULT: { pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC','DOCU','AEOT','SGTD','GSBN','WISE','GLEIF','W3C','DNB','FMC','DCSA','ZZZ','NONE'] } },\n// 'BKG_v2.0.0' : { DEFAULT: { type: 'string', maxLength: 100, pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','GSBN','WISE','GLEIF','W3C','DNB','FMC','DCSA','ZZZ'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { type: 'string', maxLength: 100, pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','GSBN','WISE','GLEIF','W3C','DNB','FMC','DCSA','ZZZ'] } },\n PARENTS : { IdentifyingCode: {} },\n DEFAULT : { type: 'string', maxLength: 100, pseudoEnum: [] },\n },\n comments: {\n PARENTS : { SurrenderRequestAnswer: {}, SurrenderRequestDetails: {}, Transaction: {} },\n DEFAULT : { type: 'string', maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n commodities: {\n PARENTS : { RequestedEquipment: { items: { $ref: '#/components/schemas/Commodity' } }, RequestedEquipmentShipper: { items: { $ref: '#/components/schemas/CommodityShipper' } } },\n DEFAULT : { type: 'array' },\n },\n CommodityShipper: {\n DEFAULT : { type: 'object', title: 'Commodity (Shipper)', required: ['commodityType'], CHILDREN: ['commodityType','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n Commodity: {\n DEFAULT : { type: 'object', title: 'Commodity', required: ['commodityType'], CHILDREN: ['commoditySubReference', 'commodityType','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n commoditySubReference: {\n PARENTS : { Commodity: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n commodityType: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', maxLength: 550, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n competentAuthorityApproval: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern:'^\\\\S(?:.*\\\\S)?$' },\n },\n confirmedEquipments: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ConfirmedEquipment' } },\n },\n ConfirmedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n DEFAULT : { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup'] },\n },\n consignee: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.3' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/ConsigneeShipper' }, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ConsigneeHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Consignee' },\n },\n Consignee: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','eblPlatform','address','addressLines','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences', 'isNotifyParty'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences'] } },\n// 'BKG_v2.0.3' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences'] } },\n DEFAULT : { type: 'object', title: 'Consignee', required: ['partyName','identifyingCodes'], CHILDREN: ['partyName','eblPlatform','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences', 'isNotifyParty'] },\n },\n ConsigneeShipper: {\n DEFAULT : { type: 'object', title: 'Consignee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','eblPlatform','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences', 'isNotifyParty'] },\n },\n ConsigneeHBL: {\n DEFAULT : { type: 'object', title: 'Consignee (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n consignmentItems: {\n PARENTS : {HouseBillOfLading: { items: { $ref: '#/components/schemas/ConsignmentItemHBL' } }, CreateShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, UpdateShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, ShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, shippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, updatedShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, TransportDocument: { items: { $ref: '#/components/schemas/ConsignmentItem' } }, transportDocument: { items: { $ref: '#/components/schemas/ConsignmentItem' } } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n// ConsignmentItem: {\n// DEFAULT : { type: 'object', title: 'Consignment Item', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes'], CHILDREN: ['carrierBookingReference','descriptionOfGoods','HSCodes','shippingMarks','references','customsReferences'] },\n// },\n ConsignmentItem: {\n DEFAULT : { type: 'object', title: 'Consignment Item', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes', 'cargoItems'], CHILDREN: ['carrierBookingReference','descriptionOfGoods','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','shippingMarks','cargoItems', 'exportLicense', 'importLicense', 'references','customsReferences'] },\n },\n ConsignmentItemShipper: {\n DEFAULT : { type: 'object', title: 'Consignment Item (Shipper)', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes', 'cargoItems'], CHILDREN: ['carrierBookingReference','commoditySubReference', 'descriptionOfGoods','descriptionOfGoodsForCustoms','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','shippingMarks','shippingMarksForCustoms','cargoItems', 'exportLicense', 'importLicense','references','customsReferences'], allOf: true },\n },\n ConsignmentItemHBL: {\n DEFAULT : { type: 'object', title: 'Consignment Item (House B/L)', required: ['descriptionOfGoods', 'cargoItems', 'nationalCommodityCode'], CHILDREN: ['descriptionOfGoods','nationalCommodityCode','extendedNationalCommodityCodes','cargoItems','customsReferences'] },\n },\n contact: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n ContainerUnits: {\n DEFAULT : { type: 'object', title: 'Container Units', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n ContainerPositioning: {\n DEFAULT : { type: 'object', title: 'Container Positioning', required: ['location'], CHILDREN: ['dateTime', 'location' ] },\n },\n ContainerPositioningEstimated: {\n DEFAULT : { type: 'object', title: 'Container Positioning Estimated', required: ['location'], CHILDREN: ['estimatedDateTime', 'location' ] },\n },\n containerPositionings : {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, ConfirmedEquipment: { items: { $ref: '#/components/schemas/ContainerPositioningEstimated' } }},\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ContainerPositioning' } },\n },\n ContainerPositioningLocation: {\n DEFAULT : { type: 'object', title: 'Container Positioning Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n ContainerRestows: {\n DEFAULT : { type: 'object', title: 'Container units to restow', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n content: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', format: 'byte' },\n },\n contentType: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', maxLength: 100, default: 'application/pdf' },\n },\n contractQuotationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$', deprecated: true },\n },\n controlTrackingRegistry: {\n DEFAULT : { type: 'string', maxLength: 1024, format: 'uri' },\n },\n country: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 75 } },\n },\n countryCode: {\n PARENTS : { PlaceOfAcceptance: {}, PlaceOfFinalDelivery: {}, PlaceOfBLIssue: {}, PlaceOfIssue: {}, address: {}, City: {}, Address: {}, AddressHBL: {}, PartyAddress: {}, AdvanceManifestFiling: {}, TaxLegalReference: {}, CustomsReference: {}, NationalCommodityCode: {}, ExtendedNationalCommodityCode: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n CreateBooking: {\n DEFAULT : { type: 'object', title: 'Create Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n CreateBookingResponse: {\n DEFAULT : { type: 'object', title: 'Create Booking Response', required: ['carrierBookingRequestReference'], CHILDREN: ['carrierBookingRequestReference'] },\n },\n CreateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions', required: ['transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n CreateShippingInstructionsResponse: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions Response', required: ['shippingInstructionsReference'], CHILDREN: ['shippingInstructionsReference'] },\n },\n currencyAmount: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n currencyCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', pattern: '^[A-Z]{3}$', minLength: 3, maxLength: 3 },\n },\n CustomsReference: {\n DEFAULT : { type: 'object', title: 'Customs Reference', required: ['type', 'countryCode', 'values'], CHILDREN: ['type','countryCode','values'] },\n },\n customsReferences: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: {}, CargoItemCarrier: {}, CargoItemShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipmentShipper: {}, TransportDocument: {}, transportDocument: {}, UtilizedTransportEquipment: {}, CargoItem: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, Commodity: {}, CommodityShipper: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/CustomsReference' } },\n },\n cutOffDateTime: {\n PARENTS : { ShipmentCutOffTime: {}, CutOffTime: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n cutOffDateTimeCode: {\n PARENTS : { ShipmentCutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','EFC'] }, CutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','PCO','ECP','EFC','RCO','DGC','OBC','TCO','STA','SPA','CUA','AFC'] } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n CutOffTime: {\n DEFAULT : { type: 'object', title: 'Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n cutOffTimes: {\n PARENTS : { PointToPoint: {}, Leg: {}, Schedule: {}, TransportCall: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/CutOffTime'} },\n },\n dangerousGoods: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DangerousGoods' } },\n },\n DangerousGoods: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.3' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n DEFAULT : { type: 'object', title: 'Dangerous Goods', oneOf: true, required: ['properShippingName', 'imoClass'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits'] },\n },\n data: {\n PARENTS : { BookingNotification: { $ref: '#/components/schemas/BookingNotificationData' }, ShippingInstructionsNotification: { $ref: '#/components/schemas/ShippingInstructionsData' }, TransportDocumentNotification: { $ref: '#/components/schemas/TransportDocumentData' } },\n DEFAULT : { type: 'object', title: 'Data' },\n },\n datacontenttype: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['application/json'], pseudoEnum: [] },\n },\n dateTime: {\n PARENTS : { Timestamp: {}, PlaceOfReceipt: {}, ContainerPositioning: {}, EmptyContainerPickup: {}, OriginEmptyContainerPickup: {}, PlaceOfDelivery: {}, PlaceOfArrival: {}, PlaceOfDeparture: {} },\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n declaredValue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n declaredValueCurrency: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', minLength: 3, maxLength: 3, pattern: '^[A-Z]{3}$' },\n },\n decline: {\n DEFAULT : { type: 'boolean' },\n },\n Decline: {\n DEFAULT : { type: 'object', title: 'Decline', CHILDREN: ['reason','isFYI'] },\n },\n declined: {\n PARENTS : { PortCallService: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n delayReasonCode: {\n 'OVS_v3.0.x' : { DEFAULT: { deprecated: true } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n delayReasonCodes: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 3} },\n },\n deliveryTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n departingVesselVoyage: {\n PARENTS : { ShipmentLocation: {} },\n DEFAULT : { type: 'object', title: \"Vessel Voyage\" },\n },\n departure: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDeparture' },\n },\n departureDateTime: {\n PARENTS : { IntermediateCall: {} },\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n depotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n description: {\n PARENTS : { OuterPackaging: {}, InnerPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n descriptionOfGoods: {\n PARENTS : { ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: { type: 'string', maxItems: null, maxLength: 512, items: null, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n descriptionOfGoodsForCustoms: {\n PARENTS : { ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35 } },\n },\n destinationChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/DestinationChargesPaymentTerm' },\n },\n DestinationChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Destination Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n DetailedError: {\n 'OVS_v3.0.x' : { DEFAULT: { required: ['errorCodeText'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','erorCodeMessage'] } },\n DEFAULT : { type: 'object', title: 'Detailed Error', required: ['errorCodeText', 'errorCodeMessage'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','errorCodeMessage'] },\n },\n dimensionUnit: {\n DEFAULT : { type: 'string', enum: ['MTR', 'FOT'] },\n },\n dischargeLocation: {\n PARENTS : {Transport: {$ref:'#/components/schemas/DischargeLocation' } },\n },\n DischargeLocation: {\n DEFAULT : { type: 'object', title: 'Discharge Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility', 'UNLocationCode'] },\n },\n dischargeUnits: {\n DEFAULT : { $ref: '#/components/schemas/DischargeUnits' }\n },\n DischargeUnits: {\n DEFAULT : { type: 'object', title: 'Discharge Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n displayedAddress: {\n PARENTS : { Shipper: {}, ShipperShipper: {}, Consignee: {}, ConsigneeShipper: {}, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {}, NotifyPartyShipper: {} },\n DEFAULT : { type: 'array', maxItems: 6, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfDelivery: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfReceipt: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfDischarge: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfLoad: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedShippedOnBoardReceivedForShipment: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 250 },\n },\n displayedToOrderText: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 6, items: { type: 'string', maxLength: 35 } },\n },\n document: {\n PARENTS : { IssuanceRequest: {} },\n DEFAULT : { $ref: '#/components/schemas/TransportDocument' },\n },\n documentChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64, $ref: '#/components/schemas/DocumentChecksum' },\n },\n DocumentChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n DocumentMetadata: {\n DEFAULT : { type: 'object', title: 'Document Metadata', required: ['name','size','mediaType','documentChecksum'], CHILDREN: ['name','size','mediaType','documentChecksum'] },\n },\n documentParties: {\n 'BKG_v2.0.x' : { PARENTS: {Booking: { $ref: '#/components/schemas/DocumentParties' }, booking: { $ref: '#/components/schemas/DocumentParties' }, amendedBooking: { $ref: '#/components/schemas/DocumentParties' }, CreateBooking: { $ref: '#/components/schemas/DocumentPartiesReq' }, UpdateBooking: {$ref: '#/components/schemas/DocumentPartiesReq'} } },\n// 'BKG_v2.0.1' : { PARENTS: {Booking: { $ref: '#/components/schemas/DocumentParties' }, booking: { $ref: '#/components/schemas/DocumentParties' }, amendedBooking: { $ref: '#/components/schemas/DocumentParties' }, CreateBooking: { $ref: '#/components/schemas/DocumentPartiesReq' }, UpdateBooking: {$ref: '#/components/schemas/DocumentPartiesReq'} } },\n// 'BKG_v2.0.2' : { PARENTS: {Booking: { $ref: '#/components/schemas/DocumentParties' }, booking: { $ref: '#/components/schemas/DocumentParties' }, amendedBooking: { $ref: '#/components/schemas/DocumentParties' }, CreateBooking: { $ref: '#/components/schemas/DocumentPartiesReq' }, UpdateBooking: {$ref: '#/components/schemas/DocumentPartiesReq'} } },\n// 'BKG_v2.0.3' : { PARENTS: {Booking: { $ref: '#/components/schemas/DocumentParties' }, booking: { $ref: '#/components/schemas/DocumentParties' }, amendedBooking: { $ref: '#/components/schemas/DocumentParties' }, CreateBooking: { $ref: '#/components/schemas/DocumentPartiesReq' }, UpdateBooking: {$ref: '#/components/schemas/DocumentPartiesReq'} } },\n PARENTS : { CreateShippingInstructions: { $ref: '#/components/schemas/DocumentPartiesShippingInstructions' }, UpdateShippingInstructions: { $ref: '#/components/schemas/DocumentPartiesShippingInstructions' }, ShippingInstructions: { $ref: '#/components/schemas/DocumentPartiesShippingInstructions' }, TransportDocument: { }, HouseBillOfLading: { $ref: '#/components/schemas/DocumentPartiesHouseBL' } },\n DEFAULT : { $ref: '#/components/schemas/DocumentParties' },\n },\n DocumentParties: {\n 'BKG_v2.0.x' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','issueTo','other'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','other'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','other'] } },\n// 'BKG_v2.0.3' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','other'] } },\n DEFAULT : { type: 'object', title: 'Document Parties', required: ['shipper','issuingParty'], CHILDREN: ['shipper','onBehalfOfShipper','consignee','onBehalfOfConsignee','endorsee','issuingParty','carriersAgentAtDestination','notifyParties','other'] },\n },\n DocumentPartiesReq: {\n DEFAULT : { type: 'object', title: 'Document Parties (Shipper)', required: ['bookingAgent'], CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','issueTo','other'] },\n },\n DocumentPartiesHouseBL: {\n DEFAULT : { type: 'object', title: 'Document Parties (House B/L)', required: ['shipper'], CHILDREN: ['shipper','consignee','notifyParty','seller','buyer','other'] },\n },\n DocumentPartiesShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Document Parties (Shipping Instructions)', required: ['shipper'], CHILDREN: ['shipper','onBehalfOfShipper','consignee','onBehalfOfConsignee','endorsee', 'issueTo', 'seller', 'buyer', 'notifyParties','shippingInstructionsRequestor','other'] },\n },\n draft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n duplicateOfAcceptedEnvelopeTransferChainEntrySignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EblEnvelope: {\n DEFAULT : { type: 'object', title: 'Ebl Envelope', required: ['transportDocument', 'envelopeManifestSignedContent','envelopeTransferChain'], CHILDREN: ['transportDocument', 'envelopeManifestSignedContent','envelopeTransferChain'] },\n },\n eblPlatform: {\n 'EBL_SUR_v3.0.x' : { PARENTS: { Shipper: {}, Consginee: {}, Endorsee: {}, RecipientParty: {}, ActorParty: {} } },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$'},\n },\n eBLVisualisationByCarrier: {\n PARENTS : { IssuanceRequest: {}, EnvelopeManifest: {} },\n DEFAULT : { $ref: '#/components/schemas/SupportingDocument' },\n },\n eBLVisualisationByCarrierChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n email: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^.+@\\\\S+$' },\n },\n EmergencyContactDetails: {\n DEFAULT : { type: 'object', title: 'Emergency Contact Details', required: ['contact', 'phone'], CHILDREN: ['contact','provider','phone','referenceNumber'] },\n },\n emergencyContactDetails: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/EmergencyContactDetails' },\n },\n emptyContainerPickup: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerPickup' },\n },\n EmptyContainerPickup: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Empty Container Pickup', deprecated: null, CHILDREN: ['dateTime','depotReleaseLocation'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Empty Container Pickup', deprecated: null, CHILDREN: ['dateTime','depotReleaseLocation'] } },\n DEFAULT : { type: 'object', title: 'Empty Container Pickup', deprecated: true, CHILDREN: ['dateTime','depotReleaseLocation'] },\n },\n originEmptyContainerPickup: {\n DEFAULT : { $ref: '#/components/schemas/OriginEmptyContainerPickup' },\n },\n OriginEmptyContainerPickup: {\n DEFAULT : { type: 'object', title: 'Origin Empty Container Pickup', CHILDREN: ['dateTime','depotReleaseLocation'] },\n },\n emptyContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n emptyContainerDepotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n EmptyContainerDepotReleaseLocation: {\n DEFAULT : { type: 'object', title: 'Empty Container Depot Release Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n emptyContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerUnits' }\n },\n EmptyContainerUnits: {\n DEFAULT : { type: 'object', title: 'Empty Container Units', oneOf:true },\n },\n emptyIndicatorCode: {\n DEFAULT : { type: 'string', enum: ['LADEN','EMPTY'] },\n },\n EMSNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 7 },\n },\n endOfHoldingTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n endorsee: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/EndorseeShipper' } },\n DEFAULT : { $ref: '#/components/schemas/Endorsee' },\n },\n Endorsee: {\n DEFAULT : { type: 'object', title: 'Endorsee', required: ['partyName','identifyingCodes'], CHILDREN: ['partyName','eblPlatform','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'isNotifyParty'] },\n },\n EndorseeShipper: {\n DEFAULT : { type: 'object', title: 'Endorsee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','eblPlatform','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'isNotifyParty'] },\n },\n endorsementChain: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/EndorsementChainLink' } },\n },\n EndorsementChain: {\n DEFAULT : { type: 'object', title: 'Endorsement Chain', required: ['transportDocumentReference'], CHILDREN: ['transportDocumentReference', 'transportDocumentSubReference', 'carrierSCACCode', 'endorsementChain']},\n },\n EndorsementChainLink: {\n 'EBL_SUR_v3.0.x' : { DEFAULT: { required: ['actionDateTime', 'actionCode', 'actor', 'recipient'] } },\n DEFAULT : { type: 'object', title: 'Endorsement Chain Link', required: ['actionDateTime', 'actionCode', 'actor'], CHILDREN: ['actionDateTime', 'actionCode', 'actor', 'recipient','auditReference'] },\n },\n EnvelopeManifest: {\n DEFAULT : { type: 'object', title: 'Envelope Manifest', required: ['transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum'], CHILDREN: ['transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','eBLVisualisationByCarrier','supportingDocuments'] },\n },\n envelopeManifestSignedContent: {\n DEFAULT : { $ref: '#/components/schemas/EnvelopeManifestSignedContent' },\n },\n EnvelopeManifestSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n envelopeReference: {\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n envelopeTransferChain: {\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/EnvelopeTransferChainEntrySignedContent' } },\n },\n EnvelopeTransferChainEntry: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Chain Entry', required: ['eblPlatform','transportDocumentChecksum','transactions'], CHILDREN: ['eblPlatform','transportDocumentChecksum','previousEnvelopeTransferChainEntrySignedContentChecksum','issuanceManifestSignedContent','controlTrackingRegistry','transactions'] },\n },\n EnvelopeTransferChainEntrySignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EnvelopeTransferFinishedResponse: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Finished Response', required: ['lastEnvelopeTransferChainEntrySignedContentChecksum','responseCode'], CHILDREN: ['lastEnvelopeTransferChainEntrySignedContentChecksum','responseCode', 'duplicateOfAcceptedEnvelopeTransferChainEntrySignedContent', 'reason', 'missingAdditionalDocumentChecksums', 'receivedAdditionalDocumentChecksums'] },\n },\n EnvelopeTransferFinishedResponseSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EnvelopeTransferStartedResponse: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Started Response', required: ['envelopeReference','transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','missingAdditionalDocumentChecksums'], CHILDREN: ['envelopeReference','transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','missingAdditionalDocumentChecksums'] },\n },\n equipment: {\n PARENTS : { UtilizedTransportEquipmentCarrier: { $ref: '#/components/schemas/Equipment' }, UTEquipment: { $ref: '#/components/schemas/RequiredEquipment' }, UtilizedTransportEquipment: { $ref: '#/components/schemas/Equipment' } },\n },\n Equipment: {\n DEFAULT : { type: 'object', title: 'Equipment', required: ['equipmentReference'], CHILDREN: ['equipmentReference','ISOEquipmentCode','tareWeight'] },\n },\n equipmentReference: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, CargoItem: {}, CargoItemShipper: {}, CargoItemHBL: {}, UTEquipmentReference: {}, Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n equipmentReferences: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, CargoItemCarrier: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n errorDateTime: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n errorCode: {\n PARENTS : { DetailedError: {}, errors: {}, IssuanceError: {type: 'string', maxLength: 50, pattern: '^\\\\S+$', format: null, minimum: null, maximum: null } },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 7000, maximum: 9999 },\n },\n erorCodeMessage: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 200 }, PARENTS: { DetailedError: {}, errors: {} } }, \n },\n errorCodeMessage: {\n PARENTS : { DetailedError: {}, errors: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n errorCodeText: {\n PARENTS : { DetailedError: {}, errors: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n ErrorResponse: {\n DEFAULT : { type: 'object', title: 'Error Response', required: ['httpMethod', 'requestUri', 'statusCode', 'statusCodeText','errorDateTime', 'errors'], CHILDREN: ['httpMethod','requestUri','statusCode','statusCodeText','statusCodeMessage','providerCorrelationReference','errorDateTime','errors'] },\n },\n errors: {\n 'OVS_v3.0.x' : { DEFAULT: { minItems: null } },\n PARENTS : { ErrorResponse: {}, IssuanceResponse: {minItems: null, maxItems: 255, items: {$ref: '#/components/schemas/IssuanceError'}} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/DetailedError'} },\n },\n estimatedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n estimatedEmptyContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n eventDateTime: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n eventTypeCode: {\n PARENTS : { TerminalTimestamp: {}, Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ARRI', 'DEPA'] },\n },\n eventClassifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['PLN', 'EST', 'ACT'] },\n },\n expectedArrivalAtPlaceOfDeliveryStartDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedArrivalAtPlaceOfDeliveryEndDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureFromPlaceOfReceiptDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expiryDate: {\n PARENTS : { ExportLicense: {}, ImportLicense: {},ExportLicenseShipper: {}, ImportLicenseShipper: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportDeclarationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n ExportLicense: {\n DEFAULT : { type: 'object', title: 'Export License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ExportLicenseShipper: {\n DEFAULT : { type: 'object', title: 'Export License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n exportLicense: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ExportLicense' },\n },\n exportLicenseExpiryDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportLicenseIssueDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n extendedChargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n extendedContractQuotationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n extendedHSCodes: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, ConsignmentItem: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', items: { type: 'string', minLength: 6, maxLength: 12, pattern: '^\\\\d{6,12}$' } },\n },\n ExtendedNationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code (Extended)', required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n extendedNationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {}, ConsignmentItemHBL: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ExtendedNationalCommodityCode'} },\n },\n Facility: {\n 'JIT_v2.0.0' : { DEFAULT: { CHILDREN: ['facilityCode','facilityCodeListProvider','subFacility'] } },\n DEFAULT : { type: 'object', title: 'Facility', required: ['facilityCode', 'facilityCodeListProvider'], CHILDREN: ['facilityCode','facilityCodeListProvider'] },\n },\n facility: {\n DEFAULT : { $ref: '#/components/schemas/Facility' },\n },\n facilityCode: {\n 'EBL_v3.0.0' : { DEFAULT: { nullable: 'false'} },\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', maxLength: 6, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n facilityName: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { location: {} } },\n PARENTS : { TransportCallLocation: {}, PortScheduleLocation: {}, Location: {}, PlaceOfReceipt: {}, PlaceOfDelivery: {}, OnwardInlandRouting: {}, ContainerPositioningLocation: {}, EmptyContainerDepotReleaseLocation: {}, LoadLocation: {}, DischargeLocation: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n facilitySMDGCode: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { TerminalTimestamp: {}, location: {} } },\n PARENTS : { FacilitySMDGLocation: {}, TransportCallLocation: {}, PortScheduleLocation: {} },\n DEFAULT : { type: 'string', maxLength: 6 },\n },\n FacilitySMDGLocation: {\n DEFAULT : { type: 'object', title: 'Facility SMDG Location', required: ['UNLocationCode','facilitySMDGCode','locationType'] },\n },\n facilityTypeCode: {\n 'OVS_v3.0.x' : { DEFAULT: {pseudoEnum: ['PBPL', 'BRTH'], default: 'BRTH'}},\n 'CS_v1.0.x' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n// 'CS_v1.0.1' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n 'JIT_v2.0.0' : { DEFAULT: { enum: ['PBPL', 'BRTH', 'ANCH'], pseudoEnum: [] }}, // No validation added for description\n DEFAULT : { type: 'string', maxLength: 4},\n },\n facilityCodeListProvider: {\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', enum: ['BIC', 'SMDG'] },\n },\n Feedback: {\n DEFAULT : { type: 'object', title: 'Feedback', required: ['severity', 'code', 'message'], CHILDREN: ['severity', 'code', 'message', 'jsonPath', 'property'] },\n },\n FeedbackElement: {\n DEFAULT : { type: 'object', title: 'Feedback Element', CHILDREN: ['severity', 'message', 'propertyPath'] },\n },\n feedbackElements: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/FeedbackElement' } },\n },\n feedbacks: {\n PARENTS : { ShippingInstructionsData: {}, ShippingInstructions: {}, TransportDocument: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/Feedback' } },\n },\n flag: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n flashPoint: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n floor: {\n 'OVS_v3.0.x' : { DEFAULT: { pattern: null } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 50 },\n },\n footprint: {\n DEFAULT : { type: 'object', CHILDREN: ['co2','co2e','sox','nox','pm10'] }\n },\n forwardDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n freeText: {\n PARENTS : { InvoicePayableAt: {} },\n DEFAULT : { type: 'string', maxLength: 35 }, // In TD invoicePayableAt\n },\n freightPaymentTermCode: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n fullContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n fumigationDateTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n GeoCoordinate: {\n DEFAULT : { type: 'object', title: 'Geo Coordinate', required: ['latitude', 'longitude'], CHILDREN: ['latitude', 'longitude'] },\n },\n geoCoordinate: {\n DEFAULT : { $ref: '#/components/schemas/GeoCoordinate' },\n },\n grossWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/GrossWeight' },\n },\n GrossWeight: {\n DEFAULT : { type: 'object', title: 'Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n handlingInstructions: {\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n haulageChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n height: {\n DEFAULT : { type: 'object', title: 'Height', allOf: true },\n },\n HouseBillOfLading: {\n DEFAULT : { type: 'object', title: 'House Bill of Lading', required: ['houseBillOfLadingReference','isToOrder','methodOfPayment','documentParties','isCargoDeliveredInICS2Zone','routingOfConsignmentCountries','consignmentItems','utilizedTransportEquipments'], CHILDREN: ['houseBillOfLadingReference','isToOrder','placeOfAcceptance','placeOfFinalDelivery','methodOfPayment','documentParties','isCargoDeliveredInICS2Zone','routingOfConsignmentCountries','consignmentItems','utilizedTransportEquipments'] },\n },\n houseBillOfLadingReference: {\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n houseBillOfLadings: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/HouseBillOfLading'} },\n },\n HSCodes: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, ConsignmentItem: { minItems: 1 }, ConsignmentItemShipper: {minItems: 1} },\n DEFAULT : { type: 'array', deprecated: true, items: { type: 'string', minLength: 6, maxLength: 10, pattern: '^\\\\d{6,10}$' } },\n },\n httpMethod: {\n 'OVS_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_SUR_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_ISS_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'BKG_v2.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'CS_v1.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'], pseudoEnum: [] },\n },\n humiditySetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n id: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', maxLength: 100},\n },\n IdentifyingCode: {\n DEFAULT : { type: 'object', title: 'Identifying Code', required: ['codeListProvider', 'partyCode'], CHILDREN: ['codeListProvider','partyCode','codeListName'] },\n },\n identifyingCodes: {\n 'BKG_v2.0.x' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, IssueToParty: { minItems: null }, Party: { minItems: null } } },\n PARENTS : { BookingAgent: { minItems: null }, Shipper: { minItems: null }, ShipperShipper: { minItems: null }, OnBehalfOfShipper: { minItems: null }, OnBehalfOfShipperShipper: { minItems: null }, ShipperHBL: { minItems: null }, Consignee: {}, OnBehalfOfConsignee: {}, OnBehalfOfConsigneeShipper: {}, ConsigneeShipper: { minItems: null }, ConsigneeHBL: { minItems: null }, Endorsee: {}, EndorseeShipper: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null }, PartyShipper: { minItems: null }, PartyHBL: { minItems: null }, IssuingParty: { minItems: null }, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: { minItems: null }, NotifyParty: { minItems: null }, NotifyPartyShipper: { minItems: null }, NotifyPartyHBL: { minItems: null }, Seller: { minItems: null }, SellerHBL: { minItems: null }, Buyer: { minItems: null }, BuyerHBL: { minItems: null }, ShippingInstructionsRequestor: { minItems: null }, RepresentedActorParty: { minItems: null }, RepresentedRecipientParty: { minItems: null } },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/IdentifyingCode'} },\n },\n imoClass: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 4, pseudoEnum: ['1.1A','1.6N','2.1','8'] },\n },\n imoPackagingCode: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 5, pattern: '^[A-Z0-9]{1,5}$' },\n },\n ImportLicense : {\n DEFAULT : { type: 'object', title: 'Import License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ImportLicenseShipper : {\n DEFAULT : { type: 'object', title: 'Import License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n importLicense : {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ImportLicense' },\n },\n incoTerms: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n inhalationZone: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 1, pseudoEnum: ['A','B','C','D'] },\n },\n InnerPackaging: {\n DEFAULT : { type: 'object', title: 'Inner Packaging', required: ['quantity', 'material', 'description'], CHILDREN: ['quantity','material','description', 'innerPackagings'] },\n },\n innerPackagings: {\n PARENTS : { DangerousGoods: {}, InnerPackaging: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/InnerPackaging' } },\n },\n IntermediateCall: {\n DEFAULT : { type: 'object', title: 'Intermediate Call', required: ['location'], CHILDREN: ['transportCallReference','facilityTypeCode','location','arrivalDateTime','departureDateTime'] },\n },\n intermediateCalls: {\n PARENTS : { Leg: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/IntermediateCall' } },\n },\n InvoicePayableAt: {\n 'BKG_v2.0.x' : { DEFAULT: { type: 'object', title: 'Invoice Payable At', required: ['UNLocationCode'], CHILDREN: ['UNLocationCode'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Invoice Payable At', required: ['UNLocationCode'], CHILDREN: ['UNLocationCode'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { type: 'object', title: 'Invoice Payable At', required: ['UNLocationCode'], CHILDREN: ['UNLocationCode'] } },\n DEFAULT : { type: 'object', title: 'Invoice Payable At', CHILDREN: ['UNLocationCode','freeText'] },\n },\n InvoicePayableAtShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Invoice Payable At (Shipping Instructions)', required: ['UNLocationCode'], CHILDREN: ['UNLocationCode'] },\n },\n invoicePayableAt: {\n PARENTS : { CreateBooking: { $ref: '#/components/schemas/InvoicePayableAt' }, UpdateBooking: { $ref: '#/components/schemas/InvoicePayableAt' }, Booking: { $ref: '#/components/schemas/InvoicePayableAt' }, CreateShippingInstructions: { $ref: '#/components/schemas/InvoicePayableAtShippingInstructions' }, UpdateShippingInstructions: { $ref: '#/components/schemas/InvoicePayableAtShippingInstructions' }, ShippingInstructions: { $ref: '#/components/schemas/InvoicePayableAtShippingInstructions' }, TransportDocument: { }},\n DEFAULT : { $ref: '#/components/schemas/InvoicePayableAt' },\n },\n \n isBulbMode: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isCarriersAgentAtDestinationRequired: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { type: 'boolean' },\n },\n isColdTreatmentRequired: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isCompetentAuthorityApprovalRequired: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isControlledAtmosphereRequired: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isCargoDeliveredInICS2Zone: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, HouseBillOfLading: {} },\n DEFAULT : { type: 'boolean' },\n },\n isDrainholesOpen: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isDummyVessel: {\n PARENTS : { Schedule: {}, VesselVoyage: {}, VesselSchedule: {} },\n DEFAULT : { type: 'boolean' },\n },\n isElectronic: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { type: 'boolean' },\n },\n isEmptyUncleanedResidue: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isEquipmentSubstitutionAllowed: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'boolean' },\n },\n isExceptedQuantity: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isExportDeclarationRequired: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'boolean' },\n },\n isFYI: {\n PARENTS : { Cancel: { writeOnly: null }, Decline: { writeOnly: null }, Omit: { writeOnly: null }, PortCall: {}, TerminalCall: {}, PortCallService: {}, Timestamp: {}, VesselStatus: {}, OmitPortCall: { writeOnly: null }, OmitTerminalCall: { writeOnly: null } },\n DEFAULT : { type: 'boolean', writeOnly: 'true', default: 'false' },\n },\n isGeneratorSetRequired: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isHouseBillOfLadingsIssued: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {} },\n DEFAULT : { type: 'boolean' },\n },\n isHot: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isLimitedQuantity: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isMarinePollutant: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isNonOperatingReefer: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'boolean' },\n },\n isNotifyParty: {\n PARENTS : { Consignee: {}, ConsigneeShipper: {}, Endorsee: {}, EndorseeShipper: {} },\n DEFAULT : { type: 'boolean' },\n },\n ISOEquipmentCode: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, ConfirmedEquipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n isPartialLoadAllowed: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'boolean' },\n },\n isPreCoolingRequired: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isReportableQuantity: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isRequired: {\n DEFAULT : { type: 'boolean' },\n },\n isSalvagePackings: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n isShippedOnBoardType: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'boolean' },\n },\n isShipperOwned: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, UtilizedTransportEquipmentHBL: {}, UTEquipment: {}, UTEquipmentReference: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'boolean' },\n },\n IssuanceError: {\n DEFAULT : { type: 'object', title: 'Issuance Error', CHILDREN: ['reason', 'errorCode'] },\n },\n IssuanceManifest: {\n DEFAULT : { type: 'object', title: 'Issuance Manifest', required: ['documentChecksum', 'issueToChecksum'], CHILDREN: ['documentChecksum', 'eBLVisualisationByCarrierChecksum', 'issueToChecksum'] },\n },\n issuanceManifestSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n IssuanceRequest: {\n DEFAULT : { type: 'object', title: 'Issuance Request', required: ['document', 'issueTo', 'issuanceManifestSignedContent'] },\n },\n IssuanceResponse: {\n DEFAULT : { type: 'object', title: 'Issuance Response', required: ['transportDocumentReference', 'issuanceResponseCode'], CHILDREN: ['transportDocumentReference','transportDocumentSubReference', 'issuanceResponseCode', 'reason', 'errors'] },\n },\n issuanceResponseCode: {\n DEFAULT : { type: 'string', enum: ['ISSU','BREQ', 'REFU'] },\n },\n issueDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {}, ExportLicense: {}, ImportLicense: {}, ExportLicenseShipper: {}, ImportLicenseShipper: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n issueTo: {\n PARENTS : { IssuanceRequest: {}, DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesReq: {} },\n DEFAULT : { $ref: '#/components/schemas/IssueToParty' },\n },\n issueToChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n\n IssueToParty: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['partyName'] } },\n 'EBL_ISS_v3.0.x' : { DEFAULT: { required: ['partyName', 'sendToPlatform', 'identifyingCodes'] } },\n// 'EBL_ISS_v3.0.1' : { DEFAULT: { required: ['partyName', 'sendToPlatform', 'identifyingCodes'] } },\n DEFAULT : { type: 'object', title: 'Issue To Party', required: ['partyName', 'identifyingCodes'], CHILDREN: ['partyName', 'sendToPlatform', 'identifyingCodes', 'taxLegalReferences'] },\n },\n issuingParty: {\n PARENTS : { DocumentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/IssuingParty' },\n },\n IssuingParty: {\n DEFAULT : { type: 'object', title: 'Issuing Party', required: ['partyName', 'address'], CHILDREN: ['partyName','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n isToOrder: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {}, HouseBillOfLading: {} },\n DEFAULT : { type: 'boolean' },\n },\n isVentilationOpen: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isWaste: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n jsonPath: {\n PARENTS : { Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 500 },\n },\n ladenContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/LadenContainerUnits' }\n },\n LadenContainerUnits: {\n DEFAULT : { type: 'object', title: 'Laden Container Units', oneOf:true },\n },\n lashingRequirements: {\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n lastEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n latitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n Leg: {\n DEFAULT : { type: 'object', title: 'Leg', required: ['departure', 'arrival'], CHILDREN: ['sequenceNumber', 'transport', 'departure', 'intermediateCalls', 'arrival','footprint','cutOffTimes'] },\n },\n legs: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Leg'} },\n },\n length: {\n DEFAULT : { type: 'object', title: 'Length', allOf: true },\n },\n lengthOverall: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n liftingInstructions: {\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n liftingPoints: {\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n Limits: {\n DEFAULT : { type: 'object', title: 'Limits', required: ['temperatureUnit'], CHILDREN: ['temperatureUnit','flashPoint','transportControlTemperature','transportEmergencyTemperature','SADT','SAPT'] },\n },\n limits: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/Limits' },\n },\n loadLocation: {\n PARENTS : { Transport: {$ref:'#/components/schemas/LoadLocation' } },\n },\n LoadLocation: {\n DEFAULT : { type: 'object', title: 'Load Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility', 'UNLocationCode' ] },\n },\n loadUnits: {\n DEFAULT : { $ref: '#/components/schemas/LoadUnits' }\n },\n LoadUnits: {\n DEFAULT : { type: 'object', title: 'Load Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n location: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { type: 'object', title: 'Location' }, PARENTS: { TransportCall: {} } },\n 'OVS_v3.0.x' : { PARENTS: { TransportCall: {} } },\n 'CS_v1.0.x' : { PARENTS: { IntermediateCall: { $ref: '#/components/schemas/Location' }, PlaceOfReceipt: { $ref: '#/components/schemas/Location' }, TransportCall: { $ref: '#/components/schemas/TransportCallLocation' }, PortSchedule: { $ref: '#/components/schemas/PortScheduleLocation' }, PlaceOfDelivery: { $ref: '#/components/schemas/Location' }, PlaceOfArrival: { $ref: '#/components/schemas/Location' }, PlaceOfDeparture: { $ref: '#/components/schemas/Location' } } },\n PARENTS : { ShipmentLocation: {}, ContainerPositioning: {$ref: '#/components/schemas/ContainerPositioningLocation'}, ContainerPositioningEstimated: {$ref: '#/components/schemas/ContainerPositioningLocation'} },\n DEFAULT : { $ref: '#/components/schemas/Location' },\n },\n Location: {\n 'CS_v1.0.x' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','facilityName','address','addressLines','UNLocationCode','facility'] } },\n DEFAULT : { type: 'object', title: 'Location', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode','geoCoordinate'] },\n },\n locationName: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { location: {} } },\n 'OVS_v3.0.x' : { PARENTS: { AddressLocation: { pattern: null }, FacilitySMDGLocation: { pattern: null }, UNLocationLocation: { pattern: '^\\\\S+(\\\\s+\\\\S+)*$' } } },\n PARENTS : { PortScheduleLocation: {}, TransportCallLocation:{}, VesselPosition: {}, PortCallServiceLocation: {}, PortCallServiceLocationTimestamp: {}, PlaceOfAcceptance: { maxLength: 35}, PlaceOfFinalDelivery: { maxLength: 35}, PlaceOfReceipt: {}, PortOfLoading: {}, PlaceOfDelivery: {}, PortOfDischarge: {}, OnwardInlandRouting:{}, PlaceOfIssue: {}, PlaceOfBLIssue: {}, Location: {}, ContainerPositioningLocation: {}, EmptyContainerDepotReleaseLocation: {}, LoadLocation: {}, DischargeLocation: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n locationType: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 4 }, PARENTS: { AddressLocation: {}, FacilitySMDGLocation: {}, UNLocationLocation: {} } },\n// PARENTS : { AddressLocation: {}, FacilitySMDGLocation: {}, UNLocationLocation: {} },\n// PARENTS : { AddressLocation: {}, CityLocation: {}, Facility: {}, UNLocationLocation: {}, FacilitySMDGLocation: {} },\n// DEFAULT : { type: 'string', maxLength: 4 },\n },\n locationTypeCode: {\n PARENTS : { ShipmentLocation: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['PRE','POL','POD','PDE','PCF','OIR','ORI','IEL','PTP','RTP','FCD','ROU'] },\n },\n longitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 11 },\n },\n longitudinalOffset: {\n DEFAULT : { type: 'object', title: 'Longitudinal Offset', allOf: true },\n },\n manifestTypeCode: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n material: {\n PARENTS : { InnerPackaging: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n Measurement: {\n DEFAULT : { type: 'object', title: 'Measurement', required: ['value','unit'], CHILDREN: ['value','unit', 'classifier'] },\n },\n mediaType: {\n DEFAULT : { type: 'string', maxLength:100 },\n },\n message: {\n PARENTS : { Feedback: {}, FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n methodOfPayment: {\n DEFAULT : { type: 'string', maxLength: 1, pseudoEnum: ['A','B','C','D','H','Y','Z'] },\n },\n milesToDestinationPort: {\n DEFAULT : { type: 'number', format: 'float' }\n },\n missingAdditionalDocumentChecksums: {\n PARENTS : { EnvelopeTransferFinishedResponse: { minItems: null}, EnvelopeTransferStartedResponse: {} },\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n MMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n modeOfTransport: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n PARENTS : { Transport: { pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] }, VesselTransport: { maxLength: null, enum: ['VESSEL'], pseudoEnum: [] }, BargeTransport: { maxLength: null, enum: ['BARGE'], pseudoEnum: []}, OtherTransport: { maxLength: null, enum: ['RAIL_TRUCK', 'BARGE_TRUCK', 'BARGE_RAIL', 'MULTIMODAL', 'RAIL', 'TRUCK'] } },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n moves: {\n DEFAULT : { $ref: '#/components/schemas/MovesList' }\n },\n Moves: {\n DEFAULT : { type: 'object', title: 'Moves', CHILDREN: ['carrierCode','carrierCodeListProvider','restows'], oneOf: true },\n },\n MovesList: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Moves'} },\n },\n name: {\n 'OVS_HUB_REF_v1.0.x' : { DEFAULT: { maxLength: 50 }, PARENTS: { Vessel: {} } },\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 100, pattern: null }, PARENTS: { address: {} } },\n PARENTS : { DocumentMetadata: {}, Vessel: { maxLength: 50 }, Barge: { maxLength: 50 }, SupportingDocument: {maxLength: 100, pattern: null }, vessel: { maxLength: 50 }, PartyContactDetail: { maxLength: 35 }, PartyContactDetailHBL: { maxLength: 35 }, PartyContactDetailWithPattern: { maxLength: 35 } },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n NANumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n NationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code', deprecated: true, required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n nationalCommodityCode: {\n PARENTS : { ConsignmentItemHBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NationalCommodityCode' },\n },\n nationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { type: 'array', deprecated: true, items: {$ref: '#/components/schemas/NationalCommodityCode'} },\n },\n netExplosiveContent: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetExplosiveContent' },\n },\n NetExplosiveContent: {\n DEFAULT : { type: 'object', title: 'Net Explosive Content', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetWeight' },\n },\n NetWeight: {\n DEFAULT : { type: 'object', title: 'Net Weight', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netVolume: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetVolume' },\n },\n NetVolume: {\n DEFAULT : { type: 'object', title: 'Net Volume', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n newTransportDocumentReferences: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportDocumentRelation' } },\n },\n nox: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n notifyParties: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { items: { $ref: '#/components/schemas/NotifyPartyShipper' } } },\n DEFAULT : { type: 'array', maxItems: 3, items: { $ref: '#/components/schemas/NotifyParty' } },\n },\n notifyParty: {\n PARENTS : { DocumentPartiesHouseBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NotifyPartyHBL' },\n },\n NotifyParty: {\n DEFAULT : { type: 'object', title: 'Notify Party', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n NotifyPartyShipper: {\n DEFAULT : { basedOn: 'NotifyParty', title: 'Notify Party (Shipper provided)' },\n },\n NotifyPartyHBL: {\n DEFAULT : { type: 'object', title: 'Notify Party (House B/L)', required: ['partyName','partyContactDetails', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n number: {\n PARENTS : { Seal: {} },\n DEFAULT : { type: 'string', maxLength: 15 },\n },\n numberOfCopiesWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfCopiesWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfPackages: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {}, OuterPackagingHBL: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1, maximum: 99999999 },\n },\n numberOfRiderPages: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n o2Setpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n oldTransportDocumentReferences: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportDocumentRelation' } },\n },\n omit: {\n DEFAULT : { type: 'boolean' },\n },\n OmitPortCall: {\n DEFAULT : { type: 'object', title: 'Omit Port Call', CHILDREN: ['reason','isFYI'] },\n },\n OmitTerminalCall: {\n DEFAULT : { type: 'object', title: 'Omit Terminal Call', CHILDREN: ['reason','isFYI'] },\n },\n omitted: {\n PARENTS : { PortCall: {}, TerminalCall: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n onBehalfOfConsignee : {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/OnBehalfOfConsigneeShipper' } },\n DEFAULT : { $ref: '#/components/schemas/OnBehalfOfConsignee' },\n },\n OnBehalfOfConsignee: {\n DEFAULT : { type: 'object', title: 'On Behalf of Consignee', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes'] },\n },\n OnBehalfOfConsigneeShipper :{\n DEFAULT : { basedOn: 'OnBehalfOfConsignee', title: 'On Behalf of Consignee (Shipper provided)' },\n },\n onBehalfOfShipper : {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/OnBehalfOfShipperShipper' } },\n DEFAULT : { $ref: '#/components/schemas/OnBehalfOfShipper' },\n },\n OnBehalfOfShipper: {\n DEFAULT : { type: 'object', title: 'On Behalf of Shipper', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes'] },\n },\n OnBehalfOfShipperShipper :{\n DEFAULT : { basedOn: 'OnBehalfOfShipper', title: 'On Behalf of Shipper (Shipper provided)' },\n },\n onCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n overHeight: {\n DEFAULT : { type: 'object', title: 'Over Height', allOf: true },\n },\n overLengthFront: {\n DEFAULT : { type: 'object', title: 'Over Length Front', allOf: true },\n },\n overLengthRear: {\n DEFAULT : { type: 'object', title: 'Over Length Rear', allOf: true },\n },\n overWidthLeft: {\n DEFAULT : { type: 'object', title: 'Over Width Left', allOf: true },\n },\n overWidthRight: {\n DEFAULT : { type: 'object', title: 'Over Width Right', allOf: true },\n },\n isOnDeckOnly: {\n DEFAULT : { type: 'boolean' },\n },\n onwardInlandRouting: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/OnwardInlandRouting' },\n },\n OnwardInlandRouting: {\n DEFAULT : { type: 'object', title: 'Onward Inland Routing', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode'] },\n },\n outOfGaugeQuotationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 70 },\n },\n oogUnits: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n servcieEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'] },\n },\n operatorCarrierCode: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n operatorCarrierCodeListProvider: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n originChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/OriginChargesPaymentTerm' },\n },\n OriginChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Origin Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n OuterPackaging: {\n 'BKG_v2.0.x' : { DEFAULT: { required: null, CHILDREN: ['packageCode','imoPackagingCode','numberOfPackages','description','dangerousGoods'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: null, CHILDREN: ['packageCode','imoPackagingCode','numberOfPackages','description','dangerousGoods'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: null, CHILDREN: ['packageCode','imoPackagingCode','numberOfPackages','description','dangerousGoods'] } },\n DEFAULT : { type: 'object', title: 'Outer Packaging', required: ['numberOfPackages', 'description'], CHILDREN: ['packageCode','imoPackagingCode','numberOfPackages','description','woodDeclaration','dangerousGoods'] },\n },\n outerPackaging: {\n PARENTS : { CargoItemHBL: { $ref: '#/components/schemas/OuterPackagingHBL' }, CommodityShipper: {$ref: '#/components/schemas/OuterPackaging'}, Commodity: {$ref: '#/components/schemas/OuterPackaging'}, CargoItemCarrier: {$ref: '#/components/schemas/OuterPackaging'}, CargoItemShipper: {$ref: '#/components/schemas/OuterPackagingShipper'}, CargoItem: {$ref: '#/components/schemas/OuterPackaging'} },\n },\n OuterPackagingHBL: {\n DEFAULT : { type: 'object', title: 'Outer Packaging (House B/L)', required: ['packageCode'], CHILDREN: ['packageCode','numberOfPackages', 'shippingMarks', 'UNNumber'] },\n },\n OuterPackagingShipper: {\n DEFAULT : { type: 'object', title: 'Outer Packaging (Shipper)', required: ['numberOfPackages', 'description'], CHILDREN: ['packageCode','numberOfPackages','description','woodDeclaration'] },\n },\n OutOfGaugeDetails: {\n DEFAULT : { type: 'object', title: 'Out of Gauge Details', CHILDREN: ['totalCargoDimensions','outOfGaugeExtensions','centerOfGravity','lashingRequirements','handlingInstructions','liftingInstructions','liftingPoints','isOnDeckOnly'] },\n },\n outOfGaugeDetails: {\n DEFAULT : { $ref: '#/components/schemas/OutOfGaugeDetails' },\n },\n OutOfGaugeExtensions: {\n DEFAULT : { type: 'object', title: 'Out of Gauge Extensions', CHILDREN: ['overLengthFront','overLengthRear','overWidthLeft','overWidthRight','overHeight'] },\n },\n outOfGaugeExtensions: {\n DEFAULT : { $ref: '#/components/schemas/OutOfGaugeExtensions' },\n },\n other: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { items: {$ref: '#/components/schemas/OtherDocumentPartyShippingInstructions'} }, DocumentPartiesHouseBL: {items: { $ref: '#/components/schemas/OtherDocumentPartyHBL'} } },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/OtherDocumentParty'} },\n },\n otherChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n OtherDocumentParty: {\n DEFAULT : { type: 'object', title: 'Other Document Party', required: ['party', 'partyFunction'], CHILDREN: ['party','partyFunction'] },\n },\n OtherDocumentPartyHBL: {\n DEFAULT : { type: 'object', title: 'Other Document Party (House B/L)', required: ['party', 'partyFunction'], CHILDREN: ['party','partyFunction'] },\n },\n OtherDocumentPartyShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Other Document Party (Shipping Instructions)', required: ['party', 'partyFunction'], CHILDREN: ['party','partyFunction'] },\n },\n OtherTransport: {\n DEFAULT : { type: 'object', title: 'Other Transport', additionalProperties: 'false', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport'] },\n },\n packageCode: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {}, OuterPackagingHBL: {} },\n DEFAULT : { type: 'string', minLength: 2, maxLength: 2, pattern: '^[A-Z0-9]{2}$' },\n },\n packingGroup: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1, maximum: 3 },\n },\n party: {\n PARENTS : { OtherDocumentParty: {}, OtherDocumentPartyShippingInstructions: { $ref: '#/components/schemas/PartyShipper' }, OtherDocumentPartyHBL: { $ref: '#/components/schemas/PartyHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Party' },\n },\n Party: {\n DEFAULT : { type: 'object', title: 'Party', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n PartyShipper: {\n DEFAULT : { basedOn: 'Party', title: 'Party (Shipper provided)' },\n },\n PartyAddress: {\n DEFAULT : { type: 'object', title: 'Party Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street','streetNumber','floor','postCode','POBox', 'city','UNLocationCode','stateRegion','countryCode'] },\n },\n PartyHBL: {\n DEFAULT : { type: 'object', title: 'Party (House B/L)', required: ['partyName'], CHILDREN: ['partyName','address','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n partyCode: {\n PARENTS : { IdentifyingCode: {}, identifyingCode: {} },\n DEFAULT : { type: 'string', maxLength: 150 },\n },\n partyContactDetails: {\n 'BKG_v2.0.x' : { DEFAULT: {items: {$ref: '#/components/schemas/PartyContactDetail'} },PARENTS: { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingAgent: {minItems: 1}, Shipper: {minItems: 1}, Consignee: {minItems: 1}, ServiceContractOwner: {minItems: 1}, CarrierBookingOffice: {minItems: 1}, Party: {minItems: 1} } },\n PARENTS : { Buyer: {items: {$ref: '#/components/schemas/PartyContactDetailWithPattern'}}, BuyerHBL: {items: {$ref: '#/components/schemas/PartyContactDetailHBL'}}, Seller: {items: {$ref: '#/components/schemas/PartyContactDetailWithPattern'}}, SellerHBL: {items: {$ref: '#/components/schemas/PartyContactDetailHBL'}}, CreateShippingInstructions: {minItems: 1}, UpdateShippingInstructions: {minItems: 1}, ShippingInstructions: {minItems: 1}, shippingInstructions: {minItems: 1}, updatedShippingInstructions: {minItems: 1}, Shipper: {}, ShipperShipper: {}, ShipperHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {}, NotifyPartyShipper: {}, NotifyPartyHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Party: {}, PartyShipper: {}, PartyHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL' } }, CarriersAgentAtDestination: {}, IssuingParty: {}, ShippingInstructionsRequestor: {}, TransportDocument: {minItems: 1}, transportDocument: { minItems: 1 } },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/PartyContactDetail'} },\n },\n PartyContactDetail: {\n DEFAULT : { type: 'object', title: 'Party Contact Detail', required: ['name'], CHILDREN: ['name'] },\n },\n PartyContactDetailHBL: {\n DEFAULT : { type: 'object', title: 'Party Contact Detail (House B/L)', required: ['name'], CHILDREN: ['name'] },\n },\n PartyContactDetailWithPattern: {\n DEFAULT : { type: 'object', title: 'Party Contact Detail (with phone pattern)', required: ['name'], CHILDREN: ['name'] },\n },\n partyFunction: {\n 'BKG_v2.0.0' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI'] } } },\n 'BKG_v2.0.x' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC','CSR'] } } },\n// 'BKG_v2.0.2' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC'] } } },\n PARENTS : { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','SCO'] }, OtherDocumentPartyShippingInstructions: { pseudoEnum: ['DDR','DDS','COW','COX','SCO','CS','MF','WH'] }, OtherDocumentPartyHBL: { pseudoEnum: ['DDR','DDS','CS','MF','WH']} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n partyName: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperShipper: {}, OnBehalfOfShipper: {}, OnBehalfOfShipperShipper: {}, ShipperHBL: {}, Consignee: {}, OnBehalfOfConsignee: {}, OnBehalfOfConsigneeShipper: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, CarrierBookingOffice: {}, Party: {}, PartyShipper: {}, PartyHBL: {}, CarriersAgentAtDestination: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, NotifyPartyShipper: {}, NotifyPartyHBL: {}, Seller: {}, SellerHBL: {}, Buyer: {}, BuyerHBL: {}, ReceiverValidationResponse: {}, ShippingInstructionsRequestor: {}, RepresentedActorParty: {}, RepresentedRecipientParty: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n paymentTermCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n phone: {\n PARENTS : { PartyContactDetail: {}, PartyContactDetailHBL: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, PartyContactDetailWithPattern: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 30, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n placeOfAcceptance: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfAcceptance' },\n },\n PlaceOfAcceptance: {\n DEFAULT : { type: 'object', title: 'Place of Acceptance', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n PlaceOfArrival: {\n DEFAULT : { type: 'object', title: 'Place of Arrival', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['transportCallReference','facilityTypeCode','location','dateTime'] },\n },\n placeOfBLIssue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfBLIssue' },\n },\n PlaceOfBLIssue: {\n DEFAULT : { type: 'object', title: 'Place of B/L Issue', oneOf: {UNLocationCode: {}, countryCode: {} }, CHILDREN: ['locationName'] },\n },\n PlaceOfDeparture: {\n DEFAULT : { type: 'object', title: 'Place of Departure', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['transportCallReference','facilityTypeCode','location','dateTime'] },\n },\n placeOfFinalDelivery: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfFinalDelivery' },\n },\n PlaceOfFinalDelivery: {\n DEFAULT : { type: 'object', title: 'Place of Final Delivery', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n placeOfIssue: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfIssue' },\n },\n PlaceOfIssue: {\n DEFAULT : { type: 'object', title: 'Place of Issue', oneOf: true, CHILDREN: ['locationName'] },\n },\n placeOfDelivery: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDelivery' },\n },\n PlaceOfDelivery: {\n 'CS_v1.0.x' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n// 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Delivery', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode','geoCoordinate'] },\n },\n placeOfReceipt: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfReceipt' },\n },\n PlaceOfReceipt: {\n 'CS_v1.0.x' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n// 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Receipt', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode','geoCoordinate'] },\n },\n plannedArrivalDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n plannedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n plannedDepartureDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n pm10: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n POBox: {\n DEFAULT : { type: 'string', maxLength: 20 },\n },\n PointToPoint: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','transitTime','legs'] } },\n DEFAULT : { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','routingReference','transitTime','solutionFootprint','legs'] },\n },\n portCall: {\n DEFAULT : { $ref: '#/components/schemas/PortCall' },\n },\n PortCall: {\n DEFAULT : { type: 'object', title: 'Port Call', required: ['portCallID', 'UNLocationCode','vessel'], CHILDREN: ['portCallID','portVisitReference','UNLocationCode','vessel','omitted','isFYI'] },\n },\n PortCalls: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCall' } },\n },\n portCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallPhaseTypeCode: {\n DEFAULT : { type: 'string', enum: ['INBD', 'ALGS', 'SHIF', 'OUTB'], pseudoEnum: []}, // No validation added for description\n },\n PortCallServices: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCallService' } },\n },\n PortCallService: {\n DEFAULT : { type: 'object', title: 'Port Call Service', required: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallServiceLocation'], CHILDREN: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallPhaseTypeCode','facilityTypeCode','portCallServiceLocation','moves','cancelled','declined','isFYI'] },\n },\n portCallServiceEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'], pseudoEnum: []}, // No validation added for description\n },\n portCallServiceID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallServiceLocation: {\n PARENTS : { PortCallService: { $ref: '#/components/schemas/PortCallServiceLocation' }, Timestamp: { $ref: '#/components/schemas/PortCallServiceLocationTimestamp' } },\n },\n PortCallServiceLocation: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n PortCallServiceLocationTimestamp: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location (Timestamp)', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n portCallServiceTypeCode: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: []}, // No validation added for description\n },\n portChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n portOfDischarge: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfDischarge' },\n },\n PortOfDischarge: {\n DEFAULT : { type: 'object', title: 'Port of Discharge', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n portOfLoading: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfLoading' },\n },\n PortOfLoading: {\n DEFAULT : { type: 'object', title: 'Port of Loading', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n PortSchedule: {\n DEFAULT : { type: 'object', title: 'Port Schedule', required: ['location'], CHILDREN: ['location', 'vesselSchedules'] },\n },\n PortScheduleLocation: {\n DEFAULT : { type: 'object', title: 'Port Schedule Location', CHILDREN: ['locationName','facilityName','UNLocationCode','facilitySMDGCode'] },\n },\n portVisitReference: {\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, PortCall: {}, },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n positionCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', pseudoEnum: ['PBPL', 'BRTH', 'ANCH', 'PORT'] },\n },\n postCode: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 50 } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n preCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n previousEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n property: {\n PARENTS : { ErrorResponse: {}, Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n propertyPath: {\n PARENTS : { FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 1000 },\n },\n provider: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n properShippingName: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 250 },\n },\n providerCorrelationReference: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n publisherRole: {\n DEFAULT : { type: 'string', enum: ['CA', 'AG', 'VSL', 'ATH', 'PLT', 'TWG', 'MOR', 'TR', 'LSH', 'BUK', 'SLU', 'SVP'] },\n },\n purchaseOrderReferences: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n quantity: {\n PARENTS : { InnerPackaging: { type: 'integer', format: 'int32' }, Charge: { type: 'number', format: 'float', minimum: '0' } },\n },\n reason: {\n 'JIT_v2.0.0' : { DEFAULT: { maxLength: 500 } },\n PARENTS : { CancelBookingRequest: {}, EnvelopeTransferFinishedResponse: {maxLength: 255}, IssuanceError: {maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$'}, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, Booking: {}, booking: {}, amendedBooking: {}, data: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, IssuanceResponse: {maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n reasonCode: {\n DEFAULT : { type: 'string', maxLength: 4, pseudoEnum: ['SWTP', 'COD', 'SWI'] },\n },\n reeferPluggedContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/ReeferPluggedContainerUnits' }\n },\n ReeferPluggedContainerUnits: {\n DEFAULT : { type: 'object', title: 'Reefer Plugged Container Units', oneOf:true },\n },\n remark: {\n DEFAULT : { type: 'string', maxLength: 500 },\n },\n receiptTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n receivedAdditionalDocumentChecksums: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n receivedForShipmentDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n ReceiverValidationResponse: {\n DEFAULT : { type: 'object', title: 'Receiver Validation Response', required: ['partyName'], CHILDREN: ['partyName'] },\n },\n recipient: {\n PARENTS : { EndorsementChainLink: {}, Transaction: {} },\n DEFAULT : { $ref: '#/components/schemas/RecipientParty' },\n },\n reference: {\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n Reference: {\n DEFAULT : { type: 'object', title: 'Reference', required: ['type', 'value'], CHILDREN: ['type','value'] },\n },\n ReferenceConsignmentItem: {\n DEFAULT : { type: 'object', title: 'Reference (Consignment Item)', required: ['type', 'values'], CHILDREN: ['type','values'] },\n },\n referenceNumber: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n referencePoint: {\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['BOTTOM_FRONT_LEFT','BOTTOM_FRONT_CENTER','BOTTOM_FRONT_RIGHT','BOTTOM_CENTER_LEFT','BOTTOM_CENTER_CENTER','BOTTOM_CENTER_RIGHT','BOTTOM_REAR_LEFT','BOTTOM_REAR_CENTER','BOTTOM_REAR_RIGHT','MIDDLE_FRONT_LEFT','MIDDLE_FRONT_CENTER','MIDDLE_FRONT_RIGHT','MIDDLE_CENTER_LEFT','MIDDLE_CENTER_CENTER','MIDDLE_CENTER_RIGHT','MIDDLE_REAR_LEFT','MIDDLE_REAR_CENTER','MIDDLE_REAR_RIGHT','TOP_FRONT_LEFT','TOP_FRONT_CENTER','TOP_FRONT_RIGHT','TOP_CENTER_LEFT','TOP_CENTER_CENTER','TOP_CENTER_RIGHT','TOP_REAR_LEFT','TOP_REAR_CENTER','TOP_REAR_RIGHT'] },\n },\n references: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, CreateBooking: { items: {$ref: '#/components/schemas/ReferenceShipper'} }, UpdateBooking: { items: {$ref: '#/components/schemas/ReferenceShipper'} }, Booking: {}, booking: {}, amendedBooking: {}, RequestedEquipment: {}, RequestedEquipmentShipper: { items: {$ref: '#/components/schemas/ReferenceShipper'} }, CommodityShipper: { items: {$ref: '#/components/schemas/ReferenceShipper'} }, Commodity: {}, ConsignmentItem: { items: {$ref: '#/components/schemas/ReferenceConsignmentItem'} }, ConsignmentItemShipper: { items: {$ref: '#/components/schemas/ReferenceConsignmentItem'} }, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipmentShipper: {}, TransportDocument: {}, transportDocument: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Reference'} },\n },\n ReferenceShipper: {\n DEFAULT : { type: 'object', title: 'Reference (Shipper)', required: ['type', 'value'], CHILDREN: ['type','value'] },\n },\n replyToTimestampID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n representedParty: {\n PARENTS : { RecipientParty: {$ref: '#/components/schemas/RepresentedRecipientParty'}, ActorParty: {$ref: '#/components/schemas/RepresentedActorParty'} },\n },\n RepresentedActorParty: {\n DEFAULT : { type: 'object', title: 'Represented Party', required: ['partyName'],CHILDREN: ['partyName','identifyingCodes'] },\n },\n RepresentedRecipientParty: {\n DEFAULT : { type: 'object', title: 'Represented Party', required: ['partyName'],CHILDREN: ['partyName','identifyingCodes'] },\n },\n RequestedCarrierCertificate: {\n DEFAULT : { type: 'string', maxLength: 100, title: 'Requested Carrier Certificate' },\n },\n RequestedCarrierClause: {\n DEFAULT : { type: 'string', maxLength: 100, title: 'Requested Carrier Clause' },\n },\n requestedCarrierCertificates: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 100, pseudoEnum: ['SHIPMENT_VOYAGE_PARTICULARS_1','SHIPMENT_VOYAGE_PARTICULARS_2','SHIPMENT_VOYAGE_PARTICULARS_3','SHIPMENT_VOYAGE_PARTICULARS_4','SHIPMENT_VOYAGE_PARTICULARS_5','SHIPMENT_VOYAGE_PARTICULARS_6','SHIPMENT_VOYAGE_PARTICULARS_7','VESSEL_PARTICULARS_1','VESSEL_PARTICULARS_2','VESSEL_PARTICULARS_3','VESSEL_PARTICULARS_4','VESSEL_PARTICULARS_5','VESSEL_PARTICULARS_6','VESSEL_PARTICULARS_7','VESSEL_PARTICULARS_8','VESSEL_PARTICULARS_9','VESSEL_PARTICULARS_10','VESSEL_PARTICULARS_11','VESSEL_PARTICULARS_12','VESSEL_PARTICULARS_13','VESSEL_PARTICULARS_14','VESSEL_PARTICULARS_15','VESSEL_PARTICULARS_16','VESSEL_PARTICULARS_17','VESSEL_PARTICULARS_18'] } },\n },\n requestedCarrierClauses: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 100, pseudoEnum: ['CARGO_CARGOSPECIFICS','VESSELCONVEYANCE_COUNTRYSPECIFIC','CARGO_RETURNOFEMPTYCONTAINER','CARGO_CARGOVALUE','CARGO_REEFERTEMPERATURE','CARGO_CONFLICTINGTEMPERATURES_MIXEDLOADS','SHIPPERSLOADSTOWWEIGHTANDCOUNT','INTRANSITCLAUSE'] } },\n },\n requestedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n RequestedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n DEFAULT : { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup','fullContainerPickupDateTime','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities','outOfGaugeDetails'] },\n },\n RequestedEquipmentShipper: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n DEFAULT : { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup','fullContainerPickupDateTime','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences','commodities','outOfGaugeDetails'] },\n },\n requestedEquipments: {\n PARENTS : { CreateBooking: {items: {$ref: '#/components/schemas/RequestedEquipmentShipper'}}, UpdateBooking: {items: {$ref: '#/components/schemas/RequestedEquipmentShipper'}}, Booking: {items: {$ref: '#/components/schemas/RequestedEquipment'}}, booking: {items: {$ref: '#/components/schemas/RequestedEquipment'}}, amendedBooking: {items: {$ref: '#/components/schemas/RequestedEquipment'}} },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n requestedNumberOfTransportDocuments: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n requestedOnCarriageModeOfTransport: {\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] },\n },\n requestedPreCarriageModeOfTransport: {\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] },\n },\n requestUri: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string' },\n },\n RequiredEquipment: {\n DEFAULT : { type: 'object', title: 'Equipment (Required Properties)', required: ['equipmentReference', 'ISOEquipmentCode', 'tareWeight'], CHILDREN: ['equipmentReference','ISOEquipmentCode','tareWeight'] },\n },\n responseCode: {\n DEFAULT : { type: 'string', enum: ['RECE','DUPE','BSIG','BENV','INCD','MDOC','DISE'] },\n },\n restows: {\n DEFAULT : { $ref: '#/components/schemas/Restows' },\n },\n Restows: {\n DEFAULT : { type: 'object', title: 'Restows', oneOf:true },\n },\n role: {\n PARENTS : { VesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['FIRST_SEA_GOING', 'MOTHER'] },\n },\n routingOfConsignmentCountries: {\n DEFAULT : { type: 'array', minItems: 1, items: { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' } },\n },\n routingReference: {\n DEFAULT : { type: 'string', maxLength: 5000, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n SADT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n SAPT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n Schedule: {\n DEFAULT : { type: 'object', title: 'Schedule', required: ['servicePartners', 'isDummyVessel', 'timestamps'] },\n },\n Seal: {\n DEFAULT : { type: 'object', title: 'Seal', required: ['number'], CHILDREN: ['number','source'] },\n },\n seals: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, UtilizedTransportEquipmentShipper: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Seal'} },\n },\n segregationGroups: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: {type: 'string', maxLength: 2, pseudoEnum: ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18'] } },\n },\n selfFilerCode: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n seller: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesHouseBL: { $ref: '#/components/schemas/SellerHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Seller' },\n },\n Seller: {\n DEFAULT : { type: 'object', title: 'Seller', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n SellerHBL: {\n DEFAULT : { type: 'object', title: 'Seller (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n sendToPlatform: {\n PARENTS : { IssueToParty: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$' },\n },\n sequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n serviceContractOwner: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { documentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/ServiceContractOwner' },\n },\n ServiceContractOwner: {\n DEFAULT : { type: 'object', title: 'Service Contract Owner', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference'] },\n },\n serviceContractReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 30 },\n },\n ServicePartner: {\n 'OVS_HUB_REF_v1.0.0' : { DEFAULT: { type: 'object', title: 'Service Partner', required: [ 'carrierSMDGCode','carrierServiceCode' ], CHILDREN: ['carrierSMDGCode', 'carrierServiceName','carrierServiceCode'] } },\n DEFAULT : { type: 'object', title: 'Service Partner', CHILDREN: ['carrierCode','carrierCodeListProvider', 'carrierServiceName','carrierServiceCode','carrierImportVoyageNumber','carrierExportVoyageNumber'] },\n },\n ServicePartnerSchedule: {\n DEFAULT : { type: 'object', title: 'Service Partner Schedule', required: ['carrierServiceName','carrierServiceCode','carrierImportVoyageNumber','carrierExportVoyageNumber'], CHILDREN: ['carrierCode','carrierCodeListProvider','carrierServiceName','carrierServiceCode','carrierImportVoyageNumber','carrierExportVoyageNumber'] },\n },\n servicePartners: {\n PARENTS : { PartnerService: {items: {$ref: '#/components/schemas/ServicePartner' } }, Schedule: {}, VesselTransport: {minItems: null, items: {$ref: '#/components/schemas/ServicePartner' } }, BargeTransport: {minItems: null, items: {$ref: '#/components/schemas/ServicePartner' } } },\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/ServicePartnerSchedule' } },\n },\n ServiceSchedule: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'Service Schedule', required: ['carrierServiceCode','carrierServiceName'], CHILDREN: ['carrierServiceName','carrierServiceCode','universalServiceReference','vesselSchedules'] } },\n DEFAULT : { type: 'object', title: 'Service Schedule', required: ['carrierServiceName', 'carrierServiceCode', 'vesselSchedules'], CHILDREN: ['carrierServiceName','carrierServiceCode','universalServiceReference','vesselSchedules'] },\n },\n severity: {\n PARENTS : { Feedback: {}, FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFO','WARN','ERROR'] },\n },\n shipmentCutOffTimes: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ShipmentCutOffTime'} },\n },\n ShipmentCutOffTime: {\n DEFAULT : { type: 'object', title: 'Shipment Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n ShipmentLocation: {\n DEFAULT : { type: 'object', title: 'Shipment Location', required: ['location', 'locationTypeCode'], CHILDREN: ['location','locationTypeCode', 'departingVesselVoyage'] },\n },\n shipmentLocations: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/ShipmentLocation'} },\n },\n shippedOnBoardDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n shipper: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/ShipperShipper' }, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ShipperHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Shipper' },\n },\n Shipper: {\n 'BKG_v2.0.x' : { DEFAULT: { CHILDREN: ['partyName','eblPlatform','address','addressLines','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference', 'purchaseOrderReferences'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference', 'purchaseOrderReferences'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference', 'purchaseOrderReferences'] } },\n DEFAULT : { type: 'object', title: 'Shipper', required: ['partyName'], CHILDREN: ['partyName','eblPlatform','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference', 'purchaseOrderReferences'] },\n },\n ShipperShipper: {\n DEFAULT : { basedOn: 'Shipper', title: 'Shipper (Shipper provided)' },\n },\n ShipperHBL: {\n DEFAULT : { type: 'object', title: 'Shipper (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n ShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions', required: ['shippingInstructionsStatus', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n shippingInstructions: {\n PARENTS : { ShippingInstructionsData: {} },\n DEFAULT : { $ref: '#/components/schemas/ShippingInstructionsFullNotification' },\n },\n ShippingInstructionsData: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Data', required: ['shippingInstructionsStatus'], CHILDREN: ['shippingInstructionsStatus', 'updatedShippingInstructionsStatus', 'shippingInstructionsReference', 'transportDocumentReference','transportDocumentSubReference', 'feedbacks', 'shippingInstructions', 'updatedShippingInstructions'] }\n },\n ShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Full Notification', allOf: true },\n },\n ShippingInstructionsNotification: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data']},\n },\n shippingInstructionsReference: {\n PARENTS : { CreateShippingInstructionsResponse: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, TransportDocument: {}, transportDocument: {}, ShippingInstructionsData: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n ShippingInstructionsRefCancelStatus: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Cancel Response', required: ['shippingInstructionsStatus'] },\n },\n ShippingInstructionsRefStatus: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Response', required: ['shippingInstructionsStatus'] },\n },\n shippingInstructionsRequestor: {\n PARENTS : { DocumentPartiesShippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/ShippingInstructionsRequestor' },\n },\n ShippingInstructionsRequestor: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Requestor', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes','partyContactDetails'] },\n },\n shippingInstructionsRevisionNumber: {\n DEFAULT : { type: 'integer' },\n },\n shippingInstructionsStatus: {\n PARENTS : { CancelShippingInstructionsUpdate: { pseudoEnum: [] }, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['RECEIVED','PENDING_UPDATE','COMPLETED', 'CANCELLED', 'DECLINED'] },\n },\n shippingMarks: {\n PARENTS : { OuterPackagingHBL: {type: 'string', maxItems: null, maxLength: 512, items: null}, ConsignmentItem: {}, ConsignmentItemShipper: {}, UtilizedTransportEquipment: {}, UtilizedTransportEquipmentShipper: {} },\n DEFAULT : { type: 'array', maxItems: 50, items: {type: 'string', maxLength: 35 } },\n },\n shippingMarksForCustoms: {\n PARENTS : { ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', maxItems: 50, items: {type: 'string', maxLength: 35 } },\n },\n signatureHash: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n size: {\n PARENTS : { DocumentMetadata: {} },\n DEFAULT : { type: 'number', minimum: 1 }\n },\n sox: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n solutionFootprint: {\n DEFAULT : { type: 'object', CHILDREN: ['co2','co2e','sox','nox','pm10'] }\n },\n solutionNumber: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 }\n },\n source: {\n // Removing DCSA_CLOUDEVENT_GROUP in the default in order to handle 'source' inside a 'Seal'\n PARENTS : { ShippingInstructionsNotification: {maxLength: 4096}, TransportDocumentNotification: {maxLength: 4096}, BookingNotification: {maxLength: 4096}, ArrivalNoticeNotification: {maxLength: 4096}, Seal: {enum: ['CAR', 'SHI', 'VET', 'CUS'] } },\n DEFAULT : { type: 'string' },\n },\n SpecificUnits: {\n DEFAULT : { type: 'object', title: 'Specific Units (for load and discharge)', CHILDREN: ['loadUnits', 'dischargeUnits'] },\n },\n specialCertificateNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n specversion: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['1.0'], pseudoEnum: [] },\n },\n stateRegion: {\n PARENTS : { Address:{}, address: {}, AddressHBL: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 65 },\n },\n statusCode: {\n 'OVS_v3.0.2' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'], deprecated: true } }, },\n 'OVS_v3.0.1' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'], deprecated: true } }, },\n 'OVS_v3.0.0' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'] } }, },\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n statusCodes: {\n DEFAULT : { type: 'array', items: { type: 'string', pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR','DRYD','BUNK','OOSV'] } },\n },\n statusCodeMessage: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 200 },\n },\n statusCodeText: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n street: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 100 } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 70 },\n },\n streetNumber: {\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n subFacility: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subscriptionReference: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subsidiaryRisk1: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n subsidiaryRisk2: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n identificationNumber: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 17 },\n },\n SupportingDocument: {\n DEFAULT : { type: 'object', title: 'Supporting Document', required: ['name', 'content'] },\n },\n supportingDocuments: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/DocumentMetadata'} },\n },\n SurrenderRequestAnswer: {\n DEFAULT : { type: 'object', title: 'Surrender Request Answer', required: ['surrenderRequestReference', 'action'] },\n },\n surrenderRequestCode: {\n DEFAULT : { type: 'string', enum: ['SREQ', 'AREQ'] },\n },\n SurrenderRequestDetails: {\n DEFAULT : { type: 'object', title: 'Surrender Request Details', required: ['surrenderRequestReference','transportDocumentReference','surrenderRequestCode'] },\n },\n // SurrenderRequestedBy should be deleted\n SurrenderRequestedBy: {\n DEFAULT : { type: 'object', title: 'Surrender Requested By', required: ['partyName', 'eblPlatform'] },\n },\n surrenderRequestReference: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n tareWeight: {\n PARENTS : { Equipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, RequiredEquipment: {} },\n DEFAULT : { $ref: '#/components/schemas/TareWeight' },\n },\n TareWeight: {\n DEFAULT : { type: 'object', title: 'Tare Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n tareWeightUnit: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n TaxLegalReference: {\n DEFAULT : { type: 'object', title: 'Tax & Legal Reference', required: ['type', 'countryCode', 'value'], CHILDREN: ['type','countryCode','value'] },\n },\n taxLegalReferences: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperShipper: {}, ShipperHBL: {}, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, Party: {}, PartyShipper: {}, PartyHBL: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, NotifyPartyShipper: {}, NotifyPartyHBL: {}, Seller: {}, SellerHBL: {}, Buyer: {}, BuyerHBL: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/TaxLegalReference'} },\n },\n technicalName: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 250 },\n },\n temperatureSetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n temperatureUnit: {\n PARENTS : { ActiveReeferSettings: {}, Limits: {} },\n DEFAULT : { type: 'string', enum: ['CEL', 'FAH'] },\n },\n terminalCall: {\n DEFAULT : { $ref: '#/components/schemas/TerminalCall' },\n },\n TerminalCall: {\n DEFAULT : { type: 'object', title: 'Terminal Call', required: ['terminalCallID','portCallID','carrierServiceName','carrierServiceCode'], CHILDREN: ['terminalCallID','portCallID', 'terminalCallReference', 'terminalCallSequenceNumber','carrierServiceName','carrierServiceCode','universalServiceReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','omitted','isFYI'] },\n },\n TerminalCalls: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TerminalCall' } },\n },\n terminalCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n terminalCallReference: {\n PARENTS : { TerminalCall: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n terminalCallSequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n TerminalTimestamp: {\n DEFAULT : { type: 'object', title: 'Terminal Timestamp', required: ['vesselOperatorSMDGLinerCode','timestampClassifierCode','timestampTypeCode','timestampPositionCode','timestampDateTime'] },\n },\n termsAndConditions: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 50000 },\n },\n time: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', format: 'date-time'},\n },\n Timestamp: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { required: ['typeCode', 'classifierCode', 'positionCode', 'dateTime'], CHILDREN: ['typeCode', 'classifierCode', 'positionCode', 'dateTime'] } },\n 'OVS_v3.0.x' : { DEFAULT: { required: ['eventClassifierCode', 'eventDateTime','eventTypeCode'], CHILDREN: ['eventTypeCode','eventClassifierCode','eventDateTime','delayReasonCode','delayReasonCodes','changeRemark', 'facilityTypeCode']} },\n 'JIT_v2.0.0' : { DEFAULT: { required: ['timestampID','portCallServiceID','classifierCode','dateTime'], CHILDREN: ['timestampID','replyToTimestampID','portCallServiceID','classifierCode','dateTime','portCallServiceLocation','delayReasonCode','remark','isFYI'] } },\n DEFAULT : { type: 'object', title: 'Timestamp', required: ['eventTypeCode', 'eventClassifierCode', 'eventDateTime'], CHILDREN: ['eventTypeCode','eventClassifierCode','eventDateTime'] },\n },\n timestampClassifierCode: {\n PARENTS : { TerminalTimestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT','EST'] },\n },\n timestampDateTime: {\n PARENTS : { TerminalTimestamp: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n timestampPositionCode: {\n PARENTS : { TerminalTimestamp: {} },\n DEFAULT : { type: 'string', pseudoEnum: ['PBPL', 'BRTH', 'ANCH', 'PORT'] },\n },\n timestampID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n timestampPositionCode: {\n PARENTS : { TerminalTimestamp: {} },\n DEFAULT : { type: 'string', pseudoEnum: ['PBPL', 'BRTH', 'ANCH', 'PORT'] },\n },\n timestamps: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'array', minItems: null, items: {$ref: '#/components/schemas/Timestamp'} } },\n PARENTS : { TransportCall: {}, TerminalCall: {}, Schedule: {}, PortCallService: { minItems: null } },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Timestamp'} },\n },\n Timestamps: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/Timestamp' } },\n },\n timestampTypeCode: {\n DEFAULT : { basedOn: 'eventTypeCode' },\n },\n totalCargoDimensions: {\n DEFAULT : { $ref: '#/components/schemas/TotalCargoDimensions' },\n },\n TotalCargoDimensions: {\n DEFAULT : { type: 'object', title: 'Total Cargo Dimensions', CHILDREN: ['length','width','height'] },\n },\n totalUnits: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n TotalEmptyUnits: {\n DEFAULT : { type: 'object', title: 'Total Empty Units', additionalProperties: 'false', required: ['totalUnits'], CHILDREN: ['totalUnits'] },\n },\n TotalLadenUnits: {\n DEFAULT : { type: 'object', title: 'Total Laden Units (Dry)', additionalProperties: 'false', required: ['totalUnits'], CHILDREN: ['totalUnits'] },\n },\n TotalReeferPluggedUnits: {\n DEFAULT : { type: 'object', title: 'Total Reefer Plugged Units', additionalProperties: 'false', required: ['totalUnits'], CHILDREN: ['totalUnits'] },\n },\n TotalUnits: {\n DEFAULT : { type: 'object', title: 'Total Units (Dry + Reefer + OOG)', additionalProperties: 'false', required: ['totalUnits'], CHILDREN: ['totalUnits'] },\n },\n totalRestows: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n TotalRestows: {\n DEFAULT : { type: 'object', title: 'Total units to restow', additionalProperties: 'false', required: ['totalRestows'], CHILDREN: ['totalRestows'] },\n },\n ActorParty: {\n DEFAULT : { type: 'object', title: 'Actor Party', required: ['partyName', 'eblPlatform', 'identifyingCodes'] },\n },\n RecipientParty: {\n DEFAULT : { type: 'object', title: 'Recipient Party', required: ['partyName', 'eblPlatform', 'identifyingCodes'] },\n },\n Transaction: {\n DEFAULT : { type: 'object', title: 'Transaction', required: ['actionCode','actor','actionDateTime'], CHILDREN: ['actionCode','actor','recipient','actionDateTime','reasonCode','comments','auditReference'] },\n },\n transactions: {\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Transaction'} },\n },\n transitTime: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transport: {\n PARENTS : { Leg: {} },\n DEFAULT : { },\n },\n Transport: {\n DEFAULT : { type: 'object', title: 'Transport', required: ['transportPlanStage', 'transportPlanStageSequenceNumber', 'loadLocation', 'dischargeLocation', 'plannedDepartureDate', 'plannedArrivalDate'], CHILDREN: ['transportPlanStage','transportPlanStageSequenceNumber','loadLocation','dischargeLocation','plannedDepartureDate','plannedArrivalDate','modeOfTransport','vesselName','vesselIMONumber','carrierServiceCode','universalServiceReference','carrierImportVoyageNumber','universalImportVoyageReference','carrierExportVoyageNumber','universalExportVoyageReference'] },\n },\n transportCall: {\n DEFAULT : { $ref: '#/components/schemas/TransportCall' },\n },\n TransportCall: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { required: ['carrierImportVoyageNumber','transportCallReference', 'timestamps'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','timestamps'] } },\n 'OVS_v3.0.2' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','statusCodes','timestamps'] } },\n 'OVS_v3.0.1' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','statusCodes','timestamps'] } },\n 'OVS_v3.0.0' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','timestamps'] } },\n 'JIT_v2.0.0' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['transportCallID'], CHILDREN: ['transportCallID', 'transportCallReference', 'transportCallSequenceNumber','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','omitted'] } },\n DEFAULT : { type: 'object', title: 'Transport Call', required: ['transportCallReference', 'carrierImportVoyageNumber', 'timestamps'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','cutOffTimes','location','timestamps'] },\n },\n transportCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n transportCallReference: {\n 'OVS_HUB_TER_v1.0.0' : { DEFAULT: { pseudoEnum: [] } },\n PARENTS : { IntermediateCall: {}, TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: { deprecated: true }, BargeTransport: { deprecated: true }, PlaceOfArrival: {}, PlaceOfDeparture: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n TransportCallLocation: {\n DEFAULT : { type: 'object', title: 'TransportCall Location', CHILDREN: ['locationName','facilityName','address','addressLines','UNLocationCode','facilitySMDGCode'] },\n },\n transportCalls: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { minItems: 1 } },\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportCall' } },\n },\n transportCallSequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transportControlTemperature: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n TransportDocument: {\n 'EBL_PINT_v3.0.0' : { DEFAULT: { $ref: '#/components/schemas/TransportDocument' } },\n 'EBL_v3.0.4' : { DEFAULT: { CHILDREN: ['transportDocumentReference','transportDocumentSubReference','shippingInstructionsReference','transportDocumentStatus','transportDocumentTypeCode','isShippedOnBoardType','freightPaymentTermCode','isElectronic','isToOrder','numberOfCopiesWithCharges','numberOfCopiesWithoutCharges','numberOfOriginalsWithCharges','numberOfOriginalsWithoutCharges','displayedNameForPlaceOfReceipt','displayedNameForPortOfLoad','displayedNameForPortOfDischarge','displayedNameForPlaceOfDelivery','shippedOnBoardDate','displayedShippedOnBoardReceivedForShipment','termsAndConditions','receiptTypeAtOrigin','deliveryTypeAtDestination','cargoMovementTypeAtOrigin','cargoMovementTypeAtDestination','issueDate','receivedForShipmentDate','serviceContractReference','contractQuotationReference','extendedContractQuotationReference','outOfGaugeQuotationReference','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','displayedToOrderText','consignmentItems','utilizedTransportEquipments','exportLicense','importLicense','references','customsReferences','feedbacks'] } },\n 'EBL_v3.0.3' : { DEFAULT: { CHILDREN: ['transportDocumentReference','transportDocumentSubReference','shippingInstructionsReference','transportDocumentStatus','transportDocumentTypeCode','isShippedOnBoardType','freightPaymentTermCode','isElectronic','isToOrder','numberOfCopiesWithCharges','numberOfCopiesWithoutCharges','numberOfOriginalsWithCharges','numberOfOriginalsWithoutCharges','displayedNameForPlaceOfReceipt','displayedNameForPortOfLoad','displayedNameForPortOfDischarge','displayedNameForPlaceOfDelivery','shippedOnBoardDate','displayedShippedOnBoardReceivedForShipment','termsAndConditions','receiptTypeAtOrigin','deliveryTypeAtDestination','cargoMovementTypeAtOrigin','cargoMovementTypeAtDestination','issueDate','receivedForShipmentDate','serviceContractReference','contractQuotationReference','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','consignmentItems','utilizedTransportEquipments','exportLicense','importLicense','references','customsReferences','feedbacks'] } },\n 'EBL_v3.0.2' : { DEFAULT: { CHILDREN: ['transportDocumentReference','transportDocumentSubReference','shippingInstructionsReference','transportDocumentStatus','transportDocumentTypeCode','isShippedOnBoardType','freightPaymentTermCode','isElectronic','isToOrder','numberOfCopiesWithCharges','numberOfCopiesWithoutCharges','numberOfOriginalsWithCharges','numberOfOriginalsWithoutCharges','displayedNameForPlaceOfReceipt','displayedNameForPortOfLoad','displayedNameForPortOfDischarge','displayedNameForPlaceOfDelivery','shippedOnBoardDate','displayedShippedOnBoardReceivedForShipment','termsAndConditions','receiptTypeAtOrigin','deliveryTypeAtDestination','cargoMovementTypeAtOrigin','cargoMovementTypeAtDestination','issueDate','receivedForShipmentDate','serviceContractReference','contractQuotationReference','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','consignmentItems','utilizedTransportEquipments','exportLicense','importLicense','references','customsReferences','feedbacks'] } },\n DEFAULT : { type: 'object', title: 'Transport Document', required: ['transportDocumentReference', 'transportDocumentStatus', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'invoicePayableAt', 'partyContactDetails', 'documentParties', 'consignmentItems', 'utilizedTransportEquipments', 'termsAndConditions', 'receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'carrierCode', 'carrierCodeListProvider', 'transports'], CHILDREN: ['transportDocumentReference','transportDocumentSubReference','shippingInstructionsReference','transportDocumentStatus','transportDocumentTypeCode','isShippedOnBoardType','freightPaymentTermCode','isElectronic','isToOrder','numberOfCopiesWithCharges','numberOfCopiesWithoutCharges','numberOfOriginalsWithCharges','numberOfOriginalsWithoutCharges','displayedNameForPlaceOfReceipt','displayedNameForPortOfLoad','displayedNameForPortOfDischarge','displayedNameForPlaceOfDelivery','shippedOnBoardDate','displayedShippedOnBoardReceivedForShipment','termsAndConditions','receiptTypeAtOrigin','deliveryTypeAtDestination','cargoMovementTypeAtOrigin','cargoMovementTypeAtDestination','issueDate','receivedForShipmentDate','serviceContractReference','contractQuotationReference','extendedContractQuotationReference','outOfGaugeQuotationReference','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','displayedToOrderText','consignmentItems','utilizedTransportEquipments','exportLicense','importLicense','references','customsReferences'] },\n },\n transportDocument: {\n PARENTS : { TransportDocumentData: {}, EblEnvelope: {$ref: '#/components/schemas/TransportDocument'} },\n DEFAULT : { $ref: '#/components/schemas/TransportDocumentFullNotification' }\n },\n TransportDocumentAmend: {\n DEFAULT : { type: 'object', title: 'Transport Document (Amend)', required: ['amendedTransportDocumentStatus', 'amendedTransportDocument'], CHILDREN: ['amendedTransportDocumentStatus', 'amendedTransportDocument'] },\n },\n transportDocumentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n TransportDocumentData: {\n DEFAULT : { type: 'object', title: 'Transport Document Data', required: ['transportDocumentStatus', 'transportDocumentReference'], CHILDREN: ['transportDocumentStatus', 'amendedTransportDocumentStatus', 'shippingInstructionsReference', 'transportDocumentReference','transportDocumentSubReference', 'feedbacks', 'transportDocument', 'amendedTransportDocument'] },\n },\n TransportDocumentFullNotification: {\n DEFAULT : { type: 'object', title: 'Transport Document Full Notification', allOf: true },\n },\n TransportDocumentRefStatus: {\n DEFAULT : { type: 'object', title: 'Transport Document Response', required: ['transportDocumentReference', 'transportDocumentStatus'] },\n },\n TransportDocumentRelation: {\n DEFAULT : { type: 'object', title: 'Transport Document Relation', required: ['transportDocumentReference'], CHILDREN: ['transportDocumentReference', 'transportDocumentSubReference'] },\n },\n transportDocumentReplacements: {\n DEFAULT : { $ref: '#/components/schemas/TransportDocumentReplacements' }\n },\n TransportDocumentReplacements: {\n DEFAULT : { type: 'object', title: 'Transport Document Replacements', CHILDREN: ['oldTransportDocumentReferences', 'newTransportDocumentReferences'] },\n },\n TransportDocumentNotification: {\n DEFAULT : { type: 'object', title: 'Transport Document Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data'] },\n },\n transportDocumentReference: {\n 'BKG_v2.0.0' : {type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n 'BKG_v2.0.1' : {type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n PARENTS : { TransportDocumentRelation: {}, EndorsementChain: {}, ShippingInstructions: {}, shippingInstructions: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, CreateBooking: { deprecated: true }, UpdateBooking: { deprecated: true }, Booking: { deprecated: true }, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, TransportDocumentRefStatus: {}, IssuanceResponse: {}, SurrenderRequestAcknowledgement: {}, ShippingInstructionsData: {}, SurrenderRequestDetails: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n transportDocumentReferences: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n transportDocumentSubReference: {\n PARENTS : { TransportDocumentRelation: {}, EndorsementChain: {}, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, TransportDocumentRefStatus: {}, IssuanceResponse: {}, SurrenderRequestAcknowledgement: {}, ShippingInstructionsData: {}, SurrenderRequestDetails: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n transportDocumentStatus: {\n PARENTS : { ApproveTransportDocument: { pseudoEnum: [] }, TransportDocument: {}, transportDocument: {}, TransportDocumentRefStatus: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['DRAFT','APPROVED','ISSUED','PENDING_SURRENDER_FOR_AMENDMENT','SURRENDERED_FOR_AMENDMENT','VOIDED','PENDING_SURRENDER_FOR_DELIVERY','SURRENDERED_FOR_DELIVERY'] },\n },\n transportDocumentTypeCode: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', enum: ['BOL', 'SWB'] },\n },\n transportEmergencyTemperature: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n transportPlan: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Transport'} },\n },\n transportPlanStage: {\n PARENTS : { Transport: {} },\n DEFAULT : { type: 'string', enum: ['PRC', 'MNC', 'ONC'] },\n },\n transportPlanStageSequenceNumber: {\n PARENTS : { Transport: {} },\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transports: {\n DEFAULT : { $ref: '#/components/schemas/Transports' },\n },\n Transports: {\n DEFAULT : { type: 'object', title: 'Transports', required: ['plannedArrivalDate', 'plannedDepartureDate', 'portOfLoading', 'portOfDischarge', 'vesselVoyages'], CHILDREN: ['plannedArrivalDate','plannedDepartureDate','preCarriageBy','onCarriageBy','placeOfReceipt','portOfLoading','portOfDischarge','placeOfDelivery','onwardInlandRouting','vesselVoyages'] },\n },\n transverseOffset: {\n DEFAULT : { type: 'object', title: 'Transverse Offset', allOf: true },\n },\n type: {\n 'BKG_v2.0.x' : { PARENTS: {\n BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n ExtendedNationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n// 'BKG_v2.0.1' : { PARENTS: {\n// BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n// CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n// Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n// NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n// } },\n// 'BKG_v2.0.2' : { PARENTS: {\n// BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n// CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n// Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n// NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n// } },\n PARENTS : { \n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n Reference: {maxLength: 3, pseudoEnum: ['CR','AKG'] },\n ReferenceConsignmentItem: {maxLength: 3, pseudoEnum: ['CR','AKG','SPO','CPO'] },\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n ArrivalNoticeNotification: {enum: ['org.dcsa.arrival-notice-notification.v1'], pseudoEnum: [] },\n TransportDocumentNotification: {enum: ['org.dcsa.transport-document.v3'], pseudoEnum: [] },\n ShippingInstructionsNotification: {enum: ['org.dcsa.shipping-instructions.v3'], pseudoEnum: [] },\n vessel: {enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n ExtendedNationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n },\n DEFAULT : { type: 'string' },\n },\n typeCode: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { enum: ['ARRI', 'DEPA'] } },\n PARENTS : { Vessel: { enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] } },\n DEFAULT : { type: 'string' },\n },\n typeOfPerson: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: ['NATURAL_PERSON','LEGAL_PERSON','ASSOCIATION_OF_PERSONS'] },\n },\n unit: {\n PARENTS : { \n CargoGrossWeight: {enum: ['KGM', 'LBR']},\n CargoNetWeight: {enum: ['KGM', 'LBR']},\n TareWeight: {enum: ['KGM', 'LBR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossVolume: {enum: ['MTQ', 'FTQ']}, \n NetVolume: {enum: ['MTQ', 'FTQ', 'LTR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossWeight: {enum: ['KGM', 'LBR']}, \n CargoGrossWeightReq: {enum: ['KGM', 'LBR']}, \n GrossWeight: {enum: ['KGM', 'LBR']}, \n CargoNetWeight: {enum: ['KGM', 'LBR']}, \n NetWeight: {enum: ['KGM', 'LBR']}, \n NetExplosiveContent: {enum: ['KGM', 'LBR', 'GRM', 'ONZ']},\n Measurement: { maxLength: 3, pseudoEnum: ['MTR', 'CMT', 'FOT', 'INH'] },\n },\n DEFAULT : { type: 'string' },\n },\n units: {\n PARENTS : { ConfirmedEquipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n unitPrice: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n universalExportVoyageReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: null, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalImportVoyageReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: null, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalServiceReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, Schedule: {}, ServiceSchedule: {}, VesselTransport: {}, BargeTransport: {}, departingVesselVoyage: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', minLength: 8, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' },\n },\n UNLocationCode: {\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^[A-Z]{2}[A-Z2-9]{3}$', pseudoEnum: [] },\n },\n UNLocationLocation: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'UN Location', required: ['UNLocationCode','locationType'] } },\n },\n UNNumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n UpdateBooking: {\n DEFAULT : { type: 'object', title: 'Update Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n UpdateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Update Shipping Instructions', required: ['shippingInstructionsReference', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n updatedShippingInstructions: {\n PARENTS : { ShippingInstructionsData: {} },\n DEFAULT : { $ref: '#/components/schemas/UpdatedShippingInstructionsFullNotification' },\n },\n UpdatedShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Updated Shipping Instructions', allOf: true },\n },\n updatedShippingInstructionsStatus: {\n PARENTS : { CancelShippingInstructionsUpdate: { pseudoEnum: [] }, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['UPDATE_RECEIVED','UPDATE_CONFIRMED','UPDATE_CANCELLED','UPDATE_DECLINED'] },\n },\n UTEquipment: {\n DEFAULT : { type: 'object', title: 'Shipper Owned Equipment (SoC)', required: ['isShipperOwned', 'equipment'], CHILDREN: ['isShipperOwned','equipment'] },\n },\n UTEquipmentReference: {\n DEFAULT : { type: 'object', title: 'Carrier Owned Equipment', required: ['isShipperOwned', 'equipmentReference'], CHILDREN:['isShipperOwned','equipmentReference'] },\n },\n UtilizedTransportEquipment: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment', required: ['equipment', 'isShipperOwned', 'seals'], CHILDREN: ['equipment','isShipperOwned','isNonOperatingReefer','activeReeferSettings','outOfGaugeDetails','shippingMarks','seals','references','customsReferences'] },\n },\n utilizedTransportEquipments: {\n PARENTS : { HouseBillOfLading: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentHBL'}}, CreateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, UpdateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, ShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, shippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, updatedShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, TransportDocument: {items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} }, transportDocument: { items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n UtilizedTransportEquipmentHBL: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (House B/L)', required: ['emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode'], oneOf: true, CHILDREN: ['seals','emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode']},\n },\n UtilizedTransportEquipmentShipper: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (Shipper)', required: ['seals'], oneOf: true, CHILDREN: ['outOfGaugeDetails','shippingMarks','seals','emptyIndicatorCode','references','customsReferences']},\n },\n value: {\n PARENTS : {\n TareWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n NetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n CargoGrossWeightReq: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n GrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetExplosiveContent: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n DetailedError: { type: 'string', maxLength: 500 },\n errors: {type: 'string', maxLength: 500}, \n TaxLegalReference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n Reference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n Measurement: { type: 'number', format: 'float' }\n },\n },\n values: {\n PARENTS : { \n NationalCommodityCode: {}, \n ExtendedNationalCommodityCode: { items: {type: 'string', maxLength: 16, pattern: '^\\\\S(?:.*\\\\S)?$' } }, \n CustomsReference: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n ReferenceConsignmentItem: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n DEFAULT : { type: 'array', minItems: 1, items: {type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n verticalOffset: {\n DEFAULT : { type: 'object', title: 'Vertical Offset', allOf: true },\n },\n vessel: {\n 'CS_v1.0.x' : { DEFAULT: { type: null, title: null, required: null, CHILDREN: null, $ref: '#/components/schemas/Vessel' } },\n// 'CS_v1.0.1' : { DEFAULT: { type: null, title: null, required: null, CHILDREN: null, $ref: '#/components/schemas/Vessel' } },\n PARENTS : { PortCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { $ref: '#/components/schemas/Vessel' },\n },\n Vessel: {\n 'OVS_HUB_REF_v1.0.x' : { DEFAULT: { CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','name','callSign','isDummyVessel']} },\n 'JIT_v2.0.0' : { DEFAULT: { type: 'object', title: 'Vessel', CHILDREN: ['vesselIMONumber','MMSINumber','name','lengthOverall','width','dimensionUnit','callSign','typeCode'] } },\n 'BKG_v2.0.x' : { DEFAULT: { type: 'object', title: 'Vessel', required: ['name'], CHILDREN: ['name','vesselIMONumber'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Vessel', required: ['name'], CHILDREN: ['name','vesselIMONumber'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { type: 'object', title: 'Vessel', required: ['name'], CHILDREN: ['name','vesselIMONumber'] } },\n DEFAULT : { type: 'object', title: 'Vessel', CHILDREN: ['vesselIMONumber','MMSINumber','name','flag','callSign','operatorCarrierCode','operatorCarrierCodeListProvider'] },\n },\n vesselCallSign: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 10, pattern: null }, PARENTs: { VesselSchedule: {} } },\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n vesselCallSignNumber: {\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselIMONumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: 7, pattern: '^\\\\d{7}$' }, PARENTs: { VesselSchedule: {} } },\n PARENTS : { TerminalTimestamp: {}, vessel: {}, Vessel: {}, Transport: {}, VesselVoyage: {}, Barge: {}, VesselSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', minLength: 7, maxLength: 8, pattern: '^\\\\d{7,8}$' },\n },\n vesselMMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n vesselName: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 35, pattern: null, pseudoEnum: [] }, PARENTs: { VesselSchedule: {} } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, VesselVoyage: {}, VesselSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n vesselOperatorCarrierCode: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselOperatorSMDGLinerCode: {\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselOperatorCarrierCodeListProvider: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n vesselPosition: {\n DEFAULT : { $ref: '#/components/schemas/VesselPosition' },\n },\n VesselPosition: {\n DEFAULT : { type: 'object', title: 'Vessel Position', CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n VesselSchedule: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { required: ['vesselOperatorSMDGLinerCode', 'transportCalls'], CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','MMSINumber','vesselName','vesselCallSign','transportCalls'] } },\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel', 'vesselOperatorSMDGLinerCode'], CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','MMSINumber','vesselName','vesselCallSign','isDummyVessel','transportCalls'] } },\n DEFAULT : { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel'], CHILDREN: ['vessel','isDummyVessel','transportCalls'] },\n },\n vesselSchedules: {\n 'OVS_v3.0.x' : { PARENTS: { ServiceSchedule: { minItems: null, items: {$ref: '#/components/schemas/VesselSchedule'} } } },\n PARENTS : { ServiceSchedule: { minItems: 1, items: {$ref: '#/components/schemas/VesselSchedule'} }, PortSchedule: { items: { $ref: '#/components/schemas/Schedule' } } },\n DEFAULT : { type: 'array' },\n },\n VesselStatus: {\n DEFAULT : {type: 'object', title: 'Vessel Status', required: ['portCallServiceID'], CHILDREN: ['portCallServiceID', 'draft','airDraft','aftDraft','forwardDraft','dimensionUnit','vesselPosition','milesToDestinationPort','isFYI']}\n },\n VesselStatuses: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/VesselStatus' } },\n },\n VesselTransport: {\n DEFAULT : { type: 'object', title: 'Vessel Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','vessel'] },\n },\n VesselVoyage: {\n DEFAULT : { type: 'object', title: 'Vessel/Voyage', required: ['vesselName', 'carrierExportVoyageNumber'], CHILDREN: ['vesselName','carrierExportVoyageNumber','universalExportVoyageReference','role'] },\n },\n vesselVoyages: {\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/VesselVoyage'} },\n },\n weightUnit: {\n PARENTS : { Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n width: {\n PARENTS : { Vessel: {}, TotalCargoDimensions: { type: 'object', title: 'Width', format: null, allOf: true } },\n DEFAULT : { type: 'number', format: 'float' }, // JIT\n },\n woodDeclaration: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['NOT_APPLICABLE','NOT_TREATED_AND_NOT_CERTIFIED','PROCESSED','TREATED_AND_CERTIFIED'] },\n },\n};\n\n\n// Makes sure two arrays are equal if:\n// * they are the same array\n// * they have the same size\n// * items on each position in the list are the same\nfunction arraysEqual(a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\n// input: the property (Node) in the API to validate\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// attribute: the attribute to test (type, minLength, required, etc...) if specified correctly\n// requirements: the list of attributes that from the Spectral rule that is valid\n// results: an accumulated list of errors for a particular property\nfunction checkRequirement(input, propertyName, attribute, requirements, results) {\n // Checking 'enum' attribute\n if (attribute === 'enum') {\n // Check that enum values match (= are specified the same way...)\n const enumValuesRequired = requirements[attribute];\n const enumValues = input[attribute];\n if (!arraysEqual(enumValues, enumValuesRequired)) {\n // The two enum lists do not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: [` + enumValuesRequired + `], value provided: [` + enumValues + `]`, }, );\n }\n // Checking 'required' attribute\n } else if (attribute === 'required') {\n // Check that required lists match (= are specified the same way...)\n const requiredValues = requirements[attribute];\n const inputValues = input[attribute];\n if (!arraysEqual(inputValues, requiredValues)) {\n // The two required lists do not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: [` + requiredValues + `], value provided: [` + inputValues + `]`, }, );\n }\n\n // Check that required attributes are part of the Schema (if schema is updated without the required list being updated)\n if (requiredValues && requiredValues.length > 0) {\n if (!input.properties) {\n results.push( { message: propertyName + ` has required child-properties defined...`, }, );\n } else {\n for (let i = 0; i < requiredValues.length; ++i) {\n if (!input.properties[requiredValues[i]]) {\n results.push( { message: propertyName + ` HAS required property ` + requiredValues[i] + ` but it is missing as a child in the schema`, }, );\n }\n }\n }\n }\n // Checking 'items' attribute\n } else if (attribute === 'items') {\n if (input['items'] && requirements['items']) {\n // Check if a $ref MUST be used\n if (Object.keys(input['items']).length === 1 && input['items']['$ref']) {\n // the input contains a $ref\n if (requirements['items']['$ref'] !== input['items']['$ref']) {\n results.push( { message: propertyName + `.` + attribute + ` is defined as a $ref pointing to '` + input['items']['$ref'] + `' - but must be defined ` + (requirements['items']['$ref'] ? `as a $ref pointing to: ` + requirements['items']['$ref'] : `inline`), }, );\n }\n } else if (Object.keys(requirements['items']).length === 1 && requirements['items']['$ref']) {\n // the spec requires a $ref\n if (input['items']['$ref'] !== requirements['items']['$ref']) {\n results.push( { message: propertyName + `.` + attribute + ` is not defined as a $ref and MUST point to: ` + requirements['items']['$ref'], }, );\n }\n } else {\n // Multiple properties defined for an inline defined items\n for (const attribute2 of ATTRIBUTES_TO_CHECK) {\n checkRequirement(input.items, propertyName + '.items', attribute2, requirements.items, results)\n }\n\n // Check Enums and Pseudo-Enums\n checkEnumAndPseudoEnum(input.items, propertyName + '.items', requirements.items, results);\n\n }\n } else {\n if (input['items']) {\n // input.items is defined - but it is not part of the required properties\n results.push( { message: propertyName + `.` + attribute + ` value defined but shouldn't be according to the rules`, }, );\n } else if (requirements['items']) {\n // requirements.items is defined - but it is not part of the input properties\n results.push( { message: propertyName + `.` + attribute + ` value is missing - MUST be defined`, }, );\n }\n }\n } else if ((typeof input[attribute]) === 'boolean' || (typeof input[attribute]) === 'number') {\n // NOTE: It is IMPORTANT to convert to string before comparison otherwise boolean comparison will validate wrong\n if (String(requirements[attribute]) !== String(input[attribute])) {\n // The value provided and the value required does not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: ` + requirements[attribute] + `, value provided: ` + input[attribute], }, );\n }\n\n // Checking a specific attribute\n } else if (requirements[attribute] !== input[attribute]) {\n // The below line was wrongly included - it results in 2 errors in case e.g. Title from spec does not match the accepted value\n // results.push( { message: propertyName + `.` + attribute + ` TYPEOF INPUT VALUE IS: ` + (typeof input[attribute]), }, );\n\n // The value provided and the value required does not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: ` + requirements[attribute] + `, value provided: ` + input[attribute], }, );\n }\n\n // Make sure type attributes that are strings have example attribute value set\n if (attribute === 'type' && requirements[attribute] === \"string\") {\n if (!input['example'] || input['example'].length === 0){\n // Example value missing when type=string - file an error\n results.push( { message: propertyName + `.example attribute must be set with a value`, }, );\n } else if (input['format'] && input['format'] === 'date') {\n // Make sure the example contains an offset or is defined as UTC\n if (input['example'].match(/^.+((Z)|([\\+\\-])(\\d\\d):(\\d\\d))$/)) {\n results.push( { message: propertyName + `.example must not contain an offset or be a UTC date when format=date`, }, );\n }\n } else if (input['format'] && input['format'] === 'date-time') {\n // Make sure the example contains an offset or is defined as UTC\n if (!input['example'].match(/^.+((Z)|([\\+\\-])(\\d\\d):(\\d\\d))$/)) {\n results.push( { message: propertyName + `.example must contain an offset or be UTC if format=date-time`, }, );\n }\n } \n }\n}\n\n// Check two lists against each other and list the differences (disregarding order if items)\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// text: the text to test against (most likely the description field)\n// list: the list of items to check from the Spec\n// isEnum: used for presentation purposes - indicates if it is an enum or a pseudoEnum\n// results: an accumulated list of errors for a particular property\nfunction checkLists(propertyName, text, list, isEnum, results) {\n let match;\n const fullMatches = [];\n const matches = [];\n // Use a loop to find all matches\n\n // IMPORTANT: reset lastIndex because PSEUDO_ENUM_PATTERN is global (/g)\n PSEUDO_ENUM_PATTERN.lastIndex = 0;\n\n while ((match = PSEUDO_ENUM_PATTERN.exec(text)) !== null) {\n fullMatches.push(match[0]);\n matches.push(match[1]); // Add the first capturing group to the list\n if (false && 'transportDocumentStatus' === propertyName) {\n results.push( { message: propertyName + `.description FULL MATCHES ` + match[0], }, );\n results.push( { message: propertyName + `.description exact MATCHES ` + match[1], }, );\n }\n }\n\n var output = [];\n var formatList = [];\n outer:\n for (let k = 0; k < list.length; ++k) {\n for (let j = 0; j < matches.length; ++j) {\n if (matches[j] === list[k]) {\n if (!fullMatches[j].includes('- `' + list[k] + '`')) {\n formatList.push(list[k]);\n }\n fullMatches.splice(j, 1);\n matches.splice(j, 1);\n continue outer;\n }\n }\n output.push(list[k]);\n }\n\n if (output.length > 0) {\n results.push( { message: propertyName + `.description does not mention ` + (isEnum ? `Enum` : `PseudoEnum`) + ` value(s): [` + output + `]`, }, );\n }\n\n if (matches.length > 0) {\n if (isEnum) {\n results.push( { message: propertyName + `.description contains descriptions for the following Enum-values but they are missing in the Enum list: [` + matches + `]`, }, );\n } else {\n results.push( { message: propertyName + `.description contains descriptions for the following PseudoEnum-values but they are missing in the pseudoEnum-Spec list: [` + matches + `]`, }, );\n }\n }\n\n if (formatList.length > 0) {\n results.push( { message: propertyName + `.description does not follow the agreed pattern for presenting ` + (isEnum ? `an Enum` : `a PseudoEnum`) + `: [` + formatList + `]\\nShould follow the pattern: - \\`...\\` (...)`, }, );\n }\n}\n\nfunction checkEnumAndPseudoEnum(input, propertyName, spec, results) {\n // - Only check for String types\n if ((spec && spec.type && spec.type === 'string' && !spec.format) || (!(spec && spec.type) && input && input.type && input.type === 'string')) {\n if (spec && spec.pseudoEnum) {\n if (spec.pseudoEnum.length === 0) {\n // The description of the property contains PseudoEnum like text but is not a PseudoEnum\n // ** This allows a property description to match PsudeoEnum without being treated as one **\n } else {\n // The spec contains a pseudoEnum pattern that needs to be checked\n if (input && input.description) {\n const matches = input.description.match(PSEUDO_ENUM_PATTERN) || [];\n\n // This property contains PseudoEnum values - make sure they are all present in the description\n checkLists(propertyName, input.description, spec.pseudoEnum, false, results);\n }\n }\n } else {\n // Test the description for Enum or PseudoEnum values-descriptions\n if (input && input.description) {\n if (input.enum) {\n // Test if Enum values are mentioned in the description\n \n checkLists(propertyName, input.description, input.enum, true, results);\n } else {\n // Make sure no PseudoEnum are present in the description\n PSEUDO_ENUM_PATTERN.lastIndex = 0;\n if (PSEUDO_ENUM_PATTERN.test(input.description)) {\n results.push( { message: propertyName + `.description contains a 'PseudoEnum'-pattern but the property is not defined as one.\\nIf this is not a PseudoEnum then the spec must contain 'pseudoEnum: []'`, }, );\n }\n }\n }\n }\n }\n}\n\n// spec: the accumulated spec to validate against in all uses of a property\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// input: the property (Node) in the API to validate\n// results: an accumulated list of errors for a particular property\nfunction checkAttributeRequirements(spec, propertyName, input, results) {\n // Test valid $ref specifications\n if (input && Object.keys(input).length === 1 && input['$ref']) {\n // Make sure correct use of $ref is used\n if (spec && spec['$ref']) {\n if (spec['$ref'] !== input['$ref']) {\n results.push({ message: propertyName + ` - if not defined inline it MUST use a $ref pointing to: ` + spec['$ref'] + ` (currently pointing to: ` + input['$ref'] +`)`, }, );\n }\n } else {\n // The attribute exists only in the API - NOT as a Spectral rule - file an error\n results.push( { message: propertyName + `.$ref is specified - but should be removed as it is not a required attribute`, }, );\n }\n // Don't validate anything else - if specified using a $ref - it must match and nothing else\n return;\n }\n\n // Check Enums and Pseudo-Enums\n checkEnumAndPseudoEnum(input, propertyName, spec, results);\n\n // Run through all properties to check\n for (const attribute of ATTRIBUTES_TO_CHECK) {\n\n // For debugging!!!!\n if (false && (attribute === 'minItems' && propertyName === 'identifyingCodes')) {\n if (input) {\n if ((attribute in input)) {\n results.push( { message: propertyName + `.` + attribute + ` is specified in INPUT and has value:` + input[attribute], }, );\n } else {\n results.push( { message: propertyName + `.` + attribute + ` is NOT specified in INPUT`, }, );\n }\n }\n if (spec) {\n if ((attribute in spec)) {\n results.push( { message: propertyName + `.` + attribute + ` is specified in SPEC and has value:` + spec[attribute], }, );\n results.push( { message: propertyName + `.` + attribute + ` SPEC =` + spec[attribute] + `, typeOf=` + (typeof spec[attribute]), }, );\n results.push( { message: propertyName + `.` + attribute + ` INPUT =` + input[attribute] + `, typeOf=` + (typeof input[attribute]), }, );\n if (String(spec[attribute]) !== String(input[attribute])) {\n results.push( { message: propertyName + `.` + attribute + `: SPEC and INPUT are NOT alligned`, }, );\n } else {\n results.push( { message: propertyName + `.` + attribute + `: SPEC and INPUT are alligned`, }, );\n }\n } else {\n results.push( { message: propertyName + `.` + attribute + ` is NOT specified in SPEC`, }, );\n }\n }\n }\n\n // Check if the property is used in the API\n if (input && (attribute in input)) {\n // ...and check if it also exists in the spec\n if (spec && (attribute in spec)) {\n checkRequirement(input, propertyName, attribute, spec, results);\n } else {\n // The attribute exists only in the API - NOT in the spec - file an error\n results.push( { message: propertyName + `.` + attribute + ` is specified - but should be removed as it is not a required attribute`, }, );\n }\n } else if (spec && (attribute in spec) && (spec[attribute] !== undefined)) {\n // The attribute exists in the spec - NOT in the API (if the attribute is specified as \"Null\" or \"Undefined\" then it is treated just like if it was not specified - this is how you \"overrule\" a specified value)\n if (attribute === 'enum' || attribute === 'required') {\n // Provide better error message for missing enum\n results.push( { message: propertyName + `.` + attribute + ` must contain the list: [` + spec[attribute] + `] but nothing was provided`, }, );\n } else {\n results.push( { message: propertyName + `.` + attribute + ` value must equal: ` + spec[attribute] + ` but nothing was provided`, }, );\n }\n } else {\n // In none of the lists - there is no requirement for this attribute\n }\n }\n\n //Check descriptions\n if (input && input['type'] && input['type'] === 'string' && input['description']) {\n if (input.format && (input.format === 'date' || input.format === 'date-time') && input['description'].match(/iso *8601/i)) {\n results.push( { message: propertyName + `.description contains an invalid reference to ISO 8601 - please remove`, }, );\n }\n } else if (input['type'] && input['type'] !== 'array' && !input['description']) {\n // File an error if no description has been written\n results.push( { message: propertyName + `.description is missing....`, }, );\n }\n\n // Check that children are specified correctly\n if (input && input['type'] && input['type'] === 'object' && spec['CHILDREN']) {\n// if (input.properties && !arraysEqual(Object.keys(input.properties), spec['CHILDREN'])) {\n if (input.properties && !arraysEqual(Array.from(Object.keys(input.properties)), spec['CHILDREN'])) {\n // The two enum lists do not match - file an error\n results.push( { message: propertyName + ` MUST have the following children: [` + spec['CHILDREN'] + `], value provided: [` + Object.keys(input.properties) + `]`, }, );\n }\n // results.push( { message: propertyName + ` looking for children: ` + JSON.stringify(Object.keys(input.properties)) + spec['CHILDREN'], }, );\n }\n}\n\n// specA: the accumulated spec for the property\n// specB: the spec to merge into the accumulated spec. Null removes a property, otherwise it will be added or updated\n// includeParentProperty: weather to use this method to also copy the PARENTS property\nfunction mergeSpecs(specA, specB, includeParentProperty) {\n // Make sure specB exists\n if (specB) {\n // Run through all elements in specB\n for (const [key, value] of Object.entries(specB)) {\n // If value of key in specB is null\n if (!value) {\n // ...and it exists in specA\n specA[key] = undefined;\n// if (specA[key]) {\n// // ...then delete the key in specA!\n// //delete specA[key];\n// }\n // If the key already exists in specA\n } else if (includeParentProperty || key !== 'PARENTS') {\n // ...then update or add the value in specA\n specA[key] = value;\n }\n }\n }\n}\n\n// spec: the spec as defined for the current location\n// parentSpec: the spec as defined for the specific parent node\n// context: a StopLight object containing metadata about the API property being tested\n// index: the parent index of the context.path currently being checked\n// results: an accumulated list of errors for a particular property\n// returns true if location is matched - false if the property is not allowed\nfunction checkParent(spec, parentSpec, context, index, results) {\n // Check if parentSpec is defined\n if (parentSpec) {\n // Find the index of the parentName\n const newIndex = ((context.path.length > (3 + index)) && (context.path[context.path.length - (3 + index)] === 'items')) ?\n (4 + index) : (3 + index);\n // Get the parentName\n const parentPropertyName = context.path[context.path.length - newIndex];\n // Check if the parent spec has defined something for the parentName\n if (parentSpec[parentPropertyName]) {\n // ...if so - merge the spec of the parentSpec with the accumulated spec (excluding PARENTS property)\n mergeSpecs(spec, parentSpec[parentPropertyName], false);\n // ...and recursively check next parent\n return checkParent(spec, parentSpec[parentPropertyName]['PARENTS'], context, newIndex, results);\n } else {\n // Check if we are in a oneOf situation\n if (/^[0-9]+$/.test(parentPropertyName) && (context.path.length > (newIndex + 2)) && parentSpec[context.path[context.path.length - (newIndex + 2)]]) {\n mergeSpecs(spec, parentSpec[context.path[context.path.length - (newIndex + 2)]], false);\n return checkParent(spec, parentSpec[context.path[context.path.length - (newIndex + 2)]]['PARENTS'], context, newIndex + 2, results);\n } else {\n // If the parentName does not exist in the parentSpec - then the property is not allowed in that particular position\n results.push( { message: context.path[context.path.length - 1] + ` is only allowed under one of these parents: [` + Object.keys(parentSpec) + `] - was found under: ` + parentPropertyName, }, );\n return false;\n }\n }\n } else {\n return true;\n }\n}\n\n// property: the Spectral spec to validate against\n// standard: the name of the OAS file (without \".yaml\"-extension)\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// input: the property (Node) in the API to validate\n// context: a StopLight object containing metadata about the API property being tested\n// specs: the specs to test against\n//\nfunction checkStandard(property, standard, propertyName, input, context, specs, results) {\n // Gather all errors in results\n// const results = [];\n\n// let specs = {};\n if (property['DEFAULT'] && property['DEFAULT'].basedOn) {\n const basedOnPropertyName = property['DEFAULT'].basedOn;\n checkStandard(DCSA_PROPERTIES[basedOnPropertyName], standard, basedOnPropertyName, input, context, specs, results);\n }\n mergeSpecs(specs, property['DEFAULT'], false);\n\n // Merge with standard specific specs (if any)\n var standardProperty = property[standard];\n if (standardProperty) {\n mergeSpecs(specs, standardProperty['DEFAULT'], false);\n } else {\n // Check if there is a MINOR default (a 'yyy.x API spec which covers multiple APIs)\n standardProperty = property[standard.replace(/(\\d+\\.\\d+)\\.\\d+$/, '$1.x')];\n if (standardProperty) {\n mergeSpecs(specs, standardProperty['DEFAULT'], false);\n }\n }\n\n // Check if parent requirements should be checked\n if (!NO_PARENT_CHECK.has(standard)) {\n let parentSpecs = {};\n if (standardProperty) {\n // Use the PARENTS from the standard\n mergeSpecs(parentSpecs, standardProperty['PARENTS'], true);\n// if (propertyName === 'documentParties') {\n// results.push( { message: `**** parentSpecs: [` + Object.keys(parentSpecs) + `]`, }, );\n// }\n } else {\n // Use the PARENTS from the default\n mergeSpecs(parentSpecs, property['PARENTS'], true);\n }\n\n // Only merge a possible parent requirement if one has been defined\n if (!isEmptyObject(parentSpecs)) {\n let resultingParentSpecs = {};\n if (!IGNORE_PARENT_CHECK.has(standard)) {\n if (checkParent(resultingParentSpecs, parentSpecs, context, 0, results)) {\n mergeSpecs(specs, resultingParentSpecs)\n }\n }\n }\n }\n}\n\nfunction isEmpty(obj) {\n for (const prop in obj) {\n if (Object.hasOwn(obj, prop)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isEmptyObject(value) {\n if (value == null) {\n // null or undefined\n return false;\n }\n\n if (typeof value !== 'object') {\n // boolean, number, string, function, etc.\n return false;\n }\n\n const proto = Object.getPrototypeOf(value);\n\n // consider `Object.create(null)`, commonly used as a safe map\n // before `Map` support, an empty object as well as `{}`\n if (proto !== null && proto !== Object.prototype) {\n return false;\n }\n\n return isEmpty(value);\n}\n\nexport default createRulesetFunction(\n {\n input: null,\n options: null,\n },\n function checkRequirements(input, options, context) {\n // Get propertyName to check based on the path in the Context\n const propertyName = context.path[context.path.length - 1];\n\n // Get the Standard being tested (this excludes the '.yaml' e.g.: BKG_v2.0.2)\n const standard = context['document']['source'].substring(context['document']['source'].lastIndexOf('/') + 1, context['document']['source'].length - 5);\n\n // Check if the standard is in the list of standards that is currently covered by Spectral\n if (COVERED_STANDARDS.has(standard)) {\n // Get the property in the list of DCSA_PROPERTIES\n const property = DCSA_PROPERTIES[propertyName];\n if (property) {\n // Gather all errors in results\n const results = [];\n // Gather the specs to check against\n let specs = {};\n checkStandard(property, standard, propertyName, input, context, specs, results);\n //results.push( { message: propertyName + ` specs: [` + Object.keys(specs) + `]`, }, );\n\n // Specs is now correct in regard to specification and location\n checkAttributeRequirements(specs, propertyName, input, results);\n\n // Only return a list if it contains something - StopLight requirement!!\n if (results.length > 0) {\n return results;\n }\n } else {\n // the property name not part of DCSA_PROPERTIES\n if (!IGNORE_UNSUPPORTED_PROPERTIES.has(standard)) {\n // if (ERROR_ON_UNSUPPORTED_PROPERTIES) {\n return [ { message: propertyName + ` is not in the list of DCSA supported property names`, }, ];\n }\n }\n }\n }\n);" } ], "extendedDefault": false diff --git a/bkg/v2/BKG_v2.0.5.yaml b/bkg/v2/BKG_v2.0.5.yaml index 13cbc04a..e054e2fa 100644 --- a/bkg/v2/BKG_v2.0.5.yaml +++ b/bkg/v2/BKG_v2.0.5.yaml @@ -2961,11 +2961,11 @@ components: **Note:** If both `contractQuotationReference` and `extendedContractQuotationReference` are provided then `extendedContractQuotationReference` takes precedence and `contractQuotationReference` must be ignored. example: HHL1401 - outOfGaugeQuoteReference: + outOfGaugeQuotationReference: type: string maxLength: 70 description: | - Reference number of the OOG feasibility assessment or commercial quote previously issued by the carrier for this shipment. + Reference number of the Out of Gauge feasibility assessment or commercial quote previously issued by the carrier for this shipment. example: OOG-QUOTE-2026-000123 vessel: $ref: '#/components/schemas/Vessel' @@ -3372,11 +3372,11 @@ components: **Note:** If both `contractQuotationReference` and `extendedContractQuotationReference` are provided then `extendedContractQuotationReference` takes precedence and `contractQuotationReference` must be ignored. example: HHL1401 - outOfGaugeQuoteReference: + outOfGaugeQuotationReference: type: string maxLength: 70 description: | - Reference number of the OOG feasibility assessment or commercial quote previously issued by the carrier for this shipment. + Reference number of the Out of Gauge feasibility assessment or commercial quote previously issued by the carrier for this shipment. example: OOG-QUOTE-2026-000123 vessel: $ref: '#/components/schemas/Vessel' @@ -3849,11 +3849,11 @@ components: **Note:** If both `contractQuotationReference` and `extendedContractQuotationReference` are provided then `extendedContractQuotationReference` takes precedence and `contractQuotationReference` must be ignored. example: HHL1401 - outOfGaugeQuoteReference: + outOfGaugeQuotationReference: type: string maxLength: 70 description: | - Reference number of the OOG feasibility assessment or commercial quote previously issued by the carrier for this shipment. + Reference number of the Out of Gauge feasibility assessment or commercial quote previously issued by the carrier for this shipment. example: OOG-QUOTE-2026-000123 vessel: $ref: '#/components/schemas/Vessel' @@ -6859,13 +6859,13 @@ components: type: string maxLength: 5000 description: | - Lashing or securing requirements applicable to the OOG cargo. + Lashing or securing requirements applicable to the Out of Gauge cargo. example: Cargo to be secured with chain lashings according to approved lashing plan. handlingInstructions: type: string maxLength: 5000 description: | - Handling instructions applicable to the OOG cargo. + Handling instructions applicable to the Out of Gauge cargo. example: Handle with care. Do not stack. Protect exposed components during terminal handling. liftingInstructions: type: string @@ -6892,27 +6892,27 @@ components: type: object title: Total Cargo Dimensions description: | - Overall outer dimensions of the cargo as placed on the equipment unit, representing the full dimensional envelope, including any projections or overhangs. + Overall external dimensions of the cargo envelope in its planned or actual loaded orientation, measured using the longitudinal, transverse and vertical axes of the equipment unit. properties: length: type: object title: Length description: | - Overall length of the dimensional envelope, measured parallel to the longitudinal axis of the equipment unit. + Overall length of the cargo envelope, defined as its maximum extent along the longitudinal axis of the equipment unit. allOf: - $ref: '#/components/schemas/Measurement' width: type: object title: Width description: | - Overall width of the dimensional envelope, measured perpendicular to the longitudinal axis of the equipment unit. + Overall width of the cargo envelope, defined as its maximum extent along the transverse axis of the equipment unit. allOf: - $ref: '#/components/schemas/Measurement' height: type: object title: Height description: | - Overall height of the dimensional envelope, measured from the base of the equipment unit to the highest point of the cargo. + Overall height of the cargo envelope, defined as its maximum extent along the vertical axis of the equipment unit. allOf: - $ref: '#/components/schemas/Measurement' @@ -6923,41 +6923,41 @@ components: type: object title: Out of Gauge Extensions description: | - Directional measurements describing how far the cargo extends beyond the standard equipment envelope. Each value represents only the excess portion, not the total dimension. + Directional measurements describing how far the cargo extends beyond the standard equipment envelope. Each value represents only the excess portion, not the total dimension. For equipment with doors, the front is the end opposite the doors and the rear is the door end. Left and right are determined when looking from the rear toward the front. For equipment without doors, use the orientation defined by the equipment provider. properties: overLengthFront: type: object title: Over Length Front description: | - Distance by which the cargo protrudes beyond the front end (door end) of the equipment unit, measured from the outer face of the equipment's end wall or bolster. + Distance by which the cargo extends beyond the front end of the equipment unit. allOf: - $ref: '#/components/schemas/Measurement' overLengthRear: type: object title: Over Length Rear description: | - Distance by which the cargo protrudes beyond the rear end (non-door end) of the equipment unit, measured from the outer face of the equipment's end wall or bolster. + Distance by which the cargo extends beyond the rear end of the equipment unit. allOf: - $ref: '#/components/schemas/Measurement' overWidthLeft: type: object title: Over Width Left description: | - Distance by which the cargo protrudes beyond the left side of the equipment unit when facing the front (door end), measured from the outer face of the equipment's side wall or rail. + Distance by which the cargo extends beyond the left side of the equipment unit. allOf: - $ref: '#/components/schemas/Measurement' overWidthRight: type: object title: Over Width Right description: | - Distance by which the cargo protrudes beyond the right side of the equipment unit when facing the front (door end), measured from the outer face of the equipment's side wall or rail. + Distance by which the cargo extends beyond the right side of the equipment unit. allOf: - $ref: '#/components/schemas/Measurement' overHeight: type: object title: Over Height description: | - Distance by which the cargo exceeds the standard external height of the equipment unit, measured from the top of the equipment's side rails or top rails to the highest point of the cargo. + Distance by which the cargo extends above the standard upper boundary of the equipment unit. allOf: - $ref: '#/components/schemas/Measurement' diff --git a/ebl/v3/EBL_v3.0.4.yaml b/ebl/v3/EBL_v3.0.4.yaml index 97581922..e0cc1a52 100644 --- a/ebl/v3/EBL_v3.0.4.yaml +++ b/ebl/v3/EBL_v3.0.4.yaml @@ -9059,6 +9059,8 @@ components: example: false activeReeferSettings: $ref: '#/components/schemas/ActiveReeferSettings' + outOfGaugeDetails: + $ref: '#/components/schemas/OutOfGaugeDetails' shippingMarks: type: array maxItems: 50 @@ -9101,6 +9103,8 @@ components: description: | Specifies the container (`equipment`) information, `seals`, `references`, and other related details. properties: + outOfGaugeDetails: + $ref: '#/components/schemas/OutOfGaugeDetails' shippingMarks: type: array maxItems: 50 @@ -9469,6 +9473,231 @@ components: Indicator of whether cargo requires Controlled Atmosphere. example: true + ###################### + # Out of Gauge Details + ###################### + OutOfGaugeDetails: + type: object + title: Out of Gauge Details + description: | + Details related to Out of Gauge cargo for the requested equipment. + properties: + totalCargoDimensions: + $ref: '#/components/schemas/TotalCargoDimensions' + outOfGaugeExtensions: + $ref: '#/components/schemas/OutOfGaugeExtensions' + centerOfGravity: + $ref: '#/components/schemas/CenterOfGravity' + lashingRequirements: + type: string + maxLength: 5000 + description: | + Lashing or securing requirements applicable to the Out of Gauge cargo. + example: Cargo to be secured with chain lashings according to approved lashing plan. + handlingInstructions: + type: string + maxLength: 5000 + description: | + Handling instructions applicable to the Out of Gauge cargo. + example: Handle with care. Do not stack. Protect exposed components during terminal handling. + liftingInstructions: + type: string + maxLength: 5000 + description: | + Instructions describing how to safely lift the equipment unit. Covers crane type, minimum capacity, lifting configuration, and any operational constraints. + example: Lift using certified lifting points only. Spreader beam required. + liftingPoints: + type: string + maxLength: 5000 + description: | + Description of available lifting points on the cargo. + example: Four certified lifting points located on top frame, marked in the lifting plan. + isOnDeckOnly: + type: boolean + description: | + Indicates whether the cargo must only be stowed on deck. + example: false + + ######################## + # Total Cargo Dimensions + ######################## + TotalCargoDimensions: + type: object + title: Total Cargo Dimensions + description: | + Overall external dimensions of the cargo envelope in its planned or actual loaded orientation, measured using the longitudinal, transverse and vertical axes of the equipment unit. + properties: + length: + type: object + title: Length + description: | + Overall length of the cargo envelope, defined as its maximum extent along the longitudinal axis of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + width: + type: object + title: Width + description: | + Overall width of the cargo envelope, defined as its maximum extent along the transverse axis of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + height: + type: object + title: Height + description: | + Overall height of the cargo envelope, defined as its maximum extent along the vertical axis of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + + ######################### + # Out of Gauge Extensions + ######################### + OutOfGaugeExtensions: + type: object + title: Out of Gauge Extensions + description: | + Directional measurements describing how far the cargo extends beyond the standard equipment envelope. Each value represents only the excess portion, not the total dimension. For equipment with doors, the front is the end opposite the doors and the rear is the door end. Left and right are determined when looking from the rear toward the front. For equipment without doors, use the orientation defined by the equipment provider. + properties: + overLengthFront: + type: object + title: Over Length Front + description: | + Distance by which the cargo extends beyond the front end of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overLengthRear: + type: object + title: Over Length Rear + description: | + Distance by which the cargo extends beyond the rear end of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overWidthLeft: + type: object + title: Over Width Left + description: | + Distance by which the cargo extends beyond the left side of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overWidthRight: + type: object + title: Over Width Right + description: | + Distance by which the cargo extends beyond the right side of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overHeight: + type: object + title: Over Height + description: | + Distance by which the cargo extends above the standard upper boundary of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + + ################### + # Center of Gravity + ################### + CenterOfGravity: + type: object + title: Center of Gravity + description: | + Position of the combined center of gravity of all cargo placed on the equipment unit, expressed as offsets from a defined reference point. + properties: + referencePoint: + type: string + maxLength: 30 + description: | + Reference point from which the center of gravity offsets are measured. Possible values: + - `BOTTOM_FRONT_LEFT` (Bottom Front Left) + - `BOTTOM_FRONT_CENTER` (Bottom Front Center) + - `BOTTOM_FRONT_RIGHT` (Bottom Front Right) + - `BOTTOM_CENTER_LEFT` (Bottom Center Left) + - `BOTTOM_CENTER_CENTER` (Bottom Center Center) + - `BOTTOM_CENTER_RIGHT` (Bottom Center Right) + - `BOTTOM_REAR_LEFT` (Bottom Rear Left) + - `BOTTOM_REAR_CENTER` (Bottom Rear Center) + - `BOTTOM_REAR_RIGHT` (Bottom Rear Right) + + - `MIDDLE_FRONT_LEFT` (Middle Front Left) + - `MIDDLE_FRONT_CENTER` (Middle Front Center) + - `MIDDLE_FRONT_RIGHT` (Middle Front Right) + - `MIDDLE_CENTER_LEFT` (Middle Center Left) + - `MIDDLE_CENTER_CENTER` (Middle Center Center) + - `MIDDLE_CENTER_RIGHT` (Middle Center Right) + - `MIDDLE_REAR_LEFT` (Middle Rear Left) + - `MIDDLE_REAR_CENTER` (Middle Rear Center) + - `MIDDLE_REAR_RIGHT` (Middle Rear Right) + + - `TOP_FRONT_LEFT` (Top Front Left) + - `TOP_FRONT_CENTER` (Top Front Center) + - `TOP_FRONT_RIGHT` (Top Front Right) + - `TOP_CENTER_LEFT` (Top Center Left) + - `TOP_CENTER_CENTER` (Top Center Center) + - `TOP_CENTER_RIGHT` (Top Center Right) + - `TOP_REAR_LEFT` (Top Rear Left) + - `TOP_REAR_CENTER` (Top Rear Center) + - `TOP_REAR_RIGHT` (Top Rear Right) + example: BOTTOM_FRONT_LEFT + longitudinalOffset: + type: object + title: Longitudinal Offset + description: | + Longitudinal offset of the center of gravity from the defined reference point. + allOf: + - $ref: '#/components/schemas/Measurement' + transverseOffset: + type: object + title: Transverse Offset + description: | + Transverse offset of the center of gravity from the defined reference point. + allOf: + - $ref: '#/components/schemas/Measurement' + verticalOffset: + type: object + title: Vertical Offset + description: | + Vertical offset of the center of gravity from the defined reference point. + allOf: + - $ref: '#/components/schemas/Measurement' + + ############# + # Measurement + ############# + Measurement: + type: object + title: Measurement + description: | + A measurement containing value and unit along with an optional classification of the value. + properties: + value: + type: number + format: float + description: | + Measurement value expressed in the unit indicated in the unit field. + example: 12500.0 + unit: + type: string + maxLength: 3 + description: | + Unit in which the measurement value is expressed. Possible values: + - `MTR` (metre) + - `CMT` (centimetre) + - `FOT` (foot) + - `INH` (inch) + example: MTR + classifier: + type: string + maxLength: 3 + description: | + Classifier denoting whether a measurement is estimated or confirmed. Possible values: + + - `EST` (Estimated) + - `CON` (Confirmed) + example: CON + required: + - value + - unit + ########################## # Advance Manifest Filings ########################## @@ -10025,6 +10254,12 @@ components: **Note:** If both `contractQuotationReference` and `extendedContractQuotationReference` are provided then `extendedContractQuotationReference` takes precedence and `contractQuotationReference` must be ignored. example: HHL1401 + outOfGaugeQuotationReference: + type: string + maxLength: 70 + description: | + Reference number of the Out of Gauge feasibility assessment or commercial quote previously issued by the carrier for this shipment. + example: OOG-QUOTE-2026-000123 declaredValue: type: number format: float diff --git a/ebl/v3/issuance/EBL_ISS_v3.0.4.yaml b/ebl/v3/issuance/EBL_ISS_v3.0.4.yaml index 3e1a8821..232adfda 100644 --- a/ebl/v3/issuance/EBL_ISS_v3.0.4.yaml +++ b/ebl/v3/issuance/EBL_ISS_v3.0.4.yaml @@ -1022,6 +1022,12 @@ components: **Note:** If both `contractQuotationReference` and `extendedContractQuotationReference` are provided then `extendedContractQuotationReference` takes precedence and `contractQuotationReference` must be ignored. example: HHL1401 + outOfGaugeQuotationReference: + type: string + maxLength: 70 + description: | + Reference number of the Out of Gauge feasibility assessment or commercial quote previously issued by the carrier for this shipment. + example: OOG-QUOTE-2026-000123 declaredValue: type: number format: float @@ -2300,6 +2306,8 @@ components: example: false activeReeferSettings: $ref: '#/components/schemas/ActiveReeferSettings' + outOfGaugeDetails: + $ref: '#/components/schemas/OutOfGaugeDetails' shippingMarks: type: array maxItems: 50 @@ -2528,6 +2536,231 @@ components: Indicator of whether cargo requires Controlled Atmosphere. example: true + ###################### + # Out of Gauge Details + ###################### + OutOfGaugeDetails: + type: object + title: Out of Gauge Details + description: | + Details related to Out of Gauge cargo for the requested equipment. + properties: + totalCargoDimensions: + $ref: '#/components/schemas/TotalCargoDimensions' + outOfGaugeExtensions: + $ref: '#/components/schemas/OutOfGaugeExtensions' + centerOfGravity: + $ref: '#/components/schemas/CenterOfGravity' + lashingRequirements: + type: string + maxLength: 5000 + description: | + Lashing or securing requirements applicable to the Out of Gauge cargo. + example: Cargo to be secured with chain lashings according to approved lashing plan. + handlingInstructions: + type: string + maxLength: 5000 + description: | + Handling instructions applicable to the Out of Gauge cargo. + example: Handle with care. Do not stack. Protect exposed components during terminal handling. + liftingInstructions: + type: string + maxLength: 5000 + description: | + Instructions describing how to safely lift the equipment unit. Covers crane type, minimum capacity, lifting configuration, and any operational constraints. + example: Lift using certified lifting points only. Spreader beam required. + liftingPoints: + type: string + maxLength: 5000 + description: | + Description of available lifting points on the cargo. + example: Four certified lifting points located on top frame, marked in the lifting plan. + isOnDeckOnly: + type: boolean + description: | + Indicates whether the cargo must only be stowed on deck. + example: false + + ######################## + # Total Cargo Dimensions + ######################## + TotalCargoDimensions: + type: object + title: Total Cargo Dimensions + description: | + Overall external dimensions of the cargo envelope in its planned or actual loaded orientation, measured using the longitudinal, transverse and vertical axes of the equipment unit. + properties: + length: + type: object + title: Length + description: | + Overall length of the cargo envelope, defined as its maximum extent along the longitudinal axis of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + width: + type: object + title: Width + description: | + Overall width of the cargo envelope, defined as its maximum extent along the transverse axis of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + height: + type: object + title: Height + description: | + Overall height of the cargo envelope, defined as its maximum extent along the vertical axis of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + + ######################### + # Out of Gauge Extensions + ######################### + OutOfGaugeExtensions: + type: object + title: Out of Gauge Extensions + description: | + Directional measurements describing how far the cargo extends beyond the standard equipment envelope. Each value represents only the excess portion, not the total dimension. For equipment with doors, the front is the end opposite the doors and the rear is the door end. Left and right are determined when looking from the rear toward the front. For equipment without doors, use the orientation defined by the equipment provider. + properties: + overLengthFront: + type: object + title: Over Length Front + description: | + Distance by which the cargo extends beyond the front end of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overLengthRear: + type: object + title: Over Length Rear + description: | + Distance by which the cargo extends beyond the rear end of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overWidthLeft: + type: object + title: Over Width Left + description: | + Distance by which the cargo extends beyond the left side of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overWidthRight: + type: object + title: Over Width Right + description: | + Distance by which the cargo extends beyond the right side of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overHeight: + type: object + title: Over Height + description: | + Distance by which the cargo extends above the standard upper boundary of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + + ################### + # Center of Gravity + ################### + CenterOfGravity: + type: object + title: Center of Gravity + description: | + Position of the combined center of gravity of all cargo placed on the equipment unit, expressed as offsets from a defined reference point. + properties: + referencePoint: + type: string + maxLength: 30 + description: | + Reference point from which the center of gravity offsets are measured. Possible values: + - `BOTTOM_FRONT_LEFT` (Bottom Front Left) + - `BOTTOM_FRONT_CENTER` (Bottom Front Center) + - `BOTTOM_FRONT_RIGHT` (Bottom Front Right) + - `BOTTOM_CENTER_LEFT` (Bottom Center Left) + - `BOTTOM_CENTER_CENTER` (Bottom Center Center) + - `BOTTOM_CENTER_RIGHT` (Bottom Center Right) + - `BOTTOM_REAR_LEFT` (Bottom Rear Left) + - `BOTTOM_REAR_CENTER` (Bottom Rear Center) + - `BOTTOM_REAR_RIGHT` (Bottom Rear Right) + + - `MIDDLE_FRONT_LEFT` (Middle Front Left) + - `MIDDLE_FRONT_CENTER` (Middle Front Center) + - `MIDDLE_FRONT_RIGHT` (Middle Front Right) + - `MIDDLE_CENTER_LEFT` (Middle Center Left) + - `MIDDLE_CENTER_CENTER` (Middle Center Center) + - `MIDDLE_CENTER_RIGHT` (Middle Center Right) + - `MIDDLE_REAR_LEFT` (Middle Rear Left) + - `MIDDLE_REAR_CENTER` (Middle Rear Center) + - `MIDDLE_REAR_RIGHT` (Middle Rear Right) + + - `TOP_FRONT_LEFT` (Top Front Left) + - `TOP_FRONT_CENTER` (Top Front Center) + - `TOP_FRONT_RIGHT` (Top Front Right) + - `TOP_CENTER_LEFT` (Top Center Left) + - `TOP_CENTER_CENTER` (Top Center Center) + - `TOP_CENTER_RIGHT` (Top Center Right) + - `TOP_REAR_LEFT` (Top Rear Left) + - `TOP_REAR_CENTER` (Top Rear Center) + - `TOP_REAR_RIGHT` (Top Rear Right) + example: BOTTOM_FRONT_LEFT + longitudinalOffset: + type: object + title: Longitudinal Offset + description: | + Longitudinal offset of the center of gravity from the defined reference point. + allOf: + - $ref: '#/components/schemas/Measurement' + transverseOffset: + type: object + title: Transverse Offset + description: | + Transverse offset of the center of gravity from the defined reference point. + allOf: + - $ref: '#/components/schemas/Measurement' + verticalOffset: + type: object + title: Vertical Offset + description: | + Vertical offset of the center of gravity from the defined reference point. + allOf: + - $ref: '#/components/schemas/Measurement' + + ############# + # Measurement + ############# + Measurement: + type: object + title: Measurement + description: | + A measurement containing value and unit along with an optional classification of the value. + properties: + value: + type: number + format: float + description: | + Measurement value expressed in the unit indicated in the unit field. + example: 12500.0 + unit: + type: string + maxLength: 3 + description: | + Unit in which the measurement value is expressed. Possible values: + - `MTR` (metre) + - `CMT` (centimetre) + - `FOT` (foot) + - `INH` (inch) + example: MTR + classifier: + type: string + maxLength: 3 + description: | + Classifier denoting whether a measurement is estimated or confirmed. Possible values: + + - `EST` (Estimated) + - `CON` (Confirmed) + example: CON + required: + - value + - unit + ############ # Transports ############ diff --git a/pint/v3/EBL_PINT_v3.0.0.yaml b/pint/v3/EBL_PINT_v3.0.0.yaml index dcc57b5e..0bd35256 100644 --- a/pint/v3/EBL_PINT_v3.0.0.yaml +++ b/pint/v3/EBL_PINT_v3.0.0.yaml @@ -1681,6 +1681,12 @@ components: **Note:** If both `contractQuotationReference` and `extendedContractQuotationReference` are provided then `extendedContractQuotationReference` takes precedence and `contractQuotationReference` must be ignored. example: HHL1401 + outOfGaugeQuotationReference: + type: string + maxLength: 70 + description: | + Reference number of the Out of Gauge feasibility assessment or commercial quote previously issued by the carrier for this shipment. + example: OOG-QUOTE-2026-000123 declaredValue: type: number format: float @@ -2959,6 +2965,8 @@ components: example: false activeReeferSettings: $ref: '#/components/schemas/ActiveReeferSettings' + outOfGaugeDetails: + $ref: '#/components/schemas/OutOfGaugeDetails' shippingMarks: type: array maxItems: 50 @@ -3186,6 +3194,231 @@ components: Indicator of whether cargo requires Controlled Atmosphere. example: true + ###################### + # Out of Gauge Details + ###################### + OutOfGaugeDetails: + type: object + title: Out of Gauge Details + description: | + Details related to Out of Gauge cargo for the requested equipment. + properties: + totalCargoDimensions: + $ref: '#/components/schemas/TotalCargoDimensions' + outOfGaugeExtensions: + $ref: '#/components/schemas/OutOfGaugeExtensions' + centerOfGravity: + $ref: '#/components/schemas/CenterOfGravity' + lashingRequirements: + type: string + maxLength: 5000 + description: | + Lashing or securing requirements applicable to the Out of Gauge cargo. + example: Cargo to be secured with chain lashings according to approved lashing plan. + handlingInstructions: + type: string + maxLength: 5000 + description: | + Handling instructions applicable to the Out of Gauge cargo. + example: Handle with care. Do not stack. Protect exposed components during terminal handling. + liftingInstructions: + type: string + maxLength: 5000 + description: | + Instructions describing how to safely lift the equipment unit. Covers crane type, minimum capacity, lifting configuration, and any operational constraints. + example: Lift using certified lifting points only. Spreader beam required. + liftingPoints: + type: string + maxLength: 5000 + description: | + Description of available lifting points on the cargo. + example: Four certified lifting points located on top frame, marked in the lifting plan. + isOnDeckOnly: + type: boolean + description: | + Indicates whether the cargo must only be stowed on deck. + example: false + + ######################## + # Total Cargo Dimensions + ######################## + TotalCargoDimensions: + type: object + title: Total Cargo Dimensions + description: | + Overall external dimensions of the cargo envelope in its planned or actual loaded orientation, measured using the longitudinal, transverse and vertical axes of the equipment unit. + properties: + length: + type: object + title: Length + description: | + Overall length of the cargo envelope, defined as its maximum extent along the longitudinal axis of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + width: + type: object + title: Width + description: | + Overall width of the cargo envelope, defined as its maximum extent along the transverse axis of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + height: + type: object + title: Height + description: | + Overall height of the cargo envelope, defined as its maximum extent along the vertical axis of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + + ######################### + # Out of Gauge Extensions + ######################### + OutOfGaugeExtensions: + type: object + title: Out of Gauge Extensions + description: | + Directional measurements describing how far the cargo extends beyond the standard equipment envelope. Each value represents only the excess portion, not the total dimension. For equipment with doors, the front is the end opposite the doors and the rear is the door end. Left and right are determined when looking from the rear toward the front. For equipment without doors, use the orientation defined by the equipment provider. + properties: + overLengthFront: + type: object + title: Over Length Front + description: | + Distance by which the cargo extends beyond the front end of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overLengthRear: + type: object + title: Over Length Rear + description: | + Distance by which the cargo extends beyond the rear end of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overWidthLeft: + type: object + title: Over Width Left + description: | + Distance by which the cargo extends beyond the left side of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overWidthRight: + type: object + title: Over Width Right + description: | + Distance by which the cargo extends beyond the right side of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + overHeight: + type: object + title: Over Height + description: | + Distance by which the cargo extends above the standard upper boundary of the equipment unit. + allOf: + - $ref: '#/components/schemas/Measurement' + + ################### + # Center of Gravity + ################### + CenterOfGravity: + type: object + title: Center of Gravity + description: | + Position of the combined center of gravity of all cargo placed on the equipment unit, expressed as offsets from a defined reference point. + properties: + referencePoint: + type: string + maxLength: 30 + description: | + Reference point from which the center of gravity offsets are measured. Possible values: + - `BOTTOM_FRONT_LEFT` (Bottom Front Left) + - `BOTTOM_FRONT_CENTER` (Bottom Front Center) + - `BOTTOM_FRONT_RIGHT` (Bottom Front Right) + - `BOTTOM_CENTER_LEFT` (Bottom Center Left) + - `BOTTOM_CENTER_CENTER` (Bottom Center Center) + - `BOTTOM_CENTER_RIGHT` (Bottom Center Right) + - `BOTTOM_REAR_LEFT` (Bottom Rear Left) + - `BOTTOM_REAR_CENTER` (Bottom Rear Center) + - `BOTTOM_REAR_RIGHT` (Bottom Rear Right) + + - `MIDDLE_FRONT_LEFT` (Middle Front Left) + - `MIDDLE_FRONT_CENTER` (Middle Front Center) + - `MIDDLE_FRONT_RIGHT` (Middle Front Right) + - `MIDDLE_CENTER_LEFT` (Middle Center Left) + - `MIDDLE_CENTER_CENTER` (Middle Center Center) + - `MIDDLE_CENTER_RIGHT` (Middle Center Right) + - `MIDDLE_REAR_LEFT` (Middle Rear Left) + - `MIDDLE_REAR_CENTER` (Middle Rear Center) + - `MIDDLE_REAR_RIGHT` (Middle Rear Right) + + - `TOP_FRONT_LEFT` (Top Front Left) + - `TOP_FRONT_CENTER` (Top Front Center) + - `TOP_FRONT_RIGHT` (Top Front Right) + - `TOP_CENTER_LEFT` (Top Center Left) + - `TOP_CENTER_CENTER` (Top Center Center) + - `TOP_CENTER_RIGHT` (Top Center Right) + - `TOP_REAR_LEFT` (Top Rear Left) + - `TOP_REAR_CENTER` (Top Rear Center) + - `TOP_REAR_RIGHT` (Top Rear Right) + example: BOTTOM_FRONT_LEFT + longitudinalOffset: + type: object + title: Longitudinal Offset + description: | + Longitudinal offset of the center of gravity from the defined reference point. + allOf: + - $ref: '#/components/schemas/Measurement' + transverseOffset: + type: object + title: Transverse Offset + description: | + Transverse offset of the center of gravity from the defined reference point. + allOf: + - $ref: '#/components/schemas/Measurement' + verticalOffset: + type: object + title: Vertical Offset + description: | + Vertical offset of the center of gravity from the defined reference point. + allOf: + - $ref: '#/components/schemas/Measurement' + + ############# + # Measurement + ############# + Measurement: + type: object + title: Measurement + description: | + A measurement containing value and unit along with an optional classification of the value. + properties: + value: + type: number + format: float + description: | + Measurement value expressed in the unit indicated in the unit field. + example: 12500.0 + unit: + type: string + maxLength: 3 + description: | + Unit in which the measurement value is expressed. Possible values: + - `MTR` (metre) + - `CMT` (centimetre) + - `FOT` (foot) + - `INH` (inch) + example: MTR + classifier: + type: string + maxLength: 3 + description: | + Classifier denoting whether a measurement is estimated or confirmed. Possible values: + + - `EST` (Estimated) + - `CON` (Confirmed) + example: CON + required: + - value + - unit + ############ # Transports ############