From 55d4246ddf37f17bf9659c1b734ea88d86ce6a5b Mon Sep 17 00:00:00 2001 From: "henrik.larsen@dcsa.org" Date: Tue, 25 Nov 2025 17:09:56 +0100 Subject: [PATCH] EBL 3.0: SD-2504: Improve Address description on Buyer, Seller and NotifyParty --- .stoplight/styleguide.json | 2 +- ebl/v3/EBL_v3.0.3.yaml | 73 +++++++++++++++++++++++++++++++++++--- 2 files changed, 69 insertions(+), 6 deletions(-) diff --git a/.stoplight/styleguide.json b/.stoplight/styleguide.json index 6fe845fe..2ddb855d 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 ERROR_ON_UNSUPPORTED_PROPERTIES = true;\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'];\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 // Commercial Schedules\n 'CS_v1.0.0',\n 'CS_v1.0.1',\n 'CS_v1.0.2',\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_END_v3.0.2',\n 'EBL_END_v3.0.3',\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_SUR_v3.0.0',\n 'EBL_SUR_v3.0.1',\n 'EBL_SUR_v3.0.2',\n 'EBL_SUR_v3.0.3',\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]);\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 OnBehalfOfShipper: {$ref: '#/components/schemas/PartyAddress'},\n ShipperHBL: {$ref: '#/components/schemas/Address'},\n Consignee: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfConsignee: {$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 NotifyPartyHBL: { $ref: '#/components/schemas/Address'},\n Seller: { $ref: '#/components/schemas/Address'},\n SellerHBL: { $ref: '#/components/schemas/Address'},\n Buyer: { $ref: '#/components/schemas/Address'},\n BuyerHBL: { $ref: '#/components/schemas/Address'},\n ShippingInstructionsRequestor: { $ref: '#/components/schemas/PartyAddress' },\n Party: {$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// 'CS_v1.0.1' : { 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 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// 'BKG_v2.0.1' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n// 'BKG_v2.0.3' : { 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 ApproveTransportDocument: {\n DEFAULT : { type: 'object', title: 'Approve Transport Document', required: ['transportDocumentStatus'], CHILDREN: ['transportDocumentStatus'] },\n },\n arrival: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfArrival' },\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', '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','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 Update', required: ['updatedShippingInstructionsStatus'], CHILDREN: ['updatedShippingInstructionsStatus'] },\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','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','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','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: {} },\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','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: {} },\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 carrierSMDGCode: {\n DEFAULT : { type: 'string', pattern: '^\\\\S+$', maxLength: 4 },\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','currencyAmount','currencyCode','paymentTermCode','calculationBasis','unitPrice','quantity'] },\n },\n chargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\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: {}, 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 classifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT', 'EST', 'PLN', 'REQ'], pseudoEnum: [] }, // No validation is done on description\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','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: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC','GSBN','WISE','GLEIF','W3C','DNB','FMC','DCSA','ZZZ'] },\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','nationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n Commodity: {\n DEFAULT : { type: 'object', title: 'Commodity', required: ['commodityType'], CHILDREN: ['commoditySubReference', 'commodityType','HSCodes','nationalCommodityCodes','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','address','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences'] } },\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','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences'] },\n },\n ConsigneeShipper: {\n DEFAULT : { type: 'object', title: 'Consignee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences'] },\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','nationalCommodityCodes','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','HSCodes','nationalCommodityCodes','shippingMarks','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','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', 'address', '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)?$' },\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: {}, PartyAddress: {}, AdvanceManifestFiling: {}, TaxLegalReference: {}, CustomsReference: {}, NationalCommodityCode: {} },\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: {}, 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 departure: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDeparture' },\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 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', 'address', '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: {}, Consignee: {}, ConsigneeShipper: {}, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {} },\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 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: { RecipientParty: { pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC', 'NONE'] }, ActorParty: { pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC'] } } },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$', pseudoEnum: EBL_PLATFORM_SOLUTION_PROVIDERS },\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', 'address', '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','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n EndorseeShipper: {\n DEFAULT : { type: 'object', title: 'Endorsee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails'] },\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', 'carrierSMDGCode', '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 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 facilitySMDGCode: {\n PARENTS : { TerminalTimestamp: {}, 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 '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 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: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 50 },\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 haulageChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\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', 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// 'BKG_v2.0.1' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null } } },\n// 'BKG_v2.0.2' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null } } },\n// 'BKG_v2.0.3' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null } } },\n PARENTS : { BookingAgent: { minItems: null }, Shipper: { minItems: null }, OnBehalfOfShipper: { minItems: null }, ShipperHBL: { minItems: null }, Consignee: {}, OnBehalfOfConsignee: {}, ConsigneeShipper: { minItems: null }, ConsigneeHBL: { minItems: null }, Endorsee: {}, EndorseeShipper: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null }, PartyHBL: { minItems: null }, IssuingParty: { minItems: null }, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: { minItems: null }, NotifyParty: { 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'] },\n },\n innerPackagings: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/InnerPackaging' } },\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 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','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 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', 'arrival'] },\n },\n legs: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Leg'} },\n },\n lengthOverall: {\n DEFAULT : { type: 'number', format: 'float' },\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', 'address', '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_v3.0.x' : { PARENTS: { TransportCall: {} } },\n 'CS_v1.0.x' : { PARENTS: { 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// 'CS_v1.0.1' : { PARENTS: { 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','address','UNLocationCode','facility'] } },\n// 'CS_v1.0.1' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','address','UNLocationCode','facility'] } },\n DEFAULT : { type: 'object', title: 'Location', CHILDREN: ['locationName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n locationName: {\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 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 mediaType: {\n DEFAULT : { type: 'string', maxLength:100 },\n },\n message: {\n PARENTS : { Feedback: {} },\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_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', 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', 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 notifyParties: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {} },\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','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\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 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 DEFAULT : { $ref: '#/components/schemas/OnBehalfOfConsignee' },\n },\n OnBehalfOfConsignee: {\n DEFAULT : { type: 'object', title: 'On Behalf of Consignee', required: ['partyName'], CHILDREN: ['partyName','address','identifyingCodes'] },\n },\n onBehalfOfShipper : {\n DEFAULT : { $ref: '#/components/schemas/OnBehalfOfShipper' },\n },\n OnBehalfOfShipper: {\n DEFAULT : { type: 'object', title: 'On Behalf of Shipper', required: ['partyName'], CHILDREN: ['partyName','address','identifyingCodes'] },\n },\n onCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\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','address','facility','UNLocationCode'] },\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 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: {}, 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','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\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// 'BKG_v2.0.1' : { 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// 'BKG_v2.0.2' : { 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: {}, ShipperHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {}, NotifyPartyHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Party: {}, 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'] } } },\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: {}, OnBehalfOfShipper: {}, ShipperHBL: {}, Consignee: {}, OnBehalfOfConsignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, CarrierBookingOffice: {}, Party: {}, PartyHBL: {}, CarriersAgentAtDestination: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, 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: ['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: ['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','address','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','address','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 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','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','UNLocationCode','facilitySMDGCode'] },\n },\n portVisitReference: {\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, PortCall: {}, },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n postCode: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 50 } },\n PARENTS : { Address: {}, address: {}, 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 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 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'] },\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'] },\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 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','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+$', pseudoEnum: EBL_PLATFORM_SOLUTION_PROVIDERS },\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','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 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 : { 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: {} },\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'] },\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: {}, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ShipperHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Shipper' },\n },\n Shipper: {\n 'BKG_v2.0.x' : { DEFAULT: { CHILDREN: ['partyName','address','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','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference', 'purchaseOrderReferences'] },\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','identifyingCodes','partyContactDetails'] },\n },\n shippingInstructionsRevisionNumber: {\n DEFAULT : { type: 'integer' },\n },\n shippingInstructionsStatus: {\n PARENTS : { ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['RECEIVED','PENDING_UPDATE','COMPLETED'] },\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 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 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: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 65 },\n },\n statusCode: {\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: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 70 },\n },\n streetNumber: {\n PARENTS : { Address: {}, address: {}, 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: {}, ShipperHBL: {}, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, Party: {}, PartyHBL: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, 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_v3.0.x' : { DEFAULT: { required: ['eventClassifierCode', 'eventDateTime','eventTypeCode'], CHILDREN: ['eventTypeCode','eventClassifierCode','eventDateTime','delayReasonCode','delayReasonCodes','changeRemark']} },\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 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_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 : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n TransportCallLocation: {\n DEFAULT : { type: 'object', title: 'TransportCall Location', CHILDREN: ['locationName','address','UNLocationCode','facilitySMDGCode'] },\n },\n transportCalls: {\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.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','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','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 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', 'shippingInstructionsReference', 'transportDocumentReference','transportDocumentSubReference', 'feedbacks', 'transportDocument'] },\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 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 : { 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 : { 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 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 } },\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 },\n DEFAULT : { type: 'string' },\n },\n typeCode: {\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 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: {} },\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: {} },\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 },\n },\n values: {\n PARENTS : { \n NationalCommodityCode: {}, \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 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 '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: {} },\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: {} },\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_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'] },\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: {} },\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 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 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 (checkParent(resultingParentSpecs, parentSpecs, context, 0, results)) {\n mergeSpecs(specs, resultingParentSpecs)\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 (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 ERROR_ON_UNSUPPORTED_PROPERTIES = true;\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'];\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 // Commercial Schedules\n 'CS_v1.0.0',\n 'CS_v1.0.1',\n 'CS_v1.0.2',\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_END_v3.0.2',\n 'EBL_END_v3.0.3',\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_SUR_v3.0.0',\n 'EBL_SUR_v3.0.1',\n 'EBL_SUR_v3.0.2',\n 'EBL_SUR_v3.0.3',\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]);\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 OnBehalfOfShipper: {$ref: '#/components/schemas/PartyAddress'},\n ShipperHBL: {$ref: '#/components/schemas/Address'},\n Consignee: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfConsignee: {$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 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 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// 'CS_v1.0.1' : { 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 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// 'BKG_v2.0.1' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n// 'BKG_v2.0.3' : { 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 ApproveTransportDocument: {\n DEFAULT : { type: 'object', title: 'Approve Transport Document', required: ['transportDocumentStatus'], CHILDREN: ['transportDocumentStatus'] },\n },\n arrival: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfArrival' },\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', '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','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 Update', required: ['updatedShippingInstructionsStatus'], CHILDREN: ['updatedShippingInstructionsStatus'] },\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','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','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','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: {} },\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','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: {} },\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 carrierSMDGCode: {\n DEFAULT : { type: 'string', pattern: '^\\\\S+$', maxLength: 4 },\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','currencyAmount','currencyCode','paymentTermCode','calculationBasis','unitPrice','quantity'] },\n },\n chargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\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 classifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT', 'EST', 'PLN', 'REQ'], pseudoEnum: [] }, // No validation is done on description\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','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: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC','GSBN','WISE','GLEIF','W3C','DNB','FMC','DCSA','ZZZ'] },\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','nationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n Commodity: {\n DEFAULT : { type: 'object', title: 'Commodity', required: ['commodityType'], CHILDREN: ['commoditySubReference', 'commodityType','HSCodes','nationalCommodityCodes','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','address','partyContactDetails','identifyingCodes','taxLegalReferences','reference','purchaseOrderReferences'] } },\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','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences'] },\n },\n ConsigneeShipper: {\n DEFAULT : { type: 'object', title: 'Consignee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences'] },\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','nationalCommodityCodes','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','HSCodes','nationalCommodityCodes','shippingMarks','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','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', 'address', '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)?$' },\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: {} },\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: {}, 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 departure: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDeparture' },\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 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', 'address', '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: {}, Consignee: {}, ConsigneeShipper: {}, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {} },\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 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: { RecipientParty: { pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC', 'NONE'] }, ActorParty: { pseudoEnum: ['WAVE','CARX','ESSD','IDT','BOLE','EDOX','IQAX','SECR','TRGO','ETEU','TRAC','BRIT','COVA','ETIT','KTNE','CRED','BLOC'] } } },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$', pseudoEnum: EBL_PLATFORM_SOLUTION_PROVIDERS },\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', 'address', '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','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n EndorseeShipper: {\n DEFAULT : { type: 'object', title: 'Endorsee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails'] },\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', 'carrierSMDGCode', '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 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 facilitySMDGCode: {\n PARENTS : { TerminalTimestamp: {}, 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 '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 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 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 haulageChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\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', 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// 'BKG_v2.0.1' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null } } },\n// 'BKG_v2.0.2' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null } } },\n// 'BKG_v2.0.3' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null } } },\n PARENTS : { BookingAgent: { minItems: null }, Shipper: { minItems: null }, OnBehalfOfShipper: { minItems: null }, ShipperHBL: { minItems: null }, Consignee: {}, OnBehalfOfConsignee: {}, ConsigneeShipper: { minItems: null }, ConsigneeHBL: { minItems: null }, Endorsee: {}, EndorseeShipper: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null }, PartyHBL: { minItems: null }, IssuingParty: { minItems: null }, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: { minItems: null }, NotifyParty: { 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'] },\n },\n innerPackagings: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/InnerPackaging' } },\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 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','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 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', 'arrival'] },\n },\n legs: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Leg'} },\n },\n lengthOverall: {\n DEFAULT : { type: 'number', format: 'float' },\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', 'address', '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_v3.0.x' : { PARENTS: { TransportCall: {} } },\n 'CS_v1.0.x' : { PARENTS: { 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// 'CS_v1.0.1' : { PARENTS: { 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','address','UNLocationCode','facility'] } },\n// 'CS_v1.0.1' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','address','UNLocationCode','facility'] } },\n DEFAULT : { type: 'object', title: 'Location', CHILDREN: ['locationName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n locationName: {\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 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 mediaType: {\n DEFAULT : { type: 'string', maxLength:100 },\n },\n message: {\n PARENTS : { Feedback: {} },\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_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', 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', 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 notifyParties: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {} },\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','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\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 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 DEFAULT : { $ref: '#/components/schemas/OnBehalfOfConsignee' },\n },\n OnBehalfOfConsignee: {\n DEFAULT : { type: 'object', title: 'On Behalf of Consignee', required: ['partyName'], CHILDREN: ['partyName','address','identifyingCodes'] },\n },\n onBehalfOfShipper : {\n DEFAULT : { $ref: '#/components/schemas/OnBehalfOfShipper' },\n },\n OnBehalfOfShipper: {\n DEFAULT : { type: 'object', title: 'On Behalf of Shipper', required: ['partyName'], CHILDREN: ['partyName','address','identifyingCodes'] },\n },\n onCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\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','address','facility','UNLocationCode'] },\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 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: {}, 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','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\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// 'BKG_v2.0.1' : { 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// 'BKG_v2.0.2' : { 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: {}, ShipperHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {}, NotifyPartyHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Party: {}, 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'] } } },\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: {}, OnBehalfOfShipper: {}, ShipperHBL: {}, Consignee: {}, OnBehalfOfConsignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, CarrierBookingOffice: {}, Party: {}, PartyHBL: {}, CarriersAgentAtDestination: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, 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: ['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: ['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','address','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','address','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 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','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','UNLocationCode','facilitySMDGCode'] },\n },\n portVisitReference: {\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, PortCall: {}, },\n DEFAULT : { type: 'string', maxLength: 50 },\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 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 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'] },\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'] },\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 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','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+$', pseudoEnum: EBL_PLATFORM_SOLUTION_PROVIDERS },\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','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 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 : { 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: {} },\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'] },\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: {}, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ShipperHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Shipper' },\n },\n Shipper: {\n 'BKG_v2.0.x' : { DEFAULT: { CHILDREN: ['partyName','address','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','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference', 'purchaseOrderReferences'] },\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','identifyingCodes','partyContactDetails'] },\n },\n shippingInstructionsRevisionNumber: {\n DEFAULT : { type: 'integer' },\n },\n shippingInstructionsStatus: {\n PARENTS : { ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['RECEIVED','PENDING_UPDATE','COMPLETED'] },\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 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 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.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: {}, ShipperHBL: {}, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, Party: {}, PartyHBL: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, 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_v3.0.x' : { DEFAULT: { required: ['eventClassifierCode', 'eventDateTime','eventTypeCode'], CHILDREN: ['eventTypeCode','eventClassifierCode','eventDateTime','delayReasonCode','delayReasonCodes','changeRemark']} },\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 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_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 : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n TransportCallLocation: {\n DEFAULT : { type: 'object', title: 'TransportCall Location', CHILDREN: ['locationName','address','UNLocationCode','facilitySMDGCode'] },\n },\n transportCalls: {\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.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','declaredValue','declaredValueCurrency','carrierCode','carrierCodeListProvider','carrierClauses','numberOfRiderPages','transports','charges','placeOfIssue','invoicePayableAt','partyContactDetails','documentParties','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 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', 'shippingInstructionsReference', 'transportDocumentReference','transportDocumentSubReference', 'feedbacks', 'transportDocument'] },\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 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 : { 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 : { 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 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 } },\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 },\n DEFAULT : { type: 'string' },\n },\n typeCode: {\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 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: {} },\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: {} },\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 },\n },\n values: {\n PARENTS : { \n NationalCommodityCode: {}, \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 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 '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: {} },\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: {} },\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_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'] },\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: {} },\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 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 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 (checkParent(resultingParentSpecs, parentSpecs, context, 0, results)) {\n mergeSpecs(specs, resultingParentSpecs)\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 (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/ebl/v3/EBL_v3.0.3.yaml b/ebl/v3/EBL_v3.0.3.yaml index b7909db4..6861b640 100644 --- a/ebl/v3/EBL_v3.0.3.yaml +++ b/ebl/v3/EBL_v3.0.3.yaml @@ -3065,7 +3065,7 @@ components: pattern: ^\S(?:.*\S)?$ maxLength: 20 description: | - A unique number allocated by the shipping line, for the shipper to indicate which `transportDocumentReference` should be linked with this `Shipping Instructions`. + A unique number allocated by the shipping line, for the shipper to indicate which `transportDocumentReference` should be linked with this `Shipping Instructions`. When available, the `transportDocumentReference` should be provided to meet **ICS2** filing requirements. example: HHL71800000 transportDocumentTypeCode: type: string @@ -3386,7 +3386,7 @@ components: pattern: ^\S(?:.*\S)?$ maxLength: 20 description: | - A unique number allocated by the shipping line, for the shipper to indicate which `transportDocumentReference` should be linked with this `Shipping Instructions`. + A unique number allocated by the shipping line, for the shipper to indicate which `transportDocumentReference` should be linked with this `Shipping Instructions`. When available, the `transportDocumentReference` should be provided to meet **ICS2** filing requirements. example: HHL71800000 transportDocumentTypeCode: type: string @@ -4280,6 +4280,69 @@ components: - city - countryCode + ################################################################### + # House B/L Address object - MUST be the same as the Address object + ################################################################### + AddressHBL: + type: object + title: Address House B/L + description: | + An object for storing address related information. Either **Street number** or **PO Box** should be provided to meet **ICS2** filing requirements. + properties: + street: + type: string + maxLength: 70 + description: The name of the street. + example: Ruijggoordweg + streetNumber: + type: string + maxLength: 50 + description: The number of the street. + example: '100' + floor: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 50 + description: | + The floor of the street number. + example: N/A + postCode: + type: string + maxLength: 10 + description: The post code of the address. + example: 1047 HM + POBox: + type: string + maxLength: 20 + description: A numbered box at a post office where a person or business can have mail or parcels delivered. + example: '123' + city: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 35 + description: | + The name of the city. + example: Amsterdam + stateRegion: + type: string + maxLength: 65 + description: The name of the state/region. + example: North Holland + countryCode: + type: string + pattern: ^[A-Z]{2}$ + minLength: 2 + maxLength: 2 + description: | + The 2 characters for the country code using [ISO 3166-1 alpha-2](https://www.iso.org/obp/ui/#iso:pub:PUB500001:en) + + **Note:** In case the `countryCode` is unknown it is possible to use the code `ZZ`. + example: NL + required: + - street + - city + - countryCode + ############### # City Location ############### @@ -5210,7 +5273,7 @@ components: - `ASSOCIATION_OF_PERSONS` (Not a legal person, but recognised under Union or National law as having the capacity to perform legal acts) example: 'NATURAL_PERSON' address: - $ref: '#/components/schemas/Address' + $ref: '#/components/schemas/AddressHBL' identifyingCodes: type: array items: @@ -5305,7 +5368,7 @@ components: - `ASSOCIATION_OF_PERSONS` (Not a legal person, but recognised under Union or National law as having the capacity to perform legal acts) example: 'NATURAL_PERSON' address: - $ref: '#/components/schemas/Address' + $ref: '#/components/schemas/AddressHBL' identifyingCodes: type: array items: @@ -5399,7 +5462,7 @@ components: - `ASSOCIATION_OF_PERSONS` (Not a legal person, but recognised under Union or National law as having the capacity to perform legal acts) example: 'NATURAL_PERSON' address: - $ref: '#/components/schemas/Address' + $ref: '#/components/schemas/AddressHBL' identifyingCodes: type: array items: