diff --git a/.stoplight/styleguide.json b/.stoplight/styleguide.json index ef66b283..9090d496 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/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 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 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','extendedNationalCommodityCodes','customsReferences'] },\n },\n CargoItemHBL: {\n DEFAULT : { type: 'object', title: 'Cargo Item (House B/L)', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','outerPackaging'] },\n },\n cargoItems: {\n PARENTS : {\n ConsignmentItemShipper: { items: {$ref: '#/components/schemas/CargoItemShipper' } },\n ConsignmentItem : { items: {$ref: '#/components/schemas/CargoItem' } },\n ConsignmentItemHBL : { items: {$ref: '#/components/schemas/CargoItemHBL' } },\n },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n CargoItemShipper: {\n DEFAULT : {type: 'object', title: 'Cargo Item (Shipper)', required: ['equipmentReference', 'cargoGrossWeight'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','extendedNationalCommodityCodes','houseBillOfLadingReference','customsReferences'] },\n },\n cargoMovementTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n cargoMovementTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n carrierBookingOffice: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.3' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { documentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/CarrierBookingOffice' },\n },\n CarrierBookingOffice: {\n DEFAULT : { type: 'object', title: 'Carrier Booking Office', required: ['partyName', 'UNLocationCode'], CHILDREN: ['partyName','UNLocationCode','address','partyContactDetails'] },\n },\n carrierBookingRequestReference: {\n PARENTS : { CreateBookingResponse: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, BookingNotificationData: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierBookingReference: {\n PARENTS : { UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, BookingNotificationData: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierClauses: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 20000, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n },\n carrierCode: {\n PARENTS : { Moves:{}, booking: {}, amendedBooking: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$' },\n },\n carrierCodeListProvider: {\n PARENTS : { Moves:{}, booking: {}, amendedBooking: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n carrierExportVoyageNumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern: null } },\n PARENTS : { TerminalTimestamp: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n carrierImportVoyageNumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern: null } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carriersAgentAtDestination: {\n PARENTS : { DocumentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/CarriersAgentAtDestination' },\n },\n CarriersAgentAtDestination: {\n DEFAULT : { type: 'object', title: 'Carrier\\'s Agent At Destination', required: ['partyName', 'address', 'partyContactDetails'], CHILDREN: ['partyName','address','partyContactDetails'] },\n },\n carrierServiceCode: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 11, pattern:null } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierServiceName: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern:null } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierSCACCode: {\n DEFAULT : { type: 'string', pattern: '^\\\\S+$', maxLength: 4 },\n },\n changeRemark: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 250 } },\n },\n Charge: {\n DEFAULT : { type: 'object', title: 'Charge', required: ['chargeName', 'currencyAmount', 'currencyCode', 'paymentTermCode', 'calculationBasis', 'unitPrice', 'quantity'], CHILDREN: ['chargeName', 'extendedChargeName','currencyAmount','currencyCode','paymentTermCode','calculationBasis','unitPrice','quantity'] },\n },\n chargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', deprecated: true },\n },\n charges: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Charge'}},\n },\n city: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 65, pattern: null } },\n PARENTS : { PortOfLoading: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, PortOfDischarge: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, address: {}, Address: {}, AddressHBL: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n City: {\n DEFAULT : { type: 'object', title: 'City', required: ['city', 'countryCode'], CHILDREN: ['city','stateRegion','countryCode'] },\n },\n classifierCode: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { enum: ['ACT', 'EST'] } },\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT', 'EST', 'PLN', 'REQ'], pseudoEnum: [] }, // No validation is done on description\n },\n co2: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n 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','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n Commodity: {\n DEFAULT : { type: 'object', title: 'Commodity', required: ['commodityType'], CHILDREN: ['commoditySubReference', 'commodityType','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n commoditySubReference: {\n PARENTS : { Commodity: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n commodityType: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', maxLength: 550, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n competentAuthorityApproval: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern:'^\\\\S(?:.*\\\\S)?$' },\n },\n confirmedEquipments: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ConfirmedEquipment' } },\n },\n ConfirmedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n DEFAULT : { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup'] },\n },\n consignee: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.3' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/ConsigneeShipper' }, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ConsigneeHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Consignee' },\n },\n Consignee: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','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','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','shippingMarks','cargoItems', 'exportLicense', 'importLicense', 'references','customsReferences'] },\n },\n ConsignmentItemShipper: {\n DEFAULT : { type: 'object', title: 'Consignment Item (Shipper)', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes', 'cargoItems'], CHILDREN: ['carrierBookingReference','commoditySubReference', 'descriptionOfGoods','descriptionOfGoodsForCustoms','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','shippingMarks','shippingMarksForCustoms','cargoItems', 'exportLicense', 'importLicense','references','customsReferences'], allOf: true },\n },\n ConsignmentItemHBL: {\n DEFAULT : { type: 'object', title: 'Consignment Item (House B/L)', required: ['descriptionOfGoods', 'cargoItems', 'nationalCommodityCode'], CHILDREN: ['descriptionOfGoods','nationalCommodityCode','extendedNationalCommodityCodes','cargoItems','customsReferences'] },\n },\n contact: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n ContainerUnits: {\n DEFAULT : { type: 'object', title: 'Container Units', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n ContainerPositioning: {\n DEFAULT : { type: 'object', title: 'Container Positioning', required: ['location'], CHILDREN: ['dateTime', 'location' ] },\n },\n ContainerPositioningEstimated: {\n DEFAULT : { type: 'object', title: 'Container Positioning Estimated', required: ['location'], CHILDREN: ['estimatedDateTime', 'location' ] },\n },\n containerPositionings : {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, ConfirmedEquipment: { items: { $ref: '#/components/schemas/ContainerPositioningEstimated' } }},\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ContainerPositioning' } },\n },\n ContainerPositioningLocation: {\n DEFAULT : { type: 'object', title: 'Container Positioning Location', CHILDREN: ['locationName', 'facilityName', 'address', '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: {}, ExtendedNationalCommodityCode: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n CreateBooking: {\n DEFAULT : { type: 'object', title: 'Create Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n CreateBookingResponse: {\n DEFAULT : { type: 'object', title: 'Create Booking Response', required: ['carrierBookingRequestReference'], CHILDREN: ['carrierBookingRequestReference'] },\n },\n CreateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions', required: ['transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n CreateShippingInstructionsResponse: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions Response', required: ['shippingInstructionsReference'], CHILDREN: ['shippingInstructionsReference'] },\n },\n currencyAmount: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n currencyCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', pattern: '^[A-Z]{3}$', minLength: 3, maxLength: 3 },\n },\n CustomsReference: {\n DEFAULT : { type: 'object', title: 'Customs Reference', required: ['type', 'countryCode', 'values'], CHILDREN: ['type','countryCode','values'] },\n },\n customsReferences: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: {}, CargoItemCarrier: {}, CargoItemShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipmentShipper: {}, TransportDocument: {}, transportDocument: {}, UtilizedTransportEquipment: {}, CargoItem: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, Commodity: {}, CommodityShipper: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/CustomsReference' } },\n },\n cutOffDateTime: {\n PARENTS : { ShipmentCutOffTime: {}, CutOffTime: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n cutOffDateTimeCode: {\n PARENTS : { ShipmentCutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','EFC'] }, CutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','PCO','ECP','EFC','RCO','DGC','OBC','TCO','STA','SPA','CUA','AFC'] } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n CutOffTime: {\n DEFAULT : { type: 'object', title: 'Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n cutOffTimes: {\n PARENTS : { PointToPoint: {}, Leg: {}, Schedule: {}, TransportCall: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/CutOffTime'} },\n },\n dangerousGoods: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DangerousGoods' } },\n },\n DangerousGoods: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.3' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n DEFAULT : { type: 'object', title: 'Dangerous Goods', oneOf: true, required: ['properShippingName', 'imoClass'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits'] },\n },\n data: {\n PARENTS : { BookingNotification: { $ref: '#/components/schemas/BookingNotificationData' }, ShippingInstructionsNotification: { $ref: '#/components/schemas/ShippingInstructionsData' }, TransportDocumentNotification: { $ref: '#/components/schemas/TransportDocumentData' } },\n DEFAULT : { type: 'object', title: 'Data' },\n },\n datacontenttype: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['application/json'], pseudoEnum: [] },\n },\n dateTime: {\n PARENTS : { Timestamp: {}, PlaceOfReceipt: {}, ContainerPositioning: {}, EmptyContainerPickup: {}, OriginEmptyContainerPickup: {}, PlaceOfDelivery: {}, PlaceOfArrival: {}, PlaceOfDeparture: {} },\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n declaredValue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n declaredValueCurrency: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', minLength: 3, maxLength: 3, pattern: '^[A-Z]{3}$' },\n },\n decline: {\n DEFAULT : { type: 'boolean' },\n },\n Decline: {\n DEFAULT : { type: 'object', title: 'Decline', CHILDREN: ['reason','isFYI'] },\n },\n declined: {\n PARENTS : { PortCallService: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n delayReasonCode: {\n 'OVS_v3.0.x' : { DEFAULT: { deprecated: true } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n delayReasonCodes: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 3} },\n },\n deliveryTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n departingVesselVoyage: {\n PARENTS : { ShipmentLocation: {} },\n DEFAULT : { type: 'object', title: \"Vessel Voyage\" },\n },\n departure: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDeparture' },\n },\n depotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n description: {\n PARENTS : { OuterPackaging: {}, InnerPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n descriptionOfGoods: {\n PARENTS : { ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: { type: 'string', maxItems: null, maxLength: 512, items: null, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n descriptionOfGoodsForCustoms: {\n PARENTS : { ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35 } },\n },\n destinationChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/DestinationChargesPaymentTerm' },\n },\n DestinationChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Destination Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n DetailedError: {\n 'OVS_v3.0.x' : { DEFAULT: { required: ['errorCodeText'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','erorCodeMessage'] } },\n DEFAULT : { type: 'object', title: 'Detailed Error', required: ['errorCodeText', 'errorCodeMessage'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','errorCodeMessage'] },\n },\n dimensionUnit: {\n DEFAULT : { type: 'string', enum: ['MTR', 'FOT'] },\n },\n dischargeLocation: {\n PARENTS : {Transport: {$ref:'#/components/schemas/DischargeLocation' } },\n },\n DischargeLocation: {\n DEFAULT : { type: 'object', title: 'Discharge Location', CHILDREN: ['locationName', 'facilityName', 'address', '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', 'facilityName', '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', 'carrierSCACCode', 'endorsementChain']},\n },\n EndorsementChainLink: {\n 'EBL_SUR_v3.0.x' : { DEFAULT: { required: ['actionDateTime', 'actionCode', 'actor', 'recipient'] } },\n DEFAULT : { type: 'object', title: 'Endorsement Chain Link', required: ['actionDateTime', 'actionCode', 'actor'], CHILDREN: ['actionDateTime', 'actionCode', 'actor', 'recipient','auditReference'] },\n },\n EnvelopeManifest: {\n DEFAULT : { type: 'object', title: 'Envelope Manifest', required: ['transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum'], CHILDREN: ['transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','eBLVisualisationByCarrier','supportingDocuments'] },\n },\n envelopeManifestSignedContent: {\n DEFAULT : { $ref: '#/components/schemas/EnvelopeManifestSignedContent' },\n },\n EnvelopeManifestSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n envelopeReference: {\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n envelopeTransferChain: {\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/EnvelopeTransferChainEntrySignedContent' } },\n },\n EnvelopeTransferChainEntry: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Chain Entry', required: ['eblPlatform','transportDocumentChecksum','transactions'], CHILDREN: ['eblPlatform','transportDocumentChecksum','previousEnvelopeTransferChainEntrySignedContentChecksum','issuanceManifestSignedContent','controlTrackingRegistry','transactions'] },\n },\n EnvelopeTransferChainEntrySignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EnvelopeTransferFinishedResponse: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Finished Response', required: ['lastEnvelopeTransferChainEntrySignedContentChecksum','responseCode'], CHILDREN: ['lastEnvelopeTransferChainEntrySignedContentChecksum','responseCode', 'duplicateOfAcceptedEnvelopeTransferChainEntrySignedContent', 'reason', 'missingAdditionalDocumentChecksums', 'receivedAdditionalDocumentChecksums'] },\n },\n EnvelopeTransferFinishedResponseSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EnvelopeTransferStartedResponse: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Started Response', required: ['envelopeReference','transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','missingAdditionalDocumentChecksums'], CHILDREN: ['envelopeReference','transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','missingAdditionalDocumentChecksums'] },\n },\n equipment: {\n PARENTS : { UtilizedTransportEquipmentCarrier: { $ref: '#/components/schemas/Equipment' }, UTEquipment: { $ref: '#/components/schemas/RequiredEquipment' }, UtilizedTransportEquipment: { $ref: '#/components/schemas/Equipment' } },\n },\n Equipment: {\n DEFAULT : { type: 'object', title: 'Equipment', required: ['equipmentReference'], CHILDREN: ['equipmentReference','ISOEquipmentCode','tareWeight'] },\n },\n equipmentReference: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, CargoItem: {}, CargoItemShipper: {}, CargoItemHBL: {}, UTEquipmentReference: {}, Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n equipmentReferences: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, CargoItemCarrier: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n errorDateTime: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n errorCode: {\n PARENTS : { DetailedError: {}, errors: {}, IssuanceError: {type: 'string', maxLength: 50, pattern: '^\\\\S+$', format: null, minimum: null, maximum: null } },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 7000, maximum: 9999 },\n },\n erorCodeMessage: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 200 }, PARENTS: { DetailedError: {}, errors: {} } }, \n },\n errorCodeMessage: {\n PARENTS : { DetailedError: {}, errors: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n errorCodeText: {\n PARENTS : { DetailedError: {}, errors: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n ErrorResponse: {\n DEFAULT : { type: 'object', title: 'Error Response', required: ['httpMethod', 'requestUri', 'statusCode', 'statusCodeText','errorDateTime', 'errors'], CHILDREN: ['httpMethod','requestUri','statusCode','statusCodeText','statusCodeMessage','providerCorrelationReference','errorDateTime','errors'] },\n },\n errors: {\n 'OVS_v3.0.x' : { DEFAULT: { minItems: null } },\n PARENTS : { ErrorResponse: {}, IssuanceResponse: {minItems: null, maxItems: 255, items: {$ref: '#/components/schemas/IssuanceError'}} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/DetailedError'} },\n },\n estimatedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n estimatedEmptyContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n eventDateTime: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n eventTypeCode: {\n PARENTS : { TerminalTimestamp: {}, Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ARRI', 'DEPA'] },\n },\n eventClassifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['PLN', 'EST', 'ACT'] },\n },\n expectedArrivalAtPlaceOfDeliveryStartDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedArrivalAtPlaceOfDeliveryEndDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureFromPlaceOfReceiptDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expiryDate: {\n PARENTS : { ExportLicense: {}, ImportLicense: {},ExportLicenseShipper: {}, ImportLicenseShipper: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportDeclarationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n ExportLicense: {\n DEFAULT : { type: 'object', title: 'Export License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ExportLicenseShipper: {\n DEFAULT : { type: 'object', title: 'Export License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n exportLicense: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ExportLicense' },\n },\n exportLicenseExpiryDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportLicenseIssueDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n extendedChargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n extendedHSCodes: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, ConsignmentItem: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', items: { type: 'string', minLength: 6, maxLength: 12, pattern: '^\\\\d{6,12}$' } },\n },\n ExtendedNationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code (Extended)', required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n extendedNationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {}, ConsignmentItemHBL: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ExtendedNationalCommodityCode'} },\n },\n Facility: {\n 'JIT_v2.0.0' : { DEFAULT: { CHILDREN: ['facilityCode','facilityCodeListProvider','subFacility'] } },\n DEFAULT : { type: 'object', title: 'Facility', required: ['facilityCode', 'facilityCodeListProvider'], CHILDREN: ['facilityCode','facilityCodeListProvider'] },\n },\n facility: {\n DEFAULT : { $ref: '#/components/schemas/Facility' },\n },\n facilityCode: {\n 'EBL_v3.0.0' : { DEFAULT: { nullable: 'false'} },\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', maxLength: 6, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n facilityName: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { location: {} } },\n PARENTS : { TransportCallLocation: {}, PortScheduleLocation: {}, Location: {}, PlaceOfReceipt: {}, PlaceOfDelivery: {}, OnwardInlandRouting: {}, ContainerPositioningLocation: {}, EmptyContainerDepotReleaseLocation: {}, LoadLocation: {}, DischargeLocation: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n facilitySMDGCode: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { TerminalTimestamp: {}, location: {} } },\n PARENTS : { FacilitySMDGLocation: {}, TransportCallLocation: {}, PortScheduleLocation: {} },\n DEFAULT : { type: 'string', maxLength: 6 },\n },\n FacilitySMDGLocation: {\n DEFAULT : { type: 'object', title: 'Facility SMDG Location', required: ['UNLocationCode','facilitySMDGCode','locationType'] },\n },\n facilityTypeCode: {\n 'CS_v1.0.x' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n// 'CS_v1.0.1' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n 'JIT_v2.0.0' : { DEFAULT: { enum: ['PBPL', 'BRTH', 'ANCH'], pseudoEnum: [] }}, // No validation added for description\n DEFAULT : { type: 'string', maxLength: 4},\n },\n facilityCodeListProvider: {\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', enum: ['BIC', 'SMDG'] },\n },\n Feedback: {\n DEFAULT : { type: 'object', title: 'Feedback', required: ['severity', 'code', 'message'], CHILDREN: ['severity', 'code', 'message', 'jsonPath', 'property'] },\n },\n FeedbackElement: {\n DEFAULT : { type: 'object', title: 'Feedback Element', CHILDREN: ['severity', 'message', 'propertyPath'] },\n },\n feedbackElements: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/FeedbackElement' } },\n },\n feedbacks: {\n PARENTS : { ShippingInstructionsData: {}, ShippingInstructions: {}, TransportDocument: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/Feedback' } },\n },\n flag: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n flashPoint: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n floor: {\n 'OVS_v3.0.x' : { DEFAULT: { pattern: null } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 50 },\n },\n footprint: {\n DEFAULT : { type: 'object', CHILDREN: ['co2','sox','nox','pm10'] }\n },\n forwardDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n freeText: {\n PARENTS : { InvoicePayableAt: {} },\n DEFAULT : { type: 'string', maxLength: 35 }, // In TD invoicePayableAt\n },\n freightPaymentTermCode: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n fullContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n fumigationDateTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n GeoCoordinate: {\n DEFAULT : { type: 'object', title: 'Geo Coordinate', required: ['latitude', 'longitude'], CHILDREN: ['latitude', 'longitude'] },\n },\n geoCoordinate: {\n DEFAULT : { $ref: '#/components/schemas/GeoCoordinate' },\n },\n grossWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/GrossWeight' },\n },\n GrossWeight: {\n DEFAULT : { type: 'object', title: 'Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n 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', deprecated: true, items: { type: 'string', minLength: 6, maxLength: 10, pattern: '^\\\\d{6,10}$' } },\n },\n httpMethod: {\n 'OVS_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_SUR_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_ISS_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'BKG_v2.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'CS_v1.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'], pseudoEnum: [] },\n },\n humiditySetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n id: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', maxLength: 100},\n },\n IdentifyingCode: {\n DEFAULT : { type: 'object', title: 'Identifying Code', required: ['codeListProvider', 'partyCode'], CHILDREN: ['codeListProvider','partyCode','codeListName'] },\n },\n identifyingCodes: {\n 'BKG_v2.0.x' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, IssueToParty: { minItems: null }, Party: { minItems: null } } },\n// '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', 'innerPackagings'] },\n },\n innerPackagings: {\n PARENTS : { DangerousGoods: {}, InnerPackaging: {} },\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','footprint','cutOffTimes'] },\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', 'facilityName', '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_HUB_TER_v1.0.x' : { DEFAULT: { type: 'object', title: 'Location' }, PARENTS: { TransportCall: {} } },\n 'OVS_v3.0.x' : { PARENTS: { TransportCall: {} } },\n 'CS_v1.0.x' : { PARENTS: { PlaceOfReceipt: { $ref: '#/components/schemas/Location' }, TransportCall: { $ref: '#/components/schemas/TransportCallLocation' }, PortSchedule: { $ref: '#/components/schemas/PortScheduleLocation' }, PlaceOfDelivery: { $ref: '#/components/schemas/Location' }, PlaceOfArrival: { $ref: '#/components/schemas/Location' }, PlaceOfDeparture: { $ref: '#/components/schemas/Location' } } },\n PARENTS : { ShipmentLocation: {}, ContainerPositioning: {$ref: '#/components/schemas/ContainerPositioningLocation'}, ContainerPositioningEstimated: {$ref: '#/components/schemas/ContainerPositioningLocation'} },\n DEFAULT : { $ref: '#/components/schemas/Location' },\n },\n Location: {\n 'CS_v1.0.x' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','facilityName','address','UNLocationCode','facility'] } },\n DEFAULT : { type: 'object', title: 'Location', CHILDREN: ['locationName','facilityName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n locationName: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { location: {} } },\n 'OVS_v3.0.x' : { PARENTS: { AddressLocation: { pattern: null }, FacilitySMDGLocation: { pattern: null }, UNLocationLocation: { pattern: '^\\\\S+(\\\\s+\\\\S+)*$' } } },\n PARENTS : { PortScheduleLocation: {}, TransportCallLocation:{}, VesselPosition: {}, PortCallServiceLocation: {}, PortCallServiceLocationTimestamp: {}, PlaceOfAcceptance: { maxLength: 35}, PlaceOfFinalDelivery: { maxLength: 35}, PlaceOfReceipt: {}, PortOfLoading: {}, PlaceOfDelivery: {}, PortOfDischarge: {}, OnwardInlandRouting:{}, PlaceOfIssue: {}, PlaceOfBLIssue: {}, Location: {}, ContainerPositioningLocation: {}, EmptyContainerDepotReleaseLocation: {}, LoadLocation: {}, DischargeLocation: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n locationType: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 4 }, PARENTS: { AddressLocation: {}, FacilitySMDGLocation: {}, UNLocationLocation: {} } },\n// PARENTS : { AddressLocation: {}, FacilitySMDGLocation: {}, UNLocationLocation: {} },\n// PARENTS : { AddressLocation: {}, CityLocation: {}, Facility: {}, UNLocationLocation: {}, FacilitySMDGLocation: {} },\n// DEFAULT : { type: 'string', maxLength: 4 },\n },\n locationTypeCode: {\n PARENTS : { ShipmentLocation: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['PRE','POL','POD','PDE','PCF','OIR','ORI','IEL','PTP','RTP','FCD','ROU'] },\n },\n longitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 11 },\n },\n 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: {}, FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n methodOfPayment: {\n DEFAULT : { type: 'string', maxLength: 1, pseudoEnum: ['A','B','C','D','H','Y','Z'] },\n },\n milesToDestinationPort: {\n DEFAULT : { type: 'number', format: 'float' }\n },\n missingAdditionalDocumentChecksums: {\n PARENTS : { EnvelopeTransferFinishedResponse: { minItems: null}, EnvelopeTransferStartedResponse: {} },\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n MMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n modeOfTransport: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n PARENTS : { Transport: { pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] }, VesselTransport: { maxLength: null, enum: ['VESSEL'], pseudoEnum: [] }, BargeTransport: { maxLength: null, enum: ['BARGE'], pseudoEnum: []}, OtherTransport: { maxLength: null, enum: ['RAIL_TRUCK', 'BARGE_TRUCK', 'BARGE_RAIL', 'MULTIMODAL', 'RAIL', 'TRUCK'] } },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n moves: {\n DEFAULT : { $ref: '#/components/schemas/MovesList' }\n },\n Moves: {\n DEFAULT : { type: 'object', title: 'Moves', CHILDREN: ['carrierCode','carrierCodeListProvider','restows'], oneOf: true },\n },\n MovesList: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Moves'} },\n },\n name: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 100, pattern: null }, PARENTS: { address: {} } },\n PARENTS : { DocumentMetadata: {}, Vessel: { maxLength: 50 }, Barge: { maxLength: 50 }, SupportingDocument: {maxLength: 100, pattern: null }, vessel: { maxLength: 50 }, PartyContactDetail: { maxLength: 35 }, PartyContactDetailHBL: { maxLength: 35 }, PartyContactDetailWithPattern: { maxLength: 35 } },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n NANumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n NationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code', deprecated: true, required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n nationalCommodityCode: {\n PARENTS : { ConsignmentItemHBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NationalCommodityCode' },\n },\n nationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { type: 'array', deprecated: true, items: {$ref: '#/components/schemas/NationalCommodityCode'} },\n },\n netExplosiveContent: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetExplosiveContent' },\n },\n NetExplosiveContent: {\n DEFAULT : { type: 'object', title: 'Net Explosive Content', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetWeight' },\n },\n NetWeight: {\n DEFAULT : { type: 'object', title: 'Net Weight', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netVolume: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetVolume' },\n },\n NetVolume: {\n DEFAULT : { type: 'object', title: 'Net Volume', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n nox: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\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','facilityName','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','CSR'] } } },\n// 'BKG_v2.0.2' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC'] } } },\n PARENTS : { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','SCO'] }, OtherDocumentPartyShippingInstructions: { pseudoEnum: ['DDR','DDS','COW','COX','SCO','CS','MF','WH'] }, OtherDocumentPartyHBL: { pseudoEnum: ['DDR','DDS','CS','MF','WH']} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n partyName: {\n PARENTS : { BookingAgent: {}, Shipper: {}, 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: ['transportCallReference','facilityTypeCode','location','dateTime'] },\n },\n placeOfBLIssue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfBLIssue' },\n },\n PlaceOfBLIssue: {\n DEFAULT : { type: 'object', title: 'Place of B/L Issue', oneOf: {UNLocationCode: {}, countryCode: {} }, CHILDREN: ['locationName'] },\n },\n PlaceOfDeparture: {\n DEFAULT : { type: 'object', title: 'Place of Departure', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['transportCallReference','facilityTypeCode','location','dateTime'] },\n },\n placeOfFinalDelivery: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfFinalDelivery' },\n },\n PlaceOfFinalDelivery: {\n DEFAULT : { type: 'object', title: 'Place of Final Delivery', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n placeOfIssue: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfIssue' },\n },\n PlaceOfIssue: {\n DEFAULT : { type: 'object', title: 'Place of Issue', oneOf: true, CHILDREN: ['locationName'] },\n },\n placeOfDelivery: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDelivery' },\n },\n PlaceOfDelivery: {\n 'CS_v1.0.x' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n// 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Delivery', CHILDREN: ['locationName','facilityName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n placeOfReceipt: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfReceipt' },\n },\n PlaceOfReceipt: {\n 'CS_v1.0.x' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n// 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Receipt', CHILDREN: ['locationName','facilityName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n plannedArrivalDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n plannedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n plannedDepartureDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n pm10: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n POBox: {\n DEFAULT : { type: 'string', maxLength: 20 },\n },\n PointToPoint: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','transitTime','legs'] } },\n DEFAULT : { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','routingReference','transitTime','solutionFootprint','legs'] },\n },\n portCall: {\n DEFAULT : { $ref: '#/components/schemas/PortCall' },\n },\n PortCall: {\n DEFAULT : { type: 'object', title: 'Port Call', required: ['portCallID', 'UNLocationCode','vessel'], CHILDREN: ['portCallID','portVisitReference','UNLocationCode','vessel','omitted','isFYI'] },\n },\n PortCalls: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCall' } },\n },\n portCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallPhaseTypeCode: {\n DEFAULT : { type: 'string', enum: ['INBD', 'ALGS', 'SHIF', 'OUTB'], pseudoEnum: []}, // No validation added for description\n },\n PortCallServices: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCallService' } },\n },\n PortCallService: {\n DEFAULT : { type: 'object', title: 'Port Call Service', required: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallServiceLocation'], CHILDREN: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallPhaseTypeCode','facilityTypeCode','portCallServiceLocation','moves','cancelled','declined','isFYI'] },\n },\n portCallServiceEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'], pseudoEnum: []}, // No validation added for description\n },\n portCallServiceID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallServiceLocation: {\n PARENTS : { PortCallService: { $ref: '#/components/schemas/PortCallServiceLocation' }, Timestamp: { $ref: '#/components/schemas/PortCallServiceLocationTimestamp' } },\n },\n PortCallServiceLocation: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n PortCallServiceLocationTimestamp: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location (Timestamp)', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n portCallServiceTypeCode: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: []}, // No validation added for description\n },\n portChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n portOfDischarge: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfDischarge' },\n },\n PortOfDischarge: {\n DEFAULT : { type: 'object', title: 'Port of Discharge', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n portOfLoading: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfLoading' },\n },\n PortOfLoading: {\n DEFAULT : { type: 'object', title: 'Port of Loading', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n PortSchedule: {\n DEFAULT : { type: 'object', title: 'Port Schedule', required: ['location'], CHILDREN: ['location', 'vesselSchedules'] },\n },\n PortScheduleLocation: {\n DEFAULT : { type: 'object', title: 'Port Schedule Location', CHILDREN: ['locationName','facilityName','UNLocationCode','facilitySMDGCode'] },\n },\n portVisitReference: {\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, PortCall: {}, },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n positionCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', pseudoEnum: ['PBPL', 'BRTH', 'ANCH', 'PORT'] },\n },\n postCode: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 50 } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n preCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n previousEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n property: {\n PARENTS : { ErrorResponse: {}, Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n propertyPath: {\n PARENTS : { FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 1000 },\n },\n provider: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n properShippingName: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 250 },\n },\n providerCorrelationReference: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n publisherRole: {\n DEFAULT : { type: 'string', enum: ['CA', 'AG', 'VSL', 'ATH', 'PLT', 'TWG', 'MOR', 'TR', 'LSH', 'BUK', 'SLU', 'SVP'] },\n },\n purchaseOrderReferences: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n quantity: {\n PARENTS : { InnerPackaging: { type: 'integer', format: 'int32' }, Charge: { type: 'number', format: 'float', minimum: '0' } },\n },\n reason: {\n 'JIT_v2.0.0' : { DEFAULT: { maxLength: 500 } },\n PARENTS : { CancelBookingRequest: {}, EnvelopeTransferFinishedResponse: {maxLength: 255}, IssuanceError: {maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$'}, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, Booking: {}, booking: {}, amendedBooking: {}, data: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, IssuanceResponse: {maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n reasonCode: {\n DEFAULT : { type: 'string', maxLength: 4, pseudoEnum: ['SWTP', 'COD', 'SWI'] },\n },\n reeferPluggedContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/ReeferPluggedContainerUnits' }\n },\n ReeferPluggedContainerUnits: {\n DEFAULT : { type: 'object', title: 'Reefer Plugged Container Units', oneOf:true },\n },\n remark: {\n DEFAULT : { type: 'string', maxLength: 500 },\n },\n receiptTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n receivedAdditionalDocumentChecksums: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n receivedForShipmentDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n ReceiverValidationResponse: {\n DEFAULT : { type: 'object', title: 'Receiver Validation Response', required: ['partyName'], CHILDREN: ['partyName'] },\n },\n recipient: {\n PARENTS : { EndorsementChainLink: {}, Transaction: {} },\n DEFAULT : { $ref: '#/components/schemas/RecipientParty' },\n },\n reference: {\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n Reference: {\n DEFAULT : { type: 'object', title: 'Reference', required: ['type', 'value'], CHILDREN: ['type','value'] },\n },\n ReferenceConsignmentItem: {\n DEFAULT : { type: 'object', title: 'Reference (Consignment Item)', required: ['type', 'values'], CHILDREN: ['type','values'] },\n },\n referenceNumber: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n 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 role: {\n PARENTS : { VesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['FIRST_SEA_GOING', 'MOTHER'] },\n },\n routingOfConsignmentCountries: {\n DEFAULT : { type: 'array', minItems: 1, items: { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' } },\n },\n routingReference: {\n DEFAULT : { type: 'string', maxLength: 5000, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n SADT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n SAPT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n Schedule: {\n DEFAULT : { type: 'object', title: 'Schedule', required: ['servicePartners', 'isDummyVessel', 'timestamps'] },\n },\n Seal: {\n DEFAULT : { type: 'object', title: 'Seal', required: ['number'], CHILDREN: ['number','source'] },\n },\n seals: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, UtilizedTransportEquipmentShipper: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Seal'} },\n },\n segregationGroups: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: {type: 'string', maxLength: 2, pseudoEnum: ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18'] } },\n },\n selfFilerCode: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n seller: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesHouseBL: { $ref: '#/components/schemas/SellerHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Seller' },\n },\n Seller: {\n DEFAULT : { type: 'object', title: 'Seller', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','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: {}, FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFO','WARN','ERROR'] },\n },\n shipmentCutOffTimes: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ShipmentCutOffTime'} },\n },\n ShipmentCutOffTime: {\n DEFAULT : { type: 'object', title: 'Shipment Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n ShipmentLocation: {\n DEFAULT : { type: 'object', title: 'Shipment Location', required: ['location', 'locationTypeCode'], CHILDREN: ['location','locationTypeCode', 'departingVesselVoyage'] },\n },\n shipmentLocations: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/ShipmentLocation'} },\n },\n shippedOnBoardDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n shipper: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, 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 shippingMarksForCustoms: {\n PARENTS : { ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', maxItems: 50, items: {type: 'string', maxLength: 35 } },\n },\n signatureHash: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n size: {\n PARENTS : { DocumentMetadata: {} },\n DEFAULT : { type: 'number', minimum: 1 }\n },\n sox: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n solutionFootprint: {\n DEFAULT : { type: 'object', CHILDREN: ['co2','sox','nox','pm10'] }\n },\n solutionNumber: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 }\n },\n source: {\n // Removing DCSA_CLOUDEVENT_GROUP in the default in order to handle 'source' inside a 'Seal'\n PARENTS : { ShippingInstructionsNotification: {maxLength: 4096}, TransportDocumentNotification: {maxLength: 4096}, BookingNotification: {maxLength: 4096}, ArrivalNoticeNotification: {maxLength: 4096}, Seal: {enum: ['CAR', 'SHI', 'VET', 'CUS'] } },\n DEFAULT : { type: 'string' },\n },\n SpecificUnits: {\n DEFAULT : { type: 'object', title: 'Specific Units (for load and discharge)', CHILDREN: ['loadUnits', 'dischargeUnits'] },\n },\n specialCertificateNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n specversion: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['1.0'], pseudoEnum: [] },\n },\n stateRegion: {\n PARENTS : { Address:{}, address: {}, AddressHBL: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 65 },\n },\n statusCode: {\n 'OVS_v3.0.2' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'], deprecated: true } }, },\n 'OVS_v3.0.1' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'], deprecated: true } }, },\n 'OVS_v3.0.0' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'] } }, },\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n statusCodes: {\n DEFAULT : { type: 'array', items: { type: 'string', pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR','DRYD','BUNK','OOSV'] } },\n },\n statusCodeMessage: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 200 },\n },\n statusCodeText: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n street: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 100 } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 70 },\n },\n streetNumber: {\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n subFacility: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subscriptionReference: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subsidiaryRisk1: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n subsidiaryRisk2: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n identificationNumber: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 17 },\n },\n SupportingDocument: {\n DEFAULT : { type: 'object', title: 'Supporting Document', required: ['name', 'content'] },\n },\n supportingDocuments: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/DocumentMetadata'} },\n },\n SurrenderRequestAnswer: {\n DEFAULT : { type: 'object', title: 'Surrender Request Answer', required: ['surrenderRequestReference', 'action'] },\n },\n surrenderRequestCode: {\n DEFAULT : { type: 'string', enum: ['SREQ', 'AREQ'] },\n },\n SurrenderRequestDetails: {\n DEFAULT : { type: 'object', title: 'Surrender Request Details', required: ['surrenderRequestReference','transportDocumentReference','surrenderRequestCode'] },\n },\n // SurrenderRequestedBy should be deleted\n SurrenderRequestedBy: {\n DEFAULT : { type: 'object', title: 'Surrender Requested By', required: ['partyName', 'eblPlatform'] },\n },\n surrenderRequestReference: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n tareWeight: {\n PARENTS : { Equipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, RequiredEquipment: {} },\n DEFAULT : { $ref: '#/components/schemas/TareWeight' },\n },\n TareWeight: {\n DEFAULT : { type: 'object', title: 'Tare Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n tareWeightUnit: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n TaxLegalReference: {\n DEFAULT : { type: 'object', title: 'Tax & Legal Reference', required: ['type', 'countryCode', 'value'], CHILDREN: ['type','countryCode','value'] },\n },\n taxLegalReferences: {\n PARENTS : { BookingAgent: {}, Shipper: {}, 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_HUB_TER_v1.0.x' : { DEFAULT: { required: ['typeCode', 'classifierCode', 'positionCode', 'dateTime'], CHILDREN: ['typeCode', 'classifierCode', 'positionCode', 'dateTime'] } },\n 'OVS_v3.0.x' : { DEFAULT: { required: ['eventClassifierCode', 'eventDateTime','eventTypeCode'], CHILDREN: ['eventTypeCode','eventClassifierCode','eventDateTime','delayReasonCode','delayReasonCodes','changeRemark']} },\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_HUB_TER_v1.0.x' : { DEFAULT: { required: ['carrierImportVoyageNumber','transportCallReference', 'timestamps'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','timestamps'] } },\n 'OVS_v3.0.2' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','statusCodes','timestamps'] } },\n 'OVS_v3.0.1' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','statusCodes','timestamps'] } },\n 'OVS_v3.0.0' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','timestamps'] } },\n 'JIT_v2.0.0' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['transportCallID'], CHILDREN: ['transportCallID', 'transportCallReference', 'transportCallSequenceNumber','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','omitted'] } },\n DEFAULT : { type: 'object', title: 'Transport Call', required: ['transportCallReference', 'carrierImportVoyageNumber', 'timestamps'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','cutOffTimes','location','timestamps'] },\n },\n transportCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n transportCallReference: {\n 'OVS_HUB_TER_v1.0.0' : { DEFAULT: { pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: { deprecated: true }, BargeTransport: { deprecated: true }, PlaceOfArrival: {}, PlaceOfDeparture: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n TransportCallLocation: {\n DEFAULT : { type: 'object', title: 'TransportCall Location', CHILDREN: ['locationName','facilityName','address','UNLocationCode','facilitySMDGCode'] },\n },\n transportCalls: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { minItems: 1 } },\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportCall' } },\n },\n transportCallSequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transportControlTemperature: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n TransportDocument: {\n 'EBL_PINT_v3.0.0' : { DEFAULT: { $ref: '#/components/schemas/TransportDocument' } },\n 'EBL_v3.0.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 ExtendedNationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n// 'BKG_v2.0.1' : { PARENTS: {\n// BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n// CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n// Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n// NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n// } },\n// 'BKG_v2.0.2' : { PARENTS: {\n// BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n// CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n// Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n// NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n// } },\n PARENTS : { \n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n Reference: {maxLength: 3, pseudoEnum: ['CR','AKG'] },\n ReferenceConsignmentItem: {maxLength: 3, pseudoEnum: ['CR','AKG','SPO','CPO'] },\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n ArrivalNoticeNotification: {enum: ['org.dcsa.arrival-notice-notification.v1'], pseudoEnum: [] },\n TransportDocumentNotification: {enum: ['org.dcsa.transport-document.v3'], pseudoEnum: [] },\n ShippingInstructionsNotification: {enum: ['org.dcsa.shipping-instructions.v3'], pseudoEnum: [] },\n vessel: {enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n ExtendedNationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n },\n DEFAULT : { type: 'string' },\n },\n typeCode: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { enum: ['ARRI', 'DEPA'] } },\n PARENTS : { Vessel: { enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] } },\n DEFAULT : { type: 'string' },\n },\n typeOfPerson: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: ['NATURAL_PERSON','LEGAL_PERSON','ASSOCIATION_OF_PERSONS'] },\n },\n unit: {\n PARENTS : { \n CargoGrossWeight: {enum: ['KGM', 'LBR']},\n CargoNetWeight: {enum: ['KGM', 'LBR']},\n TareWeight: {enum: ['KGM', 'LBR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossVolume: {enum: ['MTQ', 'FTQ']}, \n NetVolume: {enum: ['MTQ', 'FTQ', 'LTR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossWeight: {enum: ['KGM', 'LBR']}, \n CargoGrossWeightReq: {enum: ['KGM', 'LBR']}, \n GrossWeight: {enum: ['KGM', 'LBR']}, \n CargoNetWeight: {enum: ['KGM', 'LBR']}, \n NetWeight: {enum: ['KGM', 'LBR']}, \n NetExplosiveContent: {enum: ['KGM', 'LBR', 'GRM', 'ONZ']} },\n DEFAULT : { type: 'string' },\n },\n units: {\n PARENTS : { ConfirmedEquipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n unitPrice: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n universalExportVoyageReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: null, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalImportVoyageReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: null, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalServiceReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, Schedule: {}, ServiceSchedule: {}, VesselTransport: {}, BargeTransport: {}, departingVesselVoyage: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', minLength: 8, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' },\n },\n UNLocationCode: {\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^[A-Z]{2}[A-Z2-9]{3}$', pseudoEnum: [] },\n },\n UNLocationLocation: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'UN Location', required: ['UNLocationCode','locationType'] } },\n },\n UNNumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n UpdateBooking: {\n DEFAULT : { type: 'object', title: 'Update Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n UpdateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Update Shipping Instructions', required: ['shippingInstructionsReference', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n updatedShippingInstructions: {\n PARENTS : { ShippingInstructionsData: {} },\n DEFAULT : { $ref: '#/components/schemas/UpdatedShippingInstructionsFullNotification' },\n },\n UpdatedShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Updated Shipping Instructions', allOf: true },\n },\n updatedShippingInstructionsStatus: {\n PARENTS : { CancelShippingInstructionsUpdate: { pseudoEnum: [] }, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['UPDATE_RECEIVED','UPDATE_CONFIRMED','UPDATE_CANCELLED','UPDATE_DECLINED'] },\n },\n UTEquipment: {\n DEFAULT : { type: 'object', title: 'Shipper Owned Equipment (SoC)', required: ['isShipperOwned', 'equipment'], CHILDREN: ['isShipperOwned','equipment'] },\n },\n UTEquipmentReference: {\n DEFAULT : { type: 'object', title: 'Carrier Owned Equipment', required: ['isShipperOwned', 'equipmentReference'], CHILDREN:['isShipperOwned','equipmentReference'] },\n },\n UtilizedTransportEquipment: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment', required: ['equipment', 'isShipperOwned', 'seals'], CHILDREN: ['equipment','isShipperOwned','isNonOperatingReefer','activeReeferSettings','shippingMarks','seals','references','customsReferences'] },\n },\n utilizedTransportEquipments: {\n PARENTS : { HouseBillOfLading: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentHBL'}}, CreateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, UpdateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, ShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, shippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, updatedShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, TransportDocument: {items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} }, transportDocument: { items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n UtilizedTransportEquipmentHBL: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (House B/L)', required: ['emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode'], oneOf: true, CHILDREN: ['seals','emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode']},\n },\n UtilizedTransportEquipmentShipper: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (Shipper)', required: ['seals'], oneOf: true, CHILDREN: ['shippingMarks','seals','emptyIndicatorCode','references','customsReferences']},\n },\n value: {\n PARENTS : {\n TareWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n NetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n CargoGrossWeightReq: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n GrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetExplosiveContent: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n DetailedError: {type: 'string', maxLength: 500},\n errors: {type: 'string', maxLength: 500}, \n TaxLegalReference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n Reference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n },\n },\n values: {\n PARENTS : { \n NationalCommodityCode: {}, \n ExtendedNationalCommodityCode: { items: {type: 'string', maxLength: 16, pattern: '^\\\\S(?:.*\\\\S)?$' } }, \n CustomsReference: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n ReferenceConsignmentItem: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n DEFAULT : { type: 'array', minItems: 1, items: {type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n 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: {}, VesselSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', minLength: 7, maxLength: 8, pattern: '^\\\\d{7,8}$' },\n },\n vesselMMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n vesselName: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 35, pattern: null, pseudoEnum: [] }, PARENTs: { VesselSchedule: {} } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, VesselVoyage: {}, VesselSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n vesselOperatorCarrierCode: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselOperatorSMDGLinerCode: {\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselOperatorCarrierCodeListProvider: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n vesselPosition: {\n DEFAULT : { $ref: '#/components/schemas/VesselPosition' },\n },\n VesselPosition: {\n DEFAULT : { type: 'object', title: 'Vessel Position', CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n VesselSchedule: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { required: ['vesselOperatorSMDGLinerCode', 'transportCalls'], CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','MMSINumber','vesselName','vesselCallSign','transportCalls'] } },\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel', 'vesselOperatorSMDGLinerCode'], CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','MMSINumber','vesselName','vesselCallSign','isDummyVessel','transportCalls'] } },\n DEFAULT : { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel'], CHILDREN: ['vessel','isDummyVessel','transportCalls'] },\n },\n vesselSchedules: {\n 'OVS_v3.0.x' : { PARENTS: { ServiceSchedule: { minItems: null, items: {$ref: '#/components/schemas/VesselSchedule'} } } },\n PARENTS : { ServiceSchedule: { minItems: 1, items: {$ref: '#/components/schemas/VesselSchedule'} }, PortSchedule: { items: { $ref: '#/components/schemas/Schedule' } } },\n DEFAULT : { type: 'array' },\n },\n VesselStatus: {\n DEFAULT : {type: 'object', title: 'Vessel Status', required: ['portCallServiceID'], CHILDREN: ['portCallServiceID', 'draft','airDraft','aftDraft','forwardDraft','dimensionUnit','vesselPosition','milesToDestinationPort','isFYI']}\n },\n VesselStatuses: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/VesselStatus' } },\n },\n VesselTransport: {\n DEFAULT : { type: 'object', title: 'Vessel Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','vessel'] },\n },\n VesselVoyage: {\n DEFAULT : { type: 'object', title: 'Vessel/Voyage', required: ['vesselName', 'carrierExportVoyageNumber'], CHILDREN: ['vesselName','carrierExportVoyageNumber','universalExportVoyageReference','role'] },\n },\n vesselVoyages: {\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/VesselVoyage'} },\n },\n weightUnit: {\n PARENTS : { Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n width: {\n PARENTS : { Vessel: {} },\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 ShipperShipper: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfShipper: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfShipperShipper: {$ref: '#/components/schemas/PartyAddress'},\n ShipperHBL: {$ref: '#/components/schemas/Address'},\n Consignee: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfConsignee: {$ref: '#/components/schemas/PartyAddress'},\n OnBehalfOfConsigneeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeHBL: {$ref: '#/components/schemas/Address'},\n Endorsee: {$ref: '#/components/schemas/PartyAddress'},\n EndorseeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ServiceContractOwner: {$ref: '#/components/schemas/PartyAddress'},\n CarrierBookingOffice: {$ref: '#/components/schemas/Address'},\n NotifyParty: { $ref: '#/components/schemas/PartyAddress'},\n NotifyPartyShipper: { $ref: '#/components/schemas/PartyAddress'},\n NotifyPartyHBL: { $ref: '#/components/schemas/AddressHBL'},\n Seller: { $ref: '#/components/schemas/Address'},\n SellerHBL: { $ref: '#/components/schemas/AddressHBL'},\n Buyer: { $ref: '#/components/schemas/Address'},\n BuyerHBL: { $ref: '#/components/schemas/AddressHBL'},\n ShippingInstructionsRequestor: { $ref: '#/components/schemas/PartyAddress' },\n Party: {$ref: '#/components/schemas/PartyAddress'},\n PartyShipper: {$ref: '#/components/schemas/PartyAddress'},\n PartyHBL: {$ref: '#/components/schemas/Address'},\n CarriersAgentAtDestination: {$ref: '#/components/schemas/Address'},\n IssuingParty: {$ref: '#/components/schemas/PartyAddress'},\n EmptyContainerDepotReleaseLocation: {$ref: '#/components/schemas/Address'},\n ContainerPositioningLocation: {$ref: '#/components/schemas/Address'},\n TransportCallLocation: { $ref: '#/components/schemas/Address' }\n },\n },\n Address: {\n 'CS_v1.0.x' : { DEFAULT: { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'city', 'stateRegion', 'countryCode'] } },\n DEFAULT : { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'POBox', 'city', 'stateRegion', 'countryCode'] },\n },\n AddressHBL: {\n DEFAULT : { type: 'object', title: 'Address (House B/L)', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'POBox', 'city', 'stateRegion', 'countryCode'] },\n },\n addressLines: {\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 250 } },\n },\n AddressLocation: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'Address Location', required: ['address','locationType'], CHILDREN: ['locationName', 'locationType', 'address'] } },\n },\n advanceManifestFilings: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/AdvanceManifestFiling'} },\n },\n AdvanceManifestFiling: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n DEFAULT : { type: 'object', title: 'Advance Manifest Filing', required: ['manifestTypeCode', 'advanceManifestFilingsHouseBLPerformedBy'], CHILDREN: ['manifestTypeCode','countryCode','advanceManifestFilingsHouseBLPerformedBy','selfFilerCode','identificationNumber'] },\n },\n advanceManifestFilingsHouseBLPerformedBy: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', enum: ['SELF', 'CARRIER'] },\n },\n aftDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n airDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n airExchangeSetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n airExchangeUnit: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'string', enum: ['MQH', 'FQH']},\n },\n amendedBooking: {\n DEFAULT : { $ref: '#/components/schemas/AmendedBookingFullNotification' },\n },\n AmendedBookingFullNotification: {\n DEFAULT : { type: 'object', title: 'Amended Booking', allOf: true },\n },\n amendedBookingStatus: {\n PARENTS : { Booking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['AMENDMENT_RECEIVED','AMENDMENT_CONFIRMED','AMENDMENT_DECLINED','AMENDMENT_CANCELLED'] },\n },\n 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','addressLines', 'partyContactDetails', 'identifyingCodes', 'taxLegalReferences','reference']},\n },\n BookingFullNotification: {\n DEFAULT : { type: 'object', title: 'Booking Full Notification', allOf: true },\n },\n bookingChannelReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n BookingRefCancelledStatus: {\n DEFAULT : { type: 'object', title: 'Cancelled Booking Response', required: ['bookingStatus'] },\n },\n BookingRefStatus: {\n DEFAULT : { type: 'object', title: 'Booking Response', required: ['bookingStatus'] },\n },\n BookingNotification: {\n DEFAULT : { type: 'object', title: 'Booking Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data'] },\n },\n BookingNotificationData: {\n DEFAULT : { type: 'object', title: 'Data', required: ['bookingStatus'], CHILDREN: ['bookingStatus', 'amendedBookingStatus', 'bookingCancellationStatus', 'carrierBookingRequestReference', 'carrierBookingReference', 'feedbacks', 'booking', 'amendedBooking'] },\n },\n bookingStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['RECEIVED','PENDING_UPDATE','UPDATE_RECEIVED','CONFIRMED','PENDING_AMENDMENT','REJECTED','DECLINED','CANCELLED','COMPLETED'] },\n },\n bookingCancellationStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['CANCELLATION_RECEIVED','CANCELLATION_DECLINED','CANCELLATION_CONFIRMED'] },\n },\n buyer: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesHouseBL: { $ref: '#/components/schemas/BuyerHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Buyer' },\n },\n Buyer: {\n DEFAULT : { type: 'object', title: 'Buyer', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n BuyerHBL: {\n DEFAULT : { type: 'object', title: 'Buyer (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n calculationBasis: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n callSign: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n cancel: {\n DEFAULT : { type: 'boolean' },\n },\n Cancel: {\n DEFAULT : { type: 'object', title: 'Cancel', CHILDREN: ['reason','isFYI'] },\n },\n cancelled: {\n PARENTS : { PortCallService: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n CancelBookingRequest: {\n DEFAULT : { type: 'object', title: 'Cancel Booking Request', CHILDREN: ['reason'] },\n },\n CancelShippingInstructionsUpdate: {\n DEFAULT : { type: 'object', title: 'Cancel Shipping Instructions 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','extendedNationalCommodityCodes','customsReferences'] },\n },\n CargoItemHBL: {\n DEFAULT : { type: 'object', title: 'Cargo Item (House B/L)', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','outerPackaging'] },\n },\n cargoItems: {\n PARENTS : {\n ConsignmentItemShipper: { items: {$ref: '#/components/schemas/CargoItemShipper' } },\n ConsignmentItem : { items: {$ref: '#/components/schemas/CargoItem' } },\n ConsignmentItemHBL : { items: {$ref: '#/components/schemas/CargoItemHBL' } },\n },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n CargoItemShipper: {\n DEFAULT : {type: 'object', title: 'Cargo Item (Shipper)', required: ['equipmentReference', 'cargoGrossWeight'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','extendedNationalCommodityCodes','houseBillOfLadingReference','customsReferences'] },\n },\n cargoMovementTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n cargoMovementTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n carrierBookingOffice: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.3' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { documentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/CarrierBookingOffice' },\n },\n CarrierBookingOffice: {\n DEFAULT : { type: 'object', title: 'Carrier Booking Office', required: ['partyName', 'UNLocationCode'], CHILDREN: ['partyName','UNLocationCode','address','addressLines','partyContactDetails'] },\n },\n carrierBookingRequestReference: {\n PARENTS : { CreateBookingResponse: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, BookingNotificationData: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierBookingReference: {\n PARENTS : { UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, BookingNotificationData: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierClauses: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 20000, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n },\n carrierCode: {\n PARENTS : { Moves:{}, booking: {}, amendedBooking: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$' },\n },\n carrierCodeListProvider: {\n PARENTS : { Moves:{}, booking: {}, amendedBooking: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n carrierExportVoyageNumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern: null } },\n PARENTS : { TerminalTimestamp: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n carrierImportVoyageNumber: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern: null } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carriersAgentAtDestination: {\n PARENTS : { DocumentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/CarriersAgentAtDestination' },\n },\n CarriersAgentAtDestination: {\n DEFAULT : { type: 'object', title: 'Carrier\\'s Agent At Destination', required: ['partyName', 'address', 'partyContactDetails'], CHILDREN: ['partyName','address','addressLines','partyContactDetails'] },\n },\n carrierServiceCode: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 11, pattern:null } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierServiceName: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 50, pattern:null } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierSCACCode: {\n DEFAULT : { type: 'string', pattern: '^\\\\S+$', maxLength: 4 },\n },\n changeRemark: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 250 } },\n },\n Charge: {\n DEFAULT : { type: 'object', title: 'Charge', required: ['chargeName', 'currencyAmount', 'currencyCode', 'paymentTermCode', 'calculationBasis', 'unitPrice', 'quantity'], CHILDREN: ['chargeName', 'extendedChargeName','currencyAmount','currencyCode','paymentTermCode','calculationBasis','unitPrice','quantity'] },\n },\n chargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', deprecated: true },\n },\n charges: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Charge'}},\n },\n city: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 65, pattern: null } },\n PARENTS : { PortOfLoading: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, PortOfDischarge: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, address: {}, Address: {}, AddressHBL: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n City: {\n DEFAULT : { type: 'object', title: 'City', required: ['city', 'countryCode'], CHILDREN: ['city','stateRegion','countryCode'] },\n },\n classifierCode: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { enum: ['ACT', 'EST'] } },\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT', 'EST', 'PLN', 'REQ'], pseudoEnum: [] }, // No validation is done on description\n },\n co2: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n 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','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n Commodity: {\n DEFAULT : { type: 'object', title: 'Commodity', required: ['commodityType'], CHILDREN: ['commoditySubReference', 'commodityType','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n commoditySubReference: {\n PARENTS : { Commodity: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n commodityType: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', maxLength: 550, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n competentAuthorityApproval: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern:'^\\\\S(?:.*\\\\S)?$' },\n },\n confirmedEquipments: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ConfirmedEquipment' } },\n },\n ConfirmedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n DEFAULT : { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup'] },\n },\n consignee: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.3' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/ConsigneeShipper' }, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ConsigneeHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Consignee' },\n },\n Consignee: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['partyName'], CHILDREN: ['partyName','address','addressLines','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','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences'] },\n },\n ConsigneeShipper: {\n DEFAULT : { type: 'object', title: 'Consignee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','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','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','shippingMarks','cargoItems', 'exportLicense', 'importLicense', 'references','customsReferences'] },\n },\n ConsignmentItemShipper: {\n DEFAULT : { type: 'object', title: 'Consignment Item (Shipper)', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes', 'cargoItems'], CHILDREN: ['carrierBookingReference','commoditySubReference', 'descriptionOfGoods','descriptionOfGoodsForCustoms','HSCodes','extendedHSCodes','nationalCommodityCodes','extendedNationalCommodityCodes','shippingMarks','shippingMarksForCustoms','cargoItems', 'exportLicense', 'importLicense','references','customsReferences'], allOf: true },\n },\n ConsignmentItemHBL: {\n DEFAULT : { type: 'object', title: 'Consignment Item (House B/L)', required: ['descriptionOfGoods', 'cargoItems', 'nationalCommodityCode'], CHILDREN: ['descriptionOfGoods','nationalCommodityCode','extendedNationalCommodityCodes','cargoItems','customsReferences'] },\n },\n contact: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n ContainerUnits: {\n DEFAULT : { type: 'object', title: 'Container Units', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n ContainerPositioning: {\n DEFAULT : { type: 'object', title: 'Container Positioning', required: ['location'], CHILDREN: ['dateTime', 'location' ] },\n },\n ContainerPositioningEstimated: {\n DEFAULT : { type: 'object', title: 'Container Positioning Estimated', required: ['location'], CHILDREN: ['estimatedDateTime', 'location' ] },\n },\n containerPositionings : {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, ConfirmedEquipment: { items: { $ref: '#/components/schemas/ContainerPositioningEstimated' } }},\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ContainerPositioning' } },\n },\n ContainerPositioningLocation: {\n DEFAULT : { type: 'object', title: 'Container Positioning Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n ContainerRestows: {\n DEFAULT : { type: 'object', title: 'Container units to restow', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n content: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', format: 'byte' },\n },\n contentType: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', maxLength: 100, default: 'application/pdf' },\n },\n contractQuotationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n controlTrackingRegistry: {\n DEFAULT : { type: 'string', maxLength: 1024, format: 'uri' },\n },\n country: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 75 } },\n },\n countryCode: {\n PARENTS : { PlaceOfAcceptance: {}, PlaceOfFinalDelivery: {}, PlaceOfBLIssue: {}, PlaceOfIssue: {}, address: {}, City: {}, Address: {}, AddressHBL: {}, PartyAddress: {}, AdvanceManifestFiling: {}, TaxLegalReference: {}, CustomsReference: {}, NationalCommodityCode: {}, ExtendedNationalCommodityCode: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n CreateBooking: {\n DEFAULT : { type: 'object', title: 'Create Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n CreateBookingResponse: {\n DEFAULT : { type: 'object', title: 'Create Booking Response', required: ['carrierBookingRequestReference'], CHILDREN: ['carrierBookingRequestReference'] },\n },\n CreateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions', required: ['transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n CreateShippingInstructionsResponse: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions Response', required: ['shippingInstructionsReference'], CHILDREN: ['shippingInstructionsReference'] },\n },\n currencyAmount: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n currencyCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', pattern: '^[A-Z]{3}$', minLength: 3, maxLength: 3 },\n },\n CustomsReference: {\n DEFAULT : { type: 'object', title: 'Customs Reference', required: ['type', 'countryCode', 'values'], CHILDREN: ['type','countryCode','values'] },\n },\n customsReferences: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: {}, CargoItemCarrier: {}, CargoItemShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipmentShipper: {}, TransportDocument: {}, transportDocument: {}, UtilizedTransportEquipment: {}, CargoItem: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, Commodity: {}, CommodityShipper: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/CustomsReference' } },\n },\n cutOffDateTime: {\n PARENTS : { ShipmentCutOffTime: {}, CutOffTime: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n cutOffDateTimeCode: {\n PARENTS : { ShipmentCutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','EFC'] }, CutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','PCO','ECP','EFC','RCO','DGC','OBC','TCO','STA','SPA','CUA','AFC'] } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n CutOffTime: {\n DEFAULT : { type: 'object', title: 'Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n cutOffTimes: {\n PARENTS : { PointToPoint: {}, Leg: {}, Schedule: {}, TransportCall: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/CutOffTime'} },\n },\n dangerousGoods: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DangerousGoods' } },\n },\n DangerousGoods: {\n 'BKG_v2.0.x' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n// 'BKG_v2.0.3' : { DEFAULT: { required: ['properShippingName', 'imoClass', 'isMarinePollutant', 'isLimitedQuantity', 'isExceptedQuantity', 'isSalvagePackings', 'isEmptyUncleanedResidue', 'isWaste', 'isHot', 'isCompetentAuthorityApprovalRequired', 'isReportableQuantity', 'emergencyContactDetails', 'grossWeight'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits','specialCertificateNumber','additionalContainerCargoHandling'] } },\n DEFAULT : { type: 'object', title: 'Dangerous Goods', oneOf: true, required: ['properShippingName', 'imoClass'], CHILDREN: ['codedVariantList','properShippingName','technicalName','imoClass','subsidiaryRisk1','subsidiaryRisk2','isMarinePollutant','packingGroup','isLimitedQuantity','isExceptedQuantity','isSalvagePackings','isEmptyUncleanedResidue','isWaste','isHot','isCompetentAuthorityApprovalRequired','competentAuthorityApproval','segregationGroups','innerPackagings','emergencyContactDetails','EMSNumber','endOfHoldingTime','fumigationDateTime','isReportableQuantity','inhalationZone','grossWeight','netWeight','netExplosiveContent','netVolume','limits'] },\n },\n data: {\n PARENTS : { BookingNotification: { $ref: '#/components/schemas/BookingNotificationData' }, ShippingInstructionsNotification: { $ref: '#/components/schemas/ShippingInstructionsData' }, TransportDocumentNotification: { $ref: '#/components/schemas/TransportDocumentData' } },\n DEFAULT : { type: 'object', title: 'Data' },\n },\n datacontenttype: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['application/json'], pseudoEnum: [] },\n },\n dateTime: {\n PARENTS : { Timestamp: {}, PlaceOfReceipt: {}, ContainerPositioning: {}, EmptyContainerPickup: {}, OriginEmptyContainerPickup: {}, PlaceOfDelivery: {}, PlaceOfArrival: {}, PlaceOfDeparture: {} },\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n declaredValue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n declaredValueCurrency: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', minLength: 3, maxLength: 3, pattern: '^[A-Z]{3}$' },\n },\n decline: {\n DEFAULT : { type: 'boolean' },\n },\n Decline: {\n DEFAULT : { type: 'object', title: 'Decline', CHILDREN: ['reason','isFYI'] },\n },\n declined: {\n PARENTS : { PortCallService: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n delayReasonCode: {\n 'OVS_v3.0.x' : { DEFAULT: { deprecated: true } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n delayReasonCodes: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 3} },\n },\n deliveryTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n departingVesselVoyage: {\n PARENTS : { ShipmentLocation: {} },\n DEFAULT : { type: 'object', title: \"Vessel Voyage\" },\n },\n departure: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDeparture' },\n },\n depotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n description: {\n PARENTS : { OuterPackaging: {}, InnerPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n descriptionOfGoods: {\n PARENTS : { ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: { type: 'string', maxItems: null, maxLength: 512, items: null, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n descriptionOfGoodsForCustoms: {\n PARENTS : { ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35 } },\n },\n destinationChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/DestinationChargesPaymentTerm' },\n },\n DestinationChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Destination Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n DetailedError: {\n 'OVS_v3.0.x' : { DEFAULT: { required: ['errorCodeText'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','erorCodeMessage'] } },\n DEFAULT : { type: 'object', title: 'Detailed Error', required: ['errorCodeText', 'errorCodeMessage'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','errorCodeMessage'] },\n },\n dimensionUnit: {\n DEFAULT : { type: 'string', enum: ['MTR', 'FOT'] },\n },\n dischargeLocation: {\n PARENTS : {Transport: {$ref:'#/components/schemas/DischargeLocation' } },\n },\n DischargeLocation: {\n DEFAULT : { type: 'object', title: 'Discharge Location', CHILDREN: ['locationName', 'facilityName', 'address','addressLines', 'facility', 'UNLocationCode'] },\n },\n dischargeUnits: {\n DEFAULT : { $ref: '#/components/schemas/DischargeUnits' }\n },\n DischargeUnits: {\n DEFAULT : { type: 'object', title: 'Discharge Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n displayedAddress: {\n PARENTS : { Shipper: {}, ShipperShipper: {}, Consignee: {}, ConsigneeShipper: {}, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {}, NotifyPartyShipper: {} },\n DEFAULT : { type: 'array', maxItems: 6, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfDelivery: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfReceipt: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfDischarge: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfLoad: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedShippedOnBoardReceivedForShipment: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 250 },\n },\n 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', 'facilityName', 'address','addressLines', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n emptyContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerUnits' }\n },\n EmptyContainerUnits: {\n DEFAULT : { type: 'object', title: 'Empty Container Units', oneOf:true },\n },\n emptyIndicatorCode: {\n DEFAULT : { type: 'string', enum: ['LADEN','EMPTY'] },\n },\n EMSNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 7 },\n },\n endOfHoldingTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n endorsee: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/EndorseeShipper' } },\n DEFAULT : { $ref: '#/components/schemas/Endorsee' },\n },\n Endorsee: {\n DEFAULT : { type: 'object', title: 'Endorsee', required: ['partyName','identifyingCodes'], CHILDREN: ['partyName','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n EndorseeShipper: {\n DEFAULT : { type: 'object', title: 'Endorsee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','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', 'carrierSCACCode', 'endorsementChain']},\n },\n EndorsementChainLink: {\n 'EBL_SUR_v3.0.x' : { DEFAULT: { required: ['actionDateTime', 'actionCode', 'actor', 'recipient'] } },\n DEFAULT : { type: 'object', title: 'Endorsement Chain Link', required: ['actionDateTime', 'actionCode', 'actor'], CHILDREN: ['actionDateTime', 'actionCode', 'actor', 'recipient','auditReference'] },\n },\n EnvelopeManifest: {\n DEFAULT : { type: 'object', title: 'Envelope Manifest', required: ['transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum'], CHILDREN: ['transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','eBLVisualisationByCarrier','supportingDocuments'] },\n },\n envelopeManifestSignedContent: {\n DEFAULT : { $ref: '#/components/schemas/EnvelopeManifestSignedContent' },\n },\n EnvelopeManifestSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n envelopeReference: {\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n envelopeTransferChain: {\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/EnvelopeTransferChainEntrySignedContent' } },\n },\n EnvelopeTransferChainEntry: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Chain Entry', required: ['eblPlatform','transportDocumentChecksum','transactions'], CHILDREN: ['eblPlatform','transportDocumentChecksum','previousEnvelopeTransferChainEntrySignedContentChecksum','issuanceManifestSignedContent','controlTrackingRegistry','transactions'] },\n },\n EnvelopeTransferChainEntrySignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EnvelopeTransferFinishedResponse: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Finished Response', required: ['lastEnvelopeTransferChainEntrySignedContentChecksum','responseCode'], CHILDREN: ['lastEnvelopeTransferChainEntrySignedContentChecksum','responseCode', 'duplicateOfAcceptedEnvelopeTransferChainEntrySignedContent', 'reason', 'missingAdditionalDocumentChecksums', 'receivedAdditionalDocumentChecksums'] },\n },\n EnvelopeTransferFinishedResponseSignedContent: {\n DEFAULT : { type: 'string', pattern: '^[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+\\\\.[A-Za-z0-9_-]+$' },\n },\n EnvelopeTransferStartedResponse: {\n DEFAULT : { type: 'object', title: 'Envelope Transfer Started Response', required: ['envelopeReference','transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','missingAdditionalDocumentChecksums'], CHILDREN: ['envelopeReference','transportDocumentChecksum','lastEnvelopeTransferChainEntrySignedContentChecksum','missingAdditionalDocumentChecksums'] },\n },\n equipment: {\n PARENTS : { UtilizedTransportEquipmentCarrier: { $ref: '#/components/schemas/Equipment' }, UTEquipment: { $ref: '#/components/schemas/RequiredEquipment' }, UtilizedTransportEquipment: { $ref: '#/components/schemas/Equipment' } },\n },\n Equipment: {\n DEFAULT : { type: 'object', title: 'Equipment', required: ['equipmentReference'], CHILDREN: ['equipmentReference','ISOEquipmentCode','tareWeight'] },\n },\n equipmentReference: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, CargoItem: {}, CargoItemShipper: {}, CargoItemHBL: {}, UTEquipmentReference: {}, Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n equipmentReferences: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, CargoItemCarrier: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n errorDateTime: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n errorCode: {\n PARENTS : { DetailedError: {}, errors: {}, IssuanceError: {type: 'string', maxLength: 50, pattern: '^\\\\S+$', format: null, minimum: null, maximum: null } },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 7000, maximum: 9999 },\n },\n erorCodeMessage: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 200 }, PARENTS: { DetailedError: {}, errors: {} } }, \n },\n errorCodeMessage: {\n PARENTS : { DetailedError: {}, errors: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n errorCodeText: {\n PARENTS : { DetailedError: {}, errors: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n ErrorResponse: {\n DEFAULT : { type: 'object', title: 'Error Response', required: ['httpMethod', 'requestUri', 'statusCode', 'statusCodeText','errorDateTime', 'errors'], CHILDREN: ['httpMethod','requestUri','statusCode','statusCodeText','statusCodeMessage','providerCorrelationReference','errorDateTime','errors'] },\n },\n errors: {\n 'OVS_v3.0.x' : { DEFAULT: { minItems: null } },\n PARENTS : { ErrorResponse: {}, IssuanceResponse: {minItems: null, maxItems: 255, items: {$ref: '#/components/schemas/IssuanceError'}} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/DetailedError'} },\n },\n estimatedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n estimatedEmptyContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n eventDateTime: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n eventTypeCode: {\n PARENTS : { TerminalTimestamp: {}, Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ARRI', 'DEPA'] },\n },\n eventClassifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['PLN', 'EST', 'ACT'] },\n },\n expectedArrivalAtPlaceOfDeliveryStartDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedArrivalAtPlaceOfDeliveryEndDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureFromPlaceOfReceiptDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expiryDate: {\n PARENTS : { ExportLicense: {}, ImportLicense: {},ExportLicenseShipper: {}, ImportLicenseShipper: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportDeclarationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n ExportLicense: {\n DEFAULT : { type: 'object', title: 'Export License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ExportLicenseShipper: {\n DEFAULT : { type: 'object', title: 'Export License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n exportLicense: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ExportLicense' },\n },\n exportLicenseExpiryDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportLicenseIssueDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n extendedChargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n extendedHSCodes: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, ConsignmentItem: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', items: { type: 'string', minLength: 6, maxLength: 12, pattern: '^\\\\d{6,12}$' } },\n },\n ExtendedNationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code (Extended)', required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n extendedNationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {}, ConsignmentItemHBL: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ExtendedNationalCommodityCode'} },\n },\n Facility: {\n 'JIT_v2.0.0' : { DEFAULT: { CHILDREN: ['facilityCode','facilityCodeListProvider','subFacility'] } },\n DEFAULT : { type: 'object', title: 'Facility', required: ['facilityCode', 'facilityCodeListProvider'], CHILDREN: ['facilityCode','facilityCodeListProvider'] },\n },\n facility: {\n DEFAULT : { $ref: '#/components/schemas/Facility' },\n },\n facilityCode: {\n 'EBL_v3.0.0' : { DEFAULT: { nullable: 'false'} },\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', maxLength: 6, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n facilityName: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { location: {} } },\n PARENTS : { TransportCallLocation: {}, PortScheduleLocation: {}, Location: {}, PlaceOfReceipt: {}, PlaceOfDelivery: {}, OnwardInlandRouting: {}, ContainerPositioningLocation: {}, EmptyContainerDepotReleaseLocation: {}, LoadLocation: {}, DischargeLocation: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n facilitySMDGCode: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { TerminalTimestamp: {}, location: {} } },\n PARENTS : { FacilitySMDGLocation: {}, TransportCallLocation: {}, PortScheduleLocation: {} },\n DEFAULT : { type: 'string', maxLength: 6 },\n },\n FacilitySMDGLocation: {\n DEFAULT : { type: 'object', title: 'Facility SMDG Location', required: ['UNLocationCode','facilitySMDGCode','locationType'] },\n },\n facilityTypeCode: {\n 'CS_v1.0.x' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n// 'CS_v1.0.1' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n 'JIT_v2.0.0' : { DEFAULT: { enum: ['PBPL', 'BRTH', 'ANCH'], pseudoEnum: [] }}, // No validation added for description\n DEFAULT : { type: 'string', maxLength: 4},\n },\n facilityCodeListProvider: {\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', enum: ['BIC', 'SMDG'] },\n },\n Feedback: {\n DEFAULT : { type: 'object', title: 'Feedback', required: ['severity', 'code', 'message'], CHILDREN: ['severity', 'code', 'message', 'jsonPath', 'property'] },\n },\n FeedbackElement: {\n DEFAULT : { type: 'object', title: 'Feedback Element', CHILDREN: ['severity', 'message', 'propertyPath'] },\n },\n feedbackElements: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/FeedbackElement' } },\n },\n feedbacks: {\n PARENTS : { ShippingInstructionsData: {}, ShippingInstructions: {}, TransportDocument: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/Feedback' } },\n },\n flag: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n flashPoint: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n floor: {\n 'OVS_v3.0.x' : { DEFAULT: { pattern: null } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 50 },\n },\n footprint: {\n DEFAULT : { type: 'object', CHILDREN: ['co2','sox','nox','pm10'] }\n },\n forwardDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n freeText: {\n PARENTS : { InvoicePayableAt: {} },\n DEFAULT : { type: 'string', maxLength: 35 }, // In TD invoicePayableAt\n },\n freightPaymentTermCode: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n fullContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n fumigationDateTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n GeoCoordinate: {\n DEFAULT : { type: 'object', title: 'Geo Coordinate', required: ['latitude', 'longitude'], CHILDREN: ['latitude', 'longitude'] },\n },\n geoCoordinate: {\n DEFAULT : { $ref: '#/components/schemas/GeoCoordinate' },\n },\n grossWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/GrossWeight' },\n },\n GrossWeight: {\n DEFAULT : { type: 'object', title: 'Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n 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', deprecated: true, items: { type: 'string', minLength: 6, maxLength: 10, pattern: '^\\\\d{6,10}$' } },\n },\n httpMethod: {\n 'OVS_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_SUR_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_ISS_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'EBL_v3.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'BKG_v2.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n 'CS_v1.0.x' : { DEFAULT: { enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', 'PATCH'] } },\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'], pseudoEnum: [] },\n },\n humiditySetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n id: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', maxLength: 100},\n },\n IdentifyingCode: {\n DEFAULT : { type: 'object', title: 'Identifying Code', required: ['codeListProvider', 'partyCode'], CHILDREN: ['codeListProvider','partyCode','codeListName'] },\n },\n identifyingCodes: {\n 'BKG_v2.0.x' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, IssueToParty: { minItems: null }, Party: { minItems: null } } },\n PARENTS : { BookingAgent: { minItems: null }, Shipper: { minItems: null }, ShipperShipper: { minItems: null }, OnBehalfOfShipper: { minItems: null }, OnBehalfOfShipperShipper: { minItems: null }, ShipperHBL: { minItems: null }, Consignee: {}, OnBehalfOfConsignee: {}, OnBehalfOfConsigneeShipper: {}, ConsigneeShipper: { minItems: null }, ConsigneeHBL: { minItems: null }, Endorsee: {}, EndorseeShipper: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { minItems: null }, Party: { minItems: null }, PartyShipper: { minItems: null }, PartyHBL: { minItems: null }, IssuingParty: { minItems: null }, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: { minItems: null }, NotifyParty: { minItems: null }, NotifyPartyShipper: { minItems: null }, NotifyPartyHBL: { minItems: null }, Seller: { minItems: null }, SellerHBL: { minItems: null }, Buyer: { minItems: null }, BuyerHBL: { minItems: null }, ShippingInstructionsRequestor: { minItems: null }, RepresentedActorParty: { minItems: null }, RepresentedRecipientParty: { minItems: null } },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/IdentifyingCode'} },\n },\n imoClass: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 4, pseudoEnum: ['1.1A','1.6N','2.1','8'] },\n },\n imoPackagingCode: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 5, pattern: '^[A-Z0-9]{1,5}$' },\n },\n ImportLicense : {\n DEFAULT : { type: 'object', title: 'Import License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ImportLicenseShipper : {\n DEFAULT : { type: 'object', title: 'Import License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n importLicense : {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ImportLicense' },\n },\n incoTerms: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n inhalationZone: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 1, pseudoEnum: ['A','B','C','D'] },\n },\n InnerPackaging: {\n DEFAULT : { type: 'object', title: 'Inner Packaging', required: ['quantity', 'material', 'description'], CHILDREN: ['quantity','material','description', 'innerPackagings'] },\n },\n innerPackagings: {\n PARENTS : { DangerousGoods: {}, InnerPackaging: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/InnerPackaging' } },\n },\n 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','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n isToOrder: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {}, HouseBillOfLading: {} },\n DEFAULT : { type: 'boolean' },\n },\n isVentilationOpen: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isWaste: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n jsonPath: {\n PARENTS : { Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 500 },\n },\n ladenContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/LadenContainerUnits' }\n },\n LadenContainerUnits: {\n DEFAULT : { type: 'object', title: 'Laden Container Units', oneOf:true },\n },\n 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','footprint','cutOffTimes'] },\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', 'facilityName', 'address','addressLines', 'facility', 'UNLocationCode' ] },\n },\n loadUnits: {\n DEFAULT : { $ref: '#/components/schemas/LoadUnits' }\n },\n LoadUnits: {\n DEFAULT : { type: 'object', title: 'Load Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n location: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { type: 'object', title: 'Location' }, PARENTS: { TransportCall: {} } },\n 'OVS_v3.0.x' : { PARENTS: { TransportCall: {} } },\n 'CS_v1.0.x' : { PARENTS: { PlaceOfReceipt: { $ref: '#/components/schemas/Location' }, TransportCall: { $ref: '#/components/schemas/TransportCallLocation' }, PortSchedule: { $ref: '#/components/schemas/PortScheduleLocation' }, PlaceOfDelivery: { $ref: '#/components/schemas/Location' }, PlaceOfArrival: { $ref: '#/components/schemas/Location' }, PlaceOfDeparture: { $ref: '#/components/schemas/Location' } } },\n PARENTS : { ShipmentLocation: {}, ContainerPositioning: {$ref: '#/components/schemas/ContainerPositioningLocation'}, ContainerPositioningEstimated: {$ref: '#/components/schemas/ContainerPositioningLocation'} },\n DEFAULT : { $ref: '#/components/schemas/Location' },\n },\n Location: {\n 'CS_v1.0.x' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','facilityName','address','addressLines','UNLocationCode','facility'] } },\n DEFAULT : { type: 'object', title: 'Location', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode','geoCoordinate'] },\n },\n locationName: {\n 'OVS_HUB_TER_v1.0.x' : { PARENTS: { location: {} } },\n 'OVS_v3.0.x' : { PARENTS: { AddressLocation: { pattern: null }, FacilitySMDGLocation: { pattern: null }, UNLocationLocation: { pattern: '^\\\\S+(\\\\s+\\\\S+)*$' } } },\n PARENTS : { PortScheduleLocation: {}, TransportCallLocation:{}, VesselPosition: {}, PortCallServiceLocation: {}, PortCallServiceLocationTimestamp: {}, PlaceOfAcceptance: { maxLength: 35}, PlaceOfFinalDelivery: { maxLength: 35}, PlaceOfReceipt: {}, PortOfLoading: {}, PlaceOfDelivery: {}, PortOfDischarge: {}, OnwardInlandRouting:{}, PlaceOfIssue: {}, PlaceOfBLIssue: {}, Location: {}, ContainerPositioningLocation: {}, EmptyContainerDepotReleaseLocation: {}, LoadLocation: {}, DischargeLocation: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n locationType: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 4 }, PARENTS: { AddressLocation: {}, FacilitySMDGLocation: {}, UNLocationLocation: {} } },\n// PARENTS : { AddressLocation: {}, FacilitySMDGLocation: {}, UNLocationLocation: {} },\n// PARENTS : { AddressLocation: {}, CityLocation: {}, Facility: {}, UNLocationLocation: {}, FacilitySMDGLocation: {} },\n// DEFAULT : { type: 'string', maxLength: 4 },\n },\n locationTypeCode: {\n PARENTS : { ShipmentLocation: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['PRE','POL','POD','PDE','PCF','OIR','ORI','IEL','PTP','RTP','FCD','ROU'] },\n },\n longitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 11 },\n },\n 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: {}, FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n methodOfPayment: {\n DEFAULT : { type: 'string', maxLength: 1, pseudoEnum: ['A','B','C','D','H','Y','Z'] },\n },\n milesToDestinationPort: {\n DEFAULT : { type: 'number', format: 'float' }\n },\n missingAdditionalDocumentChecksums: {\n PARENTS : { EnvelopeTransferFinishedResponse: { minItems: null}, EnvelopeTransferStartedResponse: {} },\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n MMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n modeOfTransport: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n PARENTS : { Transport: { pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] }, VesselTransport: { maxLength: null, enum: ['VESSEL'], pseudoEnum: [] }, BargeTransport: { maxLength: null, enum: ['BARGE'], pseudoEnum: []}, OtherTransport: { maxLength: null, enum: ['RAIL_TRUCK', 'BARGE_TRUCK', 'BARGE_RAIL', 'MULTIMODAL', 'RAIL', 'TRUCK'] } },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n moves: {\n DEFAULT : { $ref: '#/components/schemas/MovesList' }\n },\n Moves: {\n DEFAULT : { type: 'object', title: 'Moves', CHILDREN: ['carrierCode','carrierCodeListProvider','restows'], oneOf: true },\n },\n MovesList: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Moves'} },\n },\n name: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 100, pattern: null }, PARENTS: { address: {} } },\n PARENTS : { DocumentMetadata: {}, Vessel: { maxLength: 50 }, Barge: { maxLength: 50 }, SupportingDocument: {maxLength: 100, pattern: null }, vessel: { maxLength: 50 }, PartyContactDetail: { maxLength: 35 }, PartyContactDetailHBL: { maxLength: 35 }, PartyContactDetailWithPattern: { maxLength: 35 } },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n NANumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n NationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code', deprecated: true, required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n nationalCommodityCode: {\n PARENTS : { ConsignmentItemHBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NationalCommodityCode' },\n },\n nationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { type: 'array', deprecated: true, items: {$ref: '#/components/schemas/NationalCommodityCode'} },\n },\n netExplosiveContent: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetExplosiveContent' },\n },\n NetExplosiveContent: {\n DEFAULT : { type: 'object', title: 'Net Explosive Content', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetWeight' },\n },\n NetWeight: {\n DEFAULT : { type: 'object', title: 'Net Weight', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netVolume: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetVolume' },\n },\n NetVolume: {\n DEFAULT : { type: 'object', title: 'Net Volume', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n nox: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n notifyParties: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { items: { $ref: '#/components/schemas/NotifyPartyShipper' } } },\n DEFAULT : { type: 'array', maxItems: 3, items: { $ref: '#/components/schemas/NotifyParty' } },\n },\n notifyParty: {\n PARENTS : { DocumentPartiesHouseBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NotifyPartyHBL' },\n },\n NotifyParty: {\n DEFAULT : { type: 'object', title: 'Notify Party', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n NotifyPartyShipper: {\n DEFAULT : { basedOn: 'NotifyParty', title: 'Notify Party (Shipper provided)' },\n },\n NotifyPartyHBL: {\n DEFAULT : { type: 'object', title: 'Notify Party (House B/L)', required: ['partyName','partyContactDetails', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n number: {\n PARENTS : { Seal: {} },\n DEFAULT : { type: 'string', maxLength: 15 },\n },\n numberOfCopiesWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfCopiesWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfPackages: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {}, OuterPackagingHBL: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1, maximum: 99999999 },\n },\n numberOfRiderPages: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n o2Setpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n omit: {\n DEFAULT : { type: 'boolean' },\n },\n OmitPortCall: {\n DEFAULT : { type: 'object', title: 'Omit Port Call', CHILDREN: ['reason','isFYI'] },\n },\n OmitTerminalCall: {\n DEFAULT : { type: 'object', title: 'Omit Terminal Call', CHILDREN: ['reason','isFYI'] },\n },\n omitted: {\n PARENTS : { PortCall: {}, TerminalCall: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n onBehalfOfConsignee : {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/OnBehalfOfConsigneeShipper' } },\n DEFAULT : { $ref: '#/components/schemas/OnBehalfOfConsignee' },\n },\n OnBehalfOfConsignee: {\n DEFAULT : { type: 'object', title: 'On Behalf of Consignee', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes'] },\n },\n OnBehalfOfConsigneeShipper :{\n DEFAULT : { basedOn: 'OnBehalfOfConsignee', title: 'On Behalf of Consignee (Shipper provided)' },\n },\n onBehalfOfShipper : {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/OnBehalfOfShipperShipper' } },\n DEFAULT : { $ref: '#/components/schemas/OnBehalfOfShipper' },\n },\n OnBehalfOfShipper: {\n DEFAULT : { type: 'object', title: 'On Behalf of Shipper', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes'] },\n },\n OnBehalfOfShipperShipper :{\n DEFAULT : { basedOn: 'OnBehalfOfShipper', title: 'On Behalf of Shipper (Shipper provided)' },\n },\n onCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n onwardInlandRouting: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/OnwardInlandRouting' },\n },\n OnwardInlandRouting: {\n DEFAULT : { type: 'object', title: 'Onward Inland Routing', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode'] },\n },\n 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: { $ref: '#/components/schemas/PartyShipper' }, OtherDocumentPartyHBL: { $ref: '#/components/schemas/PartyHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Party' },\n },\n Party: {\n DEFAULT : { type: 'object', title: 'Party', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n PartyShipper: {\n DEFAULT : { basedOn: 'Party', title: 'Party (Shipper provided)' },\n },\n PartyAddress: {\n DEFAULT : { type: 'object', title: 'Party Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street','streetNumber','floor','postCode','POBox', 'city','UNLocationCode','stateRegion','countryCode'] },\n },\n PartyHBL: {\n DEFAULT : { type: 'object', title: 'Party (House B/L)', required: ['partyName'], CHILDREN: ['partyName','address','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n partyCode: {\n PARENTS : { IdentifyingCode: {}, identifyingCode: {} },\n DEFAULT : { type: 'string', maxLength: 150 },\n },\n partyContactDetails: {\n 'BKG_v2.0.x' : { DEFAULT: {items: {$ref: '#/components/schemas/PartyContactDetail'} },PARENTS: { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, BookingAgent: {minItems: 1}, Shipper: {minItems: 1}, Consignee: {minItems: 1}, ServiceContractOwner: {minItems: 1}, CarrierBookingOffice: {minItems: 1}, Party: {minItems: 1} } },\n PARENTS : { Buyer: {items: {$ref: '#/components/schemas/PartyContactDetailWithPattern'}}, BuyerHBL: {items: {$ref: '#/components/schemas/PartyContactDetailHBL'}}, Seller: {items: {$ref: '#/components/schemas/PartyContactDetailWithPattern'}}, SellerHBL: {items: {$ref: '#/components/schemas/PartyContactDetailHBL'}}, CreateShippingInstructions: {minItems: 1}, UpdateShippingInstructions: {minItems: 1}, ShippingInstructions: {minItems: 1}, shippingInstructions: {minItems: 1}, updatedShippingInstructions: {minItems: 1}, Shipper: {}, ShipperShipper: {}, ShipperHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {}, NotifyPartyShipper: {}, NotifyPartyHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL'} }, Party: {}, PartyShipper: {}, PartyHBL: { items: {$ref: '#/components/schemas/PartyContactDetailHBL' } }, CarriersAgentAtDestination: {}, IssuingParty: {}, ShippingInstructionsRequestor: {}, TransportDocument: {minItems: 1}, transportDocument: { minItems: 1 } },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/PartyContactDetail'} },\n },\n PartyContactDetail: {\n DEFAULT : { type: 'object', title: 'Party Contact Detail', required: ['name'], CHILDREN: ['name'] },\n },\n PartyContactDetailHBL: {\n DEFAULT : { type: 'object', title: 'Party Contact Detail (House B/L)', required: ['name'], CHILDREN: ['name'] },\n },\n PartyContactDetailWithPattern: {\n DEFAULT : { type: 'object', title: 'Party Contact Detail (with phone pattern)', required: ['name'], CHILDREN: ['name'] },\n },\n partyFunction: {\n 'BKG_v2.0.0' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI'] } } },\n 'BKG_v2.0.x' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC','CSR'] } } },\n// 'BKG_v2.0.2' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC'] } } },\n PARENTS : { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','SCO'] }, OtherDocumentPartyShippingInstructions: { pseudoEnum: ['DDR','DDS','COW','COX','SCO','CS','MF','WH'] }, OtherDocumentPartyHBL: { pseudoEnum: ['DDR','DDS','CS','MF','WH']} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n partyName: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperShipper: {}, OnBehalfOfShipper: {}, OnBehalfOfShipperShipper: {}, ShipperHBL: {}, Consignee: {}, OnBehalfOfConsignee: {}, OnBehalfOfConsigneeShipper: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, CarrierBookingOffice: {}, Party: {}, PartyShipper: {}, PartyHBL: {}, CarriersAgentAtDestination: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, NotifyPartyShipper: {}, NotifyPartyHBL: {}, Seller: {}, SellerHBL: {}, Buyer: {}, BuyerHBL: {}, ReceiverValidationResponse: {}, ShippingInstructionsRequestor: {}, RepresentedActorParty: {}, RepresentedRecipientParty: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n paymentTermCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n phone: {\n PARENTS : { PartyContactDetail: {}, PartyContactDetailHBL: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, PartyContactDetailWithPattern: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 30, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n placeOfAcceptance: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfAcceptance' },\n },\n PlaceOfAcceptance: {\n DEFAULT : { type: 'object', title: 'Place of Acceptance', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n PlaceOfArrival: {\n DEFAULT : { type: 'object', title: 'Place of Arrival', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['transportCallReference','facilityTypeCode','location','dateTime'] },\n },\n placeOfBLIssue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfBLIssue' },\n },\n PlaceOfBLIssue: {\n DEFAULT : { type: 'object', title: 'Place of B/L Issue', oneOf: {UNLocationCode: {}, countryCode: {} }, CHILDREN: ['locationName'] },\n },\n PlaceOfDeparture: {\n DEFAULT : { type: 'object', title: 'Place of Departure', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['transportCallReference','facilityTypeCode','location','dateTime'] },\n },\n placeOfFinalDelivery: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfFinalDelivery' },\n },\n PlaceOfFinalDelivery: {\n DEFAULT : { type: 'object', title: 'Place of Final Delivery', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n placeOfIssue: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfIssue' },\n },\n PlaceOfIssue: {\n DEFAULT : { type: 'object', title: 'Place of Issue', oneOf: true, CHILDREN: ['locationName'] },\n },\n placeOfDelivery: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDelivery' },\n },\n PlaceOfDelivery: {\n 'CS_v1.0.x' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n// 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Delivery', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode','geoCoordinate'] },\n },\n placeOfReceipt: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfReceipt' },\n },\n PlaceOfReceipt: {\n 'CS_v1.0.x' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n// 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Receipt', CHILDREN: ['locationName','facilityName','address','addressLines','facility','UNLocationCode','geoCoordinate'] },\n },\n plannedArrivalDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n plannedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n plannedDepartureDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n pm10: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n POBox: {\n DEFAULT : { type: 'string', maxLength: 20 },\n },\n PointToPoint: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','transitTime','legs'] } },\n DEFAULT : { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','routingReference','transitTime','solutionFootprint','legs'] },\n },\n portCall: {\n DEFAULT : { $ref: '#/components/schemas/PortCall' },\n },\n PortCall: {\n DEFAULT : { type: 'object', title: 'Port Call', required: ['portCallID', 'UNLocationCode','vessel'], CHILDREN: ['portCallID','portVisitReference','UNLocationCode','vessel','omitted','isFYI'] },\n },\n PortCalls: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCall' } },\n },\n portCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallPhaseTypeCode: {\n DEFAULT : { type: 'string', enum: ['INBD', 'ALGS', 'SHIF', 'OUTB'], pseudoEnum: []}, // No validation added for description\n },\n PortCallServices: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCallService' } },\n },\n PortCallService: {\n DEFAULT : { type: 'object', title: 'Port Call Service', required: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallServiceLocation'], CHILDREN: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallPhaseTypeCode','facilityTypeCode','portCallServiceLocation','moves','cancelled','declined','isFYI'] },\n },\n portCallServiceEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'], pseudoEnum: []}, // No validation added for description\n },\n portCallServiceID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallServiceLocation: {\n PARENTS : { PortCallService: { $ref: '#/components/schemas/PortCallServiceLocation' }, Timestamp: { $ref: '#/components/schemas/PortCallServiceLocationTimestamp' } },\n },\n PortCallServiceLocation: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n PortCallServiceLocationTimestamp: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location (Timestamp)', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n portCallServiceTypeCode: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: []}, // No validation added for description\n },\n portChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n portOfDischarge: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfDischarge' },\n },\n PortOfDischarge: {\n DEFAULT : { type: 'object', title: 'Port of Discharge', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n portOfLoading: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfLoading' },\n },\n PortOfLoading: {\n DEFAULT : { type: 'object', title: 'Port of Loading', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n PortSchedule: {\n DEFAULT : { type: 'object', title: 'Port Schedule', required: ['location'], CHILDREN: ['location', 'vesselSchedules'] },\n },\n PortScheduleLocation: {\n DEFAULT : { type: 'object', title: 'Port Schedule Location', CHILDREN: ['locationName','facilityName','UNLocationCode','facilitySMDGCode'] },\n },\n portVisitReference: {\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, PortCall: {}, },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n positionCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', pseudoEnum: ['PBPL', 'BRTH', 'ANCH', 'PORT'] },\n },\n postCode: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 50 } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n preCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n previousEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n property: {\n PARENTS : { ErrorResponse: {}, Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n propertyPath: {\n PARENTS : { FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 1000 },\n },\n provider: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n properShippingName: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 250 },\n },\n providerCorrelationReference: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n publisherRole: {\n DEFAULT : { type: 'string', enum: ['CA', 'AG', 'VSL', 'ATH', 'PLT', 'TWG', 'MOR', 'TR', 'LSH', 'BUK', 'SLU', 'SVP'] },\n },\n purchaseOrderReferences: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n quantity: {\n PARENTS : { InnerPackaging: { type: 'integer', format: 'int32' }, Charge: { type: 'number', format: 'float', minimum: '0' } },\n },\n reason: {\n 'JIT_v2.0.0' : { DEFAULT: { maxLength: 500 } },\n PARENTS : { CancelBookingRequest: {}, EnvelopeTransferFinishedResponse: {maxLength: 255}, IssuanceError: {maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$'}, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, Booking: {}, booking: {}, amendedBooking: {}, data: {}, BookingRefStatus: {}, BookingRefCancelledStatus: {}, IssuanceResponse: {maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n reasonCode: {\n DEFAULT : { type: 'string', maxLength: 4, pseudoEnum: ['SWTP', 'COD', 'SWI'] },\n },\n reeferPluggedContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/ReeferPluggedContainerUnits' }\n },\n ReeferPluggedContainerUnits: {\n DEFAULT : { type: 'object', title: 'Reefer Plugged Container Units', oneOf:true },\n },\n remark: {\n DEFAULT : { type: 'string', maxLength: 500 },\n },\n receiptTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n receivedAdditionalDocumentChecksums: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n receivedForShipmentDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n ReceiverValidationResponse: {\n DEFAULT : { type: 'object', title: 'Receiver Validation Response', required: ['partyName'], CHILDREN: ['partyName'] },\n },\n recipient: {\n PARENTS : { EndorsementChainLink: {}, Transaction: {} },\n DEFAULT : { $ref: '#/components/schemas/RecipientParty' },\n },\n reference: {\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n Reference: {\n DEFAULT : { type: 'object', title: 'Reference', required: ['type', 'value'], CHILDREN: ['type','value'] },\n },\n ReferenceConsignmentItem: {\n DEFAULT : { type: 'object', title: 'Reference (Consignment Item)', required: ['type', 'values'], CHILDREN: ['type','values'] },\n },\n referenceNumber: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n 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 role: {\n PARENTS : { VesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['FIRST_SEA_GOING', 'MOTHER'] },\n },\n routingOfConsignmentCountries: {\n DEFAULT : { type: 'array', minItems: 1, items: { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' } },\n },\n routingReference: {\n DEFAULT : { type: 'string', maxLength: 5000, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n SADT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n SAPT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n Schedule: {\n DEFAULT : { type: 'object', title: 'Schedule', required: ['servicePartners', 'isDummyVessel', 'timestamps'] },\n },\n Seal: {\n DEFAULT : { type: 'object', title: 'Seal', required: ['number'], CHILDREN: ['number','source'] },\n },\n seals: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, UtilizedTransportEquipmentShipper: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Seal'} },\n },\n segregationGroups: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: {type: 'string', maxLength: 2, pseudoEnum: ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18'] } },\n },\n selfFilerCode: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n seller: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesHouseBL: { $ref: '#/components/schemas/SellerHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Seller' },\n },\n Seller: {\n DEFAULT : { type: 'object', title: 'Seller', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n SellerHBL: {\n DEFAULT : { type: 'object', title: 'Seller (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n sendToPlatform: {\n PARENTS : { IssueToParty: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$', 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','addressLines','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference'] },\n },\n serviceContractReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 30 },\n },\n ServicePartner: {\n 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: {}, FeedbackElement: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFO','WARN','ERROR'] },\n },\n shipmentCutOffTimes: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ShipmentCutOffTime'} },\n },\n ShipmentCutOffTime: {\n DEFAULT : { type: 'object', title: 'Shipment Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n ShipmentLocation: {\n DEFAULT : { type: 'object', title: 'Shipment Location', required: ['location', 'locationTypeCode'], CHILDREN: ['location','locationTypeCode', 'departingVesselVoyage'] },\n },\n shipmentLocations: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/ShipmentLocation'} },\n },\n shippedOnBoardDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n shipper: {\n 'BKG_v2.0.x' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.1' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n// 'BKG_v2.0.2' : { PARENTS: { DocumentParties: {}, DocumentPartiesReq: {} } },\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/ShipperShipper' }, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ShipperHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Shipper' },\n },\n Shipper: {\n 'BKG_v2.0.x' : { DEFAULT: { CHILDREN: ['partyName','address','addressLines','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference', 'purchaseOrderReferences'] } },\n// 'BKG_v2.0.1' : { DEFAULT: { CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference', 'purchaseOrderReferences'] } },\n// 'BKG_v2.0.2' : { DEFAULT: { CHILDREN: ['partyName','address','partyContactDetails','identifyingCodes','taxLegalReferences', 'reference', 'purchaseOrderReferences'] } },\n DEFAULT : { type: 'object', title: 'Shipper', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','addressLines','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference', 'purchaseOrderReferences'] },\n },\n ShipperShipper: {\n DEFAULT : { basedOn: 'Shipper', title: 'Shipper (Shipper provided)' },\n },\n ShipperHBL: {\n DEFAULT : { type: 'object', title: 'Shipper (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n ShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions', required: ['shippingInstructionsStatus', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n shippingInstructions: {\n PARENTS : { ShippingInstructionsData: {} },\n DEFAULT : { $ref: '#/components/schemas/ShippingInstructionsFullNotification' },\n },\n ShippingInstructionsData: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Data', required: ['shippingInstructionsStatus'], CHILDREN: ['shippingInstructionsStatus', 'updatedShippingInstructionsStatus', 'shippingInstructionsReference', 'transportDocumentReference','transportDocumentSubReference', 'feedbacks', 'shippingInstructions', 'updatedShippingInstructions'] }\n },\n ShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Full Notification', allOf: true },\n },\n ShippingInstructionsNotification: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data']},\n },\n shippingInstructionsReference: {\n PARENTS : { CreateShippingInstructionsResponse: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, TransportDocument: {}, transportDocument: {}, ShippingInstructionsData: {}, TransportDocumentData: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n ShippingInstructionsRefCancelStatus: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Cancel Response', required: ['shippingInstructionsStatus'] },\n },\n ShippingInstructionsRefStatus: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Response', required: ['shippingInstructionsStatus'] },\n },\n shippingInstructionsRequestor: {\n PARENTS : { DocumentPartiesShippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/ShippingInstructionsRequestor' },\n },\n ShippingInstructionsRequestor: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Requestor', required: ['partyName'], CHILDREN: ['partyName','address','addressLines','identifyingCodes','partyContactDetails'] },\n },\n shippingInstructionsRevisionNumber: {\n DEFAULT : { type: 'integer' },\n },\n shippingInstructionsStatus: {\n PARENTS : { 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 shippingMarksForCustoms: {\n PARENTS : { ConsignmentItemShipper: {} },\n DEFAULT : { type: 'array', maxItems: 50, items: {type: 'string', maxLength: 35 } },\n },\n signatureHash: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n size: {\n PARENTS : { DocumentMetadata: {} },\n DEFAULT : { type: 'number', minimum: 1 }\n },\n sox: {\n PARENTS : { footprint: {}, solutionFootprint: {} },\n DEFAULT : { type: 'number', format: 'double' },\n },\n solutionFootprint: {\n DEFAULT : { type: 'object', CHILDREN: ['co2','sox','nox','pm10'] }\n },\n solutionNumber: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 }\n },\n source: {\n // Removing DCSA_CLOUDEVENT_GROUP in the default in order to handle 'source' inside a 'Seal'\n PARENTS : { ShippingInstructionsNotification: {maxLength: 4096}, TransportDocumentNotification: {maxLength: 4096}, BookingNotification: {maxLength: 4096}, ArrivalNoticeNotification: {maxLength: 4096}, Seal: {enum: ['CAR', 'SHI', 'VET', 'CUS'] } },\n DEFAULT : { type: 'string' },\n },\n SpecificUnits: {\n DEFAULT : { type: 'object', title: 'Specific Units (for load and discharge)', CHILDREN: ['loadUnits', 'dischargeUnits'] },\n },\n specialCertificateNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n specversion: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['1.0'], pseudoEnum: [] },\n },\n stateRegion: {\n PARENTS : { Address:{}, address: {}, AddressHBL: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 65 },\n },\n statusCode: {\n 'OVS_v3.0.2' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'], deprecated: true } }, },\n 'OVS_v3.0.1' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'], deprecated: true } }, },\n 'OVS_v3.0.0' : { PARENTS: { ErrorResponse: {}, TransportCall: { type: 'string', format: null, pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR'] } }, },\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n statusCodes: {\n DEFAULT : { type: 'array', items: { type: 'string', pseudoEnum: ['OMIT','BLNK','ADHO','PHOT','PHIN','SLID','ROTC','CUTR','DRYD','BUNK','OOSV'] } },\n },\n statusCodeMessage: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 200 },\n },\n statusCodeText: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n street: {\n 'OVS_v3.0.x' : { DEFAULT: { maxLength: 100 } },\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 70 },\n },\n streetNumber: {\n PARENTS : { Address: {}, address: {}, AddressHBL: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n subFacility: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subscriptionReference: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subsidiaryRisk1: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n subsidiaryRisk2: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n identificationNumber: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 17 },\n },\n SupportingDocument: {\n DEFAULT : { type: 'object', title: 'Supporting Document', required: ['name', 'content'] },\n },\n supportingDocuments: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/DocumentMetadata'} },\n },\n SurrenderRequestAnswer: {\n DEFAULT : { type: 'object', title: 'Surrender Request Answer', required: ['surrenderRequestReference', 'action'] },\n },\n surrenderRequestCode: {\n DEFAULT : { type: 'string', enum: ['SREQ', 'AREQ'] },\n },\n SurrenderRequestDetails: {\n DEFAULT : { type: 'object', title: 'Surrender Request Details', required: ['surrenderRequestReference','transportDocumentReference','surrenderRequestCode'] },\n },\n // SurrenderRequestedBy should be deleted\n SurrenderRequestedBy: {\n DEFAULT : { type: 'object', title: 'Surrender Requested By', required: ['partyName', 'eblPlatform'] },\n },\n surrenderRequestReference: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n tareWeight: {\n PARENTS : { Equipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, RequiredEquipment: {} },\n DEFAULT : { $ref: '#/components/schemas/TareWeight' },\n },\n TareWeight: {\n DEFAULT : { type: 'object', title: 'Tare Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n tareWeightUnit: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n TaxLegalReference: {\n DEFAULT : { type: 'object', title: 'Tax & Legal Reference', required: ['type', 'countryCode', 'value'], CHILDREN: ['type','countryCode','value'] },\n },\n taxLegalReferences: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperShipper: {}, ShipperHBL: {}, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, Party: {}, PartyShipper: {}, PartyHBL: {}, IssuingParty: {}, IssueToParty: {}, ActorParty: {}, RecipientParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, NotifyPartyShipper: {}, NotifyPartyHBL: {}, Seller: {}, SellerHBL: {}, Buyer: {}, BuyerHBL: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/TaxLegalReference'} },\n },\n technicalName: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 250 },\n },\n temperatureSetpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n temperatureUnit: {\n PARENTS : { ActiveReeferSettings: {}, Limits: {} },\n DEFAULT : { type: 'string', enum: ['CEL', 'FAH'] },\n },\n terminalCall: {\n DEFAULT : { $ref: '#/components/schemas/TerminalCall' },\n },\n TerminalCall: {\n DEFAULT : { type: 'object', title: 'Terminal Call', required: ['terminalCallID','portCallID','carrierServiceName','carrierServiceCode'], CHILDREN: ['terminalCallID','portCallID', 'terminalCallReference', 'terminalCallSequenceNumber','carrierServiceName','carrierServiceCode','universalServiceReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','omitted','isFYI'] },\n },\n TerminalCalls: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TerminalCall' } },\n },\n terminalCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n terminalCallReference: {\n PARENTS : { TerminalCall: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n terminalCallSequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n TerminalTimestamp: {\n DEFAULT : { type: 'object', title: 'Terminal Timestamp', required: ['vesselOperatorSMDGLinerCode','timestampClassifierCode','timestampTypeCode','timestampPositionCode','timestampDateTime'] },\n },\n termsAndConditions: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 50000 },\n },\n time: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', format: 'date-time'},\n },\n Timestamp: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { required: ['typeCode', 'classifierCode', 'positionCode', 'dateTime'], CHILDREN: ['typeCode', 'classifierCode', 'positionCode', 'dateTime'] } },\n 'OVS_v3.0.x' : { DEFAULT: { required: ['eventClassifierCode', 'eventDateTime','eventTypeCode'], CHILDREN: ['eventTypeCode','eventClassifierCode','eventDateTime','delayReasonCode','delayReasonCodes','changeRemark']} },\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_HUB_TER_v1.0.x' : { DEFAULT: { required: ['carrierImportVoyageNumber','transportCallReference', 'timestamps'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','timestamps'] } },\n 'OVS_v3.0.2' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','statusCodes','timestamps'] } },\n 'OVS_v3.0.1' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','statusCodes','timestamps'] } },\n 'OVS_v3.0.0' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['carrierImportVoyageNumber','transportCallReference'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','location','statusCode','timestamps'] } },\n 'JIT_v2.0.0' : { DEFAULT: { type: 'object', title: 'Transport Call', required: ['transportCallID'], CHILDREN: ['transportCallID', 'transportCallReference', 'transportCallSequenceNumber','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','omitted'] } },\n DEFAULT : { type: 'object', title: 'Transport Call', required: ['transportCallReference', 'carrierImportVoyageNumber', 'timestamps'], CHILDREN: ['portVisitReference','transportCallReference','carrierImportVoyageNumber','carrierExportVoyageNumber','universalImportVoyageReference','universalExportVoyageReference','cutOffTimes','location','timestamps'] },\n },\n transportCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n transportCallReference: {\n 'OVS_HUB_TER_v1.0.0' : { DEFAULT: { pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: { deprecated: true }, BargeTransport: { deprecated: true }, PlaceOfArrival: {}, PlaceOfDeparture: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n TransportCallLocation: {\n DEFAULT : { type: 'object', title: 'TransportCall Location', CHILDREN: ['locationName','facilityName','address','addressLines','UNLocationCode','facilitySMDGCode'] },\n },\n transportCalls: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { minItems: 1 } },\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportCall' } },\n },\n transportCallSequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transportControlTemperature: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n TransportDocument: {\n 'EBL_PINT_v3.0.0' : { DEFAULT: { $ref: '#/components/schemas/TransportDocument' } },\n 'EBL_v3.0.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 ExtendedNationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n// 'BKG_v2.0.1' : { PARENTS: {\n// BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n// CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n// Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n// NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n// } },\n// 'BKG_v2.0.2' : { PARENTS: {\n// BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n// CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n// ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n// Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n// NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n// } },\n PARENTS : { \n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n Reference: {maxLength: 3, pseudoEnum: ['CR','AKG'] },\n ReferenceConsignmentItem: {maxLength: 3, pseudoEnum: ['CR','AKG','SPO','CPO'] },\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n ArrivalNoticeNotification: {enum: ['org.dcsa.arrival-notice-notification.v1'], pseudoEnum: [] },\n TransportDocumentNotification: {enum: ['org.dcsa.transport-document.v3'], pseudoEnum: [] },\n ShippingInstructionsNotification: {enum: ['org.dcsa.shipping-instructions.v3'], pseudoEnum: [] },\n vessel: {enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n ExtendedNationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n },\n DEFAULT : { type: 'string' },\n },\n typeCode: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { enum: ['ARRI', 'DEPA'] } },\n PARENTS : { Vessel: { enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] } },\n DEFAULT : { type: 'string' },\n },\n typeOfPerson: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: ['NATURAL_PERSON','LEGAL_PERSON','ASSOCIATION_OF_PERSONS'] },\n },\n unit: {\n PARENTS : { \n CargoGrossWeight: {enum: ['KGM', 'LBR']},\n CargoNetWeight: {enum: ['KGM', 'LBR']},\n TareWeight: {enum: ['KGM', 'LBR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossVolume: {enum: ['MTQ', 'FTQ']}, \n NetVolume: {enum: ['MTQ', 'FTQ', 'LTR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossWeight: {enum: ['KGM', 'LBR']}, \n CargoGrossWeightReq: {enum: ['KGM', 'LBR']}, \n GrossWeight: {enum: ['KGM', 'LBR']}, \n CargoNetWeight: {enum: ['KGM', 'LBR']}, \n NetWeight: {enum: ['KGM', 'LBR']}, \n NetExplosiveContent: {enum: ['KGM', 'LBR', 'GRM', 'ONZ']} },\n DEFAULT : { type: 'string' },\n },\n units: {\n PARENTS : { ConfirmedEquipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n unitPrice: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n universalExportVoyageReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: null, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalImportVoyageReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: null, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalServiceReference: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', minLength: null, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' } },\n PARENTS : { TerminalTimestamp: {}, TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, Schedule: {}, ServiceSchedule: {}, VesselTransport: {}, BargeTransport: {}, departingVesselVoyage: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', minLength: 8, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' },\n },\n UNLocationCode: {\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^[A-Z]{2}[A-Z2-9]{3}$', pseudoEnum: [] },\n },\n UNLocationLocation: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'UN Location', required: ['UNLocationCode','locationType'] } },\n },\n UNNumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n UpdateBooking: {\n DEFAULT : { type: 'object', title: 'Update Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n UpdateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Update Shipping Instructions', required: ['shippingInstructionsReference', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n updatedShippingInstructions: {\n PARENTS : { ShippingInstructionsData: {} },\n DEFAULT : { $ref: '#/components/schemas/UpdatedShippingInstructionsFullNotification' },\n },\n UpdatedShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Updated Shipping Instructions', allOf: true },\n },\n updatedShippingInstructionsStatus: {\n PARENTS : { CancelShippingInstructionsUpdate: { pseudoEnum: [] }, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['UPDATE_RECEIVED','UPDATE_CONFIRMED','UPDATE_CANCELLED','UPDATE_DECLINED'] },\n },\n UTEquipment: {\n DEFAULT : { type: 'object', title: 'Shipper Owned Equipment (SoC)', required: ['isShipperOwned', 'equipment'], CHILDREN: ['isShipperOwned','equipment'] },\n },\n UTEquipmentReference: {\n DEFAULT : { type: 'object', title: 'Carrier Owned Equipment', required: ['isShipperOwned', 'equipmentReference'], CHILDREN:['isShipperOwned','equipmentReference'] },\n },\n UtilizedTransportEquipment: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment', required: ['equipment', 'isShipperOwned', 'seals'], CHILDREN: ['equipment','isShipperOwned','isNonOperatingReefer','activeReeferSettings','shippingMarks','seals','references','customsReferences'] },\n },\n utilizedTransportEquipments: {\n PARENTS : { HouseBillOfLading: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentHBL'}}, CreateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, UpdateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, ShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, shippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, updatedShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, TransportDocument: {items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} }, transportDocument: { items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n UtilizedTransportEquipmentHBL: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (House B/L)', required: ['emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode'], oneOf: true, CHILDREN: ['seals','emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode']},\n },\n UtilizedTransportEquipmentShipper: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (Shipper)', required: ['seals'], oneOf: true, CHILDREN: ['shippingMarks','seals','emptyIndicatorCode','references','customsReferences']},\n },\n value: {\n PARENTS : {\n TareWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n NetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n CargoGrossWeightReq: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n GrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetExplosiveContent: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n DetailedError: {type: 'string', maxLength: 500},\n errors: {type: 'string', maxLength: 500}, \n TaxLegalReference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n Reference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n },\n },\n values: {\n PARENTS : { \n NationalCommodityCode: {}, \n ExtendedNationalCommodityCode: { items: {type: 'string', maxLength: 16, pattern: '^\\\\S(?:.*\\\\S)?$' } }, \n CustomsReference: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n ReferenceConsignmentItem: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n DEFAULT : { type: 'array', minItems: 1, items: {type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n 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: {}, VesselSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', minLength: 7, maxLength: 8, pattern: '^\\\\d{7,8}$' },\n },\n vesselMMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n vesselName: {\n 'OVS_v3.0.x' : { DEFAULT: { type: 'string', maxLength: 35, pattern: null, pseudoEnum: [] }, PARENTs: { VesselSchedule: {} } },\n PARENTS : { TerminalTimestamp: {}, Transport: {}, VesselVoyage: {}, VesselSchedule: {}, departingVesselVoyage: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n vesselOperatorCarrierCode: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselOperatorSMDGLinerCode: {\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n vesselOperatorCarrierCodeListProvider: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n vesselPosition: {\n DEFAULT : { $ref: '#/components/schemas/VesselPosition' },\n },\n VesselPosition: {\n DEFAULT : { type: 'object', title: 'Vessel Position', CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n VesselSchedule: {\n 'OVS_HUB_TER_v1.0.x' : { DEFAULT: { required: ['vesselOperatorSMDGLinerCode', 'transportCalls'], CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','MMSINumber','vesselName','vesselCallSign','transportCalls'] } },\n 'OVS_v3.0.x' : { DEFAULT: { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel', 'vesselOperatorSMDGLinerCode'], CHILDREN: ['vesselOperatorSMDGLinerCode','vesselIMONumber','MMSINumber','vesselName','vesselCallSign','isDummyVessel','transportCalls'] } },\n DEFAULT : { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel'], CHILDREN: ['vessel','isDummyVessel','transportCalls'] },\n },\n vesselSchedules: {\n 'OVS_v3.0.x' : { PARENTS: { ServiceSchedule: { minItems: null, items: {$ref: '#/components/schemas/VesselSchedule'} } } },\n PARENTS : { ServiceSchedule: { minItems: 1, items: {$ref: '#/components/schemas/VesselSchedule'} }, PortSchedule: { items: { $ref: '#/components/schemas/Schedule' } } },\n DEFAULT : { type: 'array' },\n },\n VesselStatus: {\n DEFAULT : {type: 'object', title: 'Vessel Status', required: ['portCallServiceID'], CHILDREN: ['portCallServiceID', 'draft','airDraft','aftDraft','forwardDraft','dimensionUnit','vesselPosition','milesToDestinationPort','isFYI']}\n },\n VesselStatuses: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/VesselStatus' } },\n },\n VesselTransport: {\n DEFAULT : { type: 'object', title: 'Vessel Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','vessel'] },\n },\n VesselVoyage: {\n DEFAULT : { type: 'object', title: 'Vessel/Voyage', required: ['vesselName', 'carrierExportVoyageNumber'], CHILDREN: ['vesselName','carrierExportVoyageNumber','universalExportVoyageReference','role'] },\n },\n vesselVoyages: {\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/VesselVoyage'} },\n },\n weightUnit: {\n PARENTS : { Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n width: {\n PARENTS : { Vessel: {} },\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/bkg/v2/BKG_v2.0.4.yaml b/bkg/v2/BKG_v2.0.4.yaml index 04416ae4..ccda2a68 100644 --- a/bkg/v2/BKG_v2.0.4.yaml +++ b/bkg/v2/BKG_v2.0.4.yaml @@ -4495,6 +4495,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" partyContactDetails: type: array minItems: 1 @@ -4537,6 +4548,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" partyContactDetails: type: array minItems: 1 @@ -4590,6 +4612,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" partyContactDetails: type: array minItems: 1 @@ -4643,6 +4676,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" partyContactDetails: type: array minItems: 1 @@ -4698,6 +4742,17 @@ components: example: NLAMS address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" partyContactDetails: type: array minItems: 1 @@ -4777,6 +4832,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array items: @@ -5158,12 +5224,15 @@ components: title: Location description: | The location can be specified using **any** of the nested structures: - - `address` (used to specify the location via an Address) + - `address` (used to specify the location via a **structured** Address) + - `addressLines` (used to specify a location via an **unstructured** Address) - `UNLocationCode` - `facility` (used to specify a location using a `facilityCode` and a `facilityCodeListProvider`) - `geoCoordinate` (used to specify a location using `latitude` and `longitude`) **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: CMP Container Terminal Copenhagen UNLocationCode: DKCPH @@ -5184,6 +5253,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -5468,9 +5550,11 @@ components: **Condition:** Only applicable to carrier haulage service at origin (`Receipt type at origin = 'SD'`). - The location can be specified in **any** of the following ways: `Address`, `Facility`, `UN Location Code` or a `GeoCoordinate`. + The location can be specified in **any** of the following ways: `Address` (structured address), `AddressLines` (unstructured address), `Facility`, `UN Location Code` or a `GeoCoordinate`. **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Shanghai Shengdong International Container Terminal UNLocationCode: CNSGH @@ -5491,6 +5575,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -5517,9 +5614,11 @@ components: The location of the depot from which the empty container(s) will be released from - The location can be specified in **any** of the following ways: `Address`, `Facility`, `UN Location Code` or a `GeoCoordinate`. + The location can be specified in **any** of the following ways: `Address` (structured address), `AddressLines` (unstructured address), `Facility`, `UN Location Code` or a `GeoCoordinate`. **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Shanghai Shengdong International Container Terminal UNLocationCode: CNSGH @@ -5540,6 +5639,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -6444,7 +6556,7 @@ components: type: object title: Net Explosive Content description: | - The total weight of the explosive substances, without the packaging’s, casings, etc. + The total weight of the explosive substances, without the packaging's, casings, etc. properties: value: type: number @@ -6452,7 +6564,7 @@ components: minimum: 0 exclusiveMinimum: true description: | - The total weight of the explosive substances, without the packaging’s, casings, etc. + The total weight of the explosive substances, without the packaging's, casings, etc. example: 2.4 unit: type: string @@ -6830,15 +6942,18 @@ components: - dischargeLocation - plannedDepartureDate - plannedArrivalDate + LoadLocation: type: object title: Load Location description: | An object to capture the `Load Location`. - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` or an `Address`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address) or `AddressLines` (unstructured address). **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Shanghai Shengdong International Container Terminal UNLocationCode: CNSGH @@ -6859,6 +6974,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -6874,15 +7002,18 @@ components: More info can be found here: [UN/LOCODE](https://unece.org/trade/cefact/UNLOCODE-Download) example: NLAMS + DischargeLocation: type: object title: Discharge Location description: | An object to capture the `Discharge Location`. - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` or an `Address`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address) or `AddressLines` (unstructured address). **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Transnet Port Terminals Cape Town UNLocationCode: ZACPT @@ -6903,6 +7034,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v2.0.3 or earlier**, a sender implementing API **v2.0.4 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: diff --git a/ebl/v3/EBL_v3.0.3.yaml b/ebl/v3/EBL_v3.0.3.yaml index 04869bfc..daf05205 100644 --- a/ebl/v3/EBL_v3.0.3.yaml +++ b/ebl/v3/EBL_v3.0.3.yaml @@ -3240,7 +3240,7 @@ components: isCarriersAgentAtDestinationRequired: type: boolean description: | - Indicates whether the Carrier's agent at destination name, address and contact details should be included in the `Transport Document`. + Indicates whether the **Carrier's agent at destination** name, address and contact details should be included in the `Transport Document`. example: false documentParties: $ref: '#/components/schemas/DocumentPartiesShippingInstructions' @@ -3561,7 +3561,7 @@ components: isCarriersAgentAtDestinationRequired: type: boolean description: | - Indicates whether the Carrier's agent at destination name, address and contact details should be included in the `Transport Document`. + Indicates whether the **Carrier's agent at destination** name, address and contact details should be included in the `Transport Document`. example: false documentParties: $ref: '#/components/schemas/DocumentPartiesShippingInstructions' @@ -3902,7 +3902,7 @@ components: isCarriersAgentAtDestinationRequired: type: boolean description: | - Indicates whether the Carrier's agent at destination name, address and contact details should be included in the `Transport Document`. + Indicates whether the **Carrier's agent at destination** name, address and contact details should be included in the `Transport Document`. example: false documentParties: $ref: '#/components/schemas/DocumentPartiesShippingInstructions' @@ -4281,7 +4281,7 @@ components: ################################################################### AddressHBL: type: object - title: Address House B/L + 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: @@ -4467,7 +4467,7 @@ components: A list of document parties that can be optionally provided in the `Shipping Instructions`. properties: party: - $ref: '#/components/schemas/Party' + $ref: '#/components/schemas/PartyShipper' partyFunction: type: string maxLength: 3 @@ -4519,24 +4519,24 @@ components: properties: street: type: string - description: The name of the street of the party’s address. + description: The name of the street of the party's address. maxLength: 70 example: Ruijggoordweg streetNumber: type: string - description: The number of the street of the party’s address. + description: The number of the street of the party's address. maxLength: 50 example: '100' floor: type: string description: | - The floor of the party’s street number. + The floor of the party's street number. pattern: ^\S(?:.*\S)?$ maxLength: 50 example: 2nd postCode: type: string - description: The post code of the party’s address. + description: The post code of the party's address. maxLength: 10 example: 1047 HM POBox: @@ -4547,7 +4547,7 @@ components: city: type: string description: | - The city name of the party’s address. + The city name of the party's address. pattern: ^\S(?:.*\S)?$ maxLength: 35 example: Amsterdam @@ -4564,7 +4564,7 @@ components: example: NLAMS stateRegion: type: string - description: The state/region of the party’s address. + description: The state/region of the party's address. maxLength: 65 example: North Holland countryCode: @@ -4588,7 +4588,103 @@ components: description: | The party by whom or in whose name or on whose behalf a contract of carriage of goods by sea has been concluded with a carrier, or the party by whom or in whose name, or on whose behalf, the goods are actually delivered to the carrier in relation to the contract of carriage by sea. - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. + properties: + partyName: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 70 + description: | + Name of the party. + example: IKEA Denmark + typeOfPerson: + type: string + maxLength: 50 + pattern: ^\S(?:.*\S)?$ + description: | + Can be one of the following values as per the Union Customs Code art. 5(4): + - `NATURAL_PERSON` (A person that is an individual living human being) + - `LEGAL_PERSON` (person (including a human being and public or private organizations) that can perform legal actions, such as own a property, sue and be sued) + - `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/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" + displayedAddress: + type: array + maxItems: 6 + description: | + The address of the party to be displayed on the `Transport Document`. The displayed address may be used to match the address provided in the `Letter of Credit`. + + **Conditions:** If provided: + - the displayed address must be included in the `Transport Document`. + - for physical BL (`isElectronic=false`), it is only allowed to provide max 2 lines of 35 characters. **Note:** Some carriers may choose to allow more lines, please consult the carrier's API documentation to check if this is the case. + - for electronic BL (`isElectronic=true`), the limit is 6 lines of 35 characters + - the order of the items in this array **MUST** be preserved as by the provider of the API. + items: + type: string + maxLength: 35 + description: | + A single address line + example: Strawinskylaan 4117 + identifyingCodes: + type: array + description: | + **Condition:** Either the `address` or a party `identifyingCode` must be provided. + items: + $ref: '#/components/schemas/IdentifyingCode' + taxLegalReferences: + description: | + A list of `Tax References` for a `Party` + type: array + items: + $ref: '#/components/schemas/TaxLegalReference' + partyContactDetails: + type: array + description: | + A list of contact details + items: + $ref: '#/components/schemas/PartyContactDetail' + reference: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 35 + description: | + A reference linked to the `Shipper`. + example: HHL007 + purchaseOrderReferences: + type: array + description: | + A list of `Purchase Order Reference`s linked to the `Shipper`. + items: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 35 + description: | + A purchase order reference linked to the `Shipper`. + example: HHL007 + required: + - partyName + + ShipperShipper: + type: object + title: Shipper (Shipper provided) + description: | + The party by whom or in whose name or on whose behalf a contract of carriage of goods by sea has been concluded with a carrier, or the party by whom or in whose name, or on whose behalf, the goods are actually delivered to the carrier in relation to the contract of carriage by sea. + + **Condition:** Providers **or** consumers on API v3.0.2 (or earlier): Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + + **Condition:** Providers **and** consumers on API v3.0.3 (or later): Either the `address`, `addressLines` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -4609,6 +4705,19 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the party. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -4670,8 +4779,45 @@ components: title: On Behalf of Shipper description: | The party allowed to act on behalf of the shipper for documentation purposes. + properties: + partyName: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 70 + description: | + Name of the party. + example: IKEA Denmark + address: + $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" + identifyingCodes: + type: array + description: | + **Condition:** Either the `address` or a party `identifyingCode` must be provided. + items: + $ref: '#/components/schemas/IdentifyingCode' + required: + - partyName + + OnBehalfOfShipperShipper: + type: object + title: On Behalf of Shipper (Shipper provided) + description: | + The party allowed to act on behalf of the shipper for documentation purposes. + + **Condition:** Providers **or** consumers on API v3.0.2 (or earlier): Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. + **Condition:** Providers **and** consumers on API v3.0.3 (or later): Either the `address`, `addressLines` or a party `identifyingCode` must be provided in the `Shipping Instructions`. properties: partyName: type: string @@ -4682,6 +4828,19 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the party. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array description: | @@ -4742,9 +4901,9 @@ components: description: | The party to which goods are consigned in the `Master Bill of Lading`. - **Condition:** Mandatory for non-negotiable BL (`isToOrder=false`) + **Condition:** Mandatory for non-negotiable BL (`isToOrder=false`). Note `Consignee` and `Endorsee` are mutually exclusive. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -4765,6 +4924,17 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -4826,8 +4996,44 @@ components: title: On Behalf of Consignee description: | The party allowed to act on behalf of the consignee for documentation purposes. + properties: + partyName: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 70 + description: | + Name of the party. + example: IKEA Denmark + address: + $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" + identifyingCodes: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/IdentifyingCode' + required: + - partyName + + OnBehalfOfConsigneeShipper: + type: object + title: On Behalf of Consignee (Shipper provided) + description: | + The party allowed to act on behalf of the consignee for documentation purposes. + + **Condition:** Providers **or** consumers on API v3.0.2 (or earlier): Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. + **Condition:** Providers **and** consumers on API v3.0.3 (or later): Either the `address`, `addressLines` or a party `identifyingCode` must be provided in the `Shipping Instructions`. properties: partyName: type: string @@ -4838,6 +5044,19 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the party. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array minItems: 1 @@ -4852,9 +5071,11 @@ components: description: | The party to which goods are consigned in the `Master Bill of Lading`. - **Condition:** Mandatory for non-negotiable BL (`isToOrder=false`) + **Condition:** Mandatory for non-negotiable BL (`isToOrder=false`). Note `Consignee` and `Endorsee` are mutually exclusive. - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** Providers **or** consumers on API v3.0.2 (or earlier): Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + + **Condition:** Providers **and** consumers on API v3.0.3 (or later): Either the `address`, `addressLines` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -4875,6 +5096,19 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the party. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -4984,7 +5218,7 @@ components: **Condition:** Can only be provided for negotiable BLs (`isToOrder=true`). If a negotiable BL does not have an `Endorsee`, the BL is said to be "blank endorsed". Note `Consignee` and `Endorsee` are mutually exclusive. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -4995,6 +5229,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -5041,7 +5286,9 @@ components: **Condition:** Can only be provided for negotiable BLs (`isToOrder=true`). If a negotiable BL does not have an `Endorsee`, the BL is said to be "blank endorsed". Note `Consignee` and `Endorsee` are mutually exclusive. - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** Providers **or** consumers on API v3.0.2 (or earlier): Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + + **Condition:** Providers **and** consumers on API v3.0.3 (or later): Either the `address`, `addressLines` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -5052,6 +5299,19 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the party. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -5105,6 +5365,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" partyContactDetails: type: array description: | @@ -5177,7 +5448,7 @@ components: description: | The person to be notified when a shipment arrives at its destination. - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -5198,6 +5469,104 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" + displayedAddress: + type: array + maxItems: 6 + description: | + The address of the party to be displayed on the `Transport Document`. The displayed address may be used to match the address provided in the `Letter of Credit`. + + **Conditions:** If provided: + - the displayed address must be included in the `Transport Document`. + - for physical BL (`isElectronic=false`), it is only allowed to provide max 2 lines of 35 characters. **Note:** Some carriers may choose to allow more lines, please consult the carrier's API documentation to check if this is the case. + - for electronic BL (`isElectronic=true`), the limit is 6 lines of 35 characters + - the order of the items in this array **MUST** be preserved as by the provider of the API. + items: + type: string + maxLength: 35 + description: | + A single address line + example: Strawinskylaan 4117 + identifyingCodes: + type: array + description: | + **Condition:** Either the `address` or a party `identifyingCode` must be provided. + items: + $ref: '#/components/schemas/IdentifyingCode' + taxLegalReferences: + description: | + A list of `Tax References` for a `Party` + type: array + items: + $ref: '#/components/schemas/TaxLegalReference' + partyContactDetails: + type: array + description: | + A list of contact details + items: + $ref: '#/components/schemas/PartyContactDetail' + reference: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 35 + description: | + A reference linked to the `NotifyParty`. + example: HHL007 + required: + - partyName + + NotifyPartyShipper: + type: object + title: Notify Party (Shipper provided) + description: | + The person to be notified when a shipment arrives at its destination. + + **Condition:** Providers **or** consumers on API v3.0.2 (or earlier): Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + + **Condition:** Providers **and** consumers on API v3.0.3 (or later): Either the `address`, `addressLines` or a party `identifyingCode` must be provided in the `Shipping Instructions`. If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. + properties: + partyName: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 70 + description: | + Name of the party. + example: IKEA Denmark + typeOfPerson: + type: string + maxLength: 50 + pattern: ^\S(?:.*\S)?$ + description: | + Can be one of the following values as per the Union Customs Code art. 5(4): + - `NATURAL_PERSON` (A person that is an individual living human being) + - `LEGAL_PERSON` (person (including a human being and public or private organizations) that can perform legal actions, such as own a property, sue and be sued) + - `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/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the party. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -5318,6 +5687,17 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array items: @@ -5412,6 +5792,17 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array items: @@ -5484,8 +5875,64 @@ components: title: Party description: | Refers to a company or a legal entity. + properties: + partyName: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 70 + description: | + Name of the party. + example: Asseco Denmark + address: + $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" + identifyingCodes: + type: array + description: | + **Condition:** Either the `address` or a party `identifyingCode` must be provided. + items: + $ref: '#/components/schemas/IdentifyingCode' + taxLegalReferences: + description: | + A list of `Tax References` for a `Party` + type: array + items: + $ref: '#/components/schemas/TaxLegalReference' + partyContactDetails: + type: array + description: | + A list of contact details + items: + $ref: '#/components/schemas/PartyContactDetail' + reference: + type: string + pattern: ^\S(?:.*\S)?$ + maxLength: 35 + description: | + A reference linked to the `Party`. + example: HHL007 + required: + - partyName + + PartyShipper: + type: object + title: Party (Shipper provided) + description: | + Refers to a company or a legal entity. + + **Condition:** Providers **or** consumers on API v3.0.2 (or earlier): Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. + **Condition:** Providers **and** consumers on API v3.0.3 (or later): Either the `address`, `addressLines` or a party `identifyingCode` must be provided in the `Shipping Instructions`. properties: partyName: type: string @@ -5496,6 +5943,19 @@ components: example: Asseco Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the party. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array description: | @@ -5580,6 +6040,17 @@ components: example: Asseco Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array items: @@ -5605,7 +6076,10 @@ components: title: Shipping Instructions Requestor description: | The requestor of whoever submits the `Shipping Instructions`. - **Condition:** Either the `address` or a party `identifyingCode` must be provided. + + **Condition:** Providers **or** consumers on API v3.0.2 (or earlier): Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. + + **Condition:** Providers **and** consumers on API v3.0.3 (or later): Either the `address`, `addressLines` or a party `identifyingCode` must be provided in the `Shipping Instructions`. properties: partyName: type: string @@ -5616,6 +6090,19 @@ components: example: Asseco Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the party. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array items: @@ -5890,7 +6377,7 @@ components: maxLength: 3 description: | The reference type codes defined by DCSA. Possible values are: - - `CR` (Customer’s Reference) + - `CR` (Customer's Reference) - `AKG` (Vehicle Identification Number) example: CR value: @@ -5915,7 +6402,7 @@ components: maxLength: 3 description: | The reference type codes defined by DCSA. Possible values are: - - `CR` (Customer’s Reference) + - `CR` (Customer's Reference) - `AKG` (Vehicle Identification Number) - `SPO` (Shipper's Purchase Order) - `CPO` (Consignee's Purchase Order) @@ -7133,7 +7620,7 @@ components: type: object title: Net Explosive Content description: | - The total weight of the explosive substances, without the packaging’s, casings, etc. + The total weight of the explosive substances, without the packaging's, casings, etc. properties: value: type: number @@ -7141,7 +7628,7 @@ components: minimum: 0 exclusiveMinimum: true description: | - The total weight of the explosive substances, without the packaging’s, casings, etc. + The total weight of the explosive substances, without the packaging's, casings, etc. example: 2.4 unit: type: string @@ -8538,6 +9025,7 @@ components: required: - vesselName - carrierExportVoyageNumber + PlaceOfReceipt: type: object title: Place of Receipt @@ -8546,9 +9034,11 @@ components: **Condition:** Only when pre-carriage is done by the carrier. - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` or a `Geo Coordinate`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address), `AddressLines` (unstructured address) or a `Geo Coordinate`. **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Hamburg UNLocationCode: DEHAM @@ -8566,6 +9056,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -8583,6 +9086,7 @@ components: example: NLAMS geoCoordinate: $ref: '#/components/schemas/GeoCoordinate' + PortOfLoading: type: object title: Port of Loading @@ -8617,6 +9121,7 @@ components: More info can be found here: [UN/LOCODE](https://unece.org/trade/cefact/UNLOCODE-Download) example: NLAMS + PortOfDischarge: type: object title: Port of Discharge @@ -8651,6 +9156,7 @@ components: More info can be found here: [UN/LOCODE](https://unece.org/trade/cefact/UNLOCODE-Download) example: NLAMS + PlaceOfDelivery: type: object title: Place of Delivery @@ -8659,9 +9165,11 @@ components: **Condition:** Only when onward transport is done by the carrier - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` or a `Geo Coordinate`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address), `AddressLines` (unstructured address) or a `Geo Coordinate`. **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Hamburg UNLocationCode: DEHAM @@ -8679,6 +9187,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -8696,15 +9217,18 @@ components: example: NLAMS geoCoordinate: $ref: '#/components/schemas/GeoCoordinate' + OnwardInlandRouting: type: object title: Onward Inland Routing description: | An object to capture `Onward Inland Routing` location specified as the end location of the inland movement that takes place after the container(s) being delivered to the port of discharge/place of delivery for account and risk of merchant (merchant haulage). - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` or an `Address`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address) or `AddressLines` (unstructured address). **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Hamburg UNLocationCode: DEHAM @@ -8722,6 +9246,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -9040,13 +9577,13 @@ components: **Condition:** `Buyer` and `Seller` are mandatory if `isCargoDeliveredInICS2Zone=true` **and** `advancedManifestFilingPerformedBy=CARRIER` and `isHouseBillOfLadingsIssued=false` properties: shipper: - $ref: '#/components/schemas/Shipper' + $ref: '#/components/schemas/ShipperShipper' onBehalfOfShipper: - $ref: '#/components/schemas/OnBehalfOfShipper' + $ref: '#/components/schemas/OnBehalfOfShipperShipper' consignee: $ref: '#/components/schemas/ConsigneeShipper' onBehalfOfConsignee: - $ref: '#/components/schemas/OnBehalfOfConsignee' + $ref: '#/components/schemas/OnBehalfOfConsigneeShipper' endorsee: $ref: '#/components/schemas/EndorseeShipper' issueTo: @@ -9065,7 +9602,7 @@ components: - Mandatory for To Order BLs, `isToOrder=true` - The order of the items in this array **MUST** be preserved as by the provider of the API. items: - $ref: '#/components/schemas/NotifyParty' + $ref: '#/components/schemas/NotifyPartyShipper' shippingInstructionsRequestor: $ref: '#/components/schemas/ShippingInstructionsRequestor' other: @@ -9099,7 +9636,7 @@ components: $ref: '#/components/schemas/BuyerHBL' other: type: array - description: A list of document parties that can be optionally provided in the `Shipping Instructions` and `Transport Document`. + description: A list of document parties that can be optionally provided in the `Shipping Instructions` as part of the House B/L. items: $ref: '#/components/schemas/OtherDocumentPartyHBL' required: @@ -9141,7 +9678,7 @@ components: $ref: '#/components/schemas/NotifyParty' other: type: array - description: A list of document parties that can be optionally provided in the `Shipping Instructions` and `Transport Document`. + description: A list of document parties that can be optionally provided in the `Transport Document`. items: $ref: '#/components/schemas/OtherDocumentParty' required: diff --git a/ebl/v3/issuance/EBL_ISS_v3.0.3.yaml b/ebl/v3/issuance/EBL_ISS_v3.0.3.yaml index 2cd3c3df..e3918f6d 100644 --- a/ebl/v3/issuance/EBL_ISS_v3.0.3.yaml +++ b/ebl/v3/issuance/EBL_ISS_v3.0.3.yaml @@ -1190,7 +1190,7 @@ components: maxLength: 3 description: | The reference type codes defined by DCSA. Possible values are: - - `CR` (Customer’s Reference) + - `CR` (Customer's Reference) - `AKG` (Vehicle Identification Number) example: CR value: @@ -1215,7 +1215,7 @@ components: maxLength: 3 description: | The reference type codes defined by DCSA. Possible values are: - - `CR` (Customer’s Reference) + - `CR` (Customer's Reference) - `AKG` (Vehicle Identification Number) - `SPO` (Shipper's Purchase Order) - `CPO` (Consignee's Purchase Order) @@ -2056,7 +2056,7 @@ components: type: object title: Net Explosive Content description: | - The total weight of the explosive substances, without the packaging’s, casings, etc. + The total weight of the explosive substances, without the packaging's, casings, etc. properties: value: type: number @@ -2064,7 +2064,7 @@ components: minimum: 0 exclusiveMinimum: true description: | - The total weight of the explosive substances, without the packaging’s, casings, etc. + The total weight of the explosive substances, without the packaging's, casings, etc. example: 2.4 unit: type: string @@ -2596,6 +2596,7 @@ components: required: - vesselName - carrierExportVoyageNumber + PlaceOfReceipt: type: object title: Place of Receipt @@ -2604,9 +2605,11 @@ components: **Condition:** Only when pre-carriage is done by the carrier. - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` or a `Geo Coordinate`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address), `AddressLines` (unstructured address) or a `Geo Coordinate`. **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Hamburg UNLocationCode: DEHAM @@ -2624,6 +2627,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -2641,6 +2657,7 @@ components: example: NLAMS geoCoordinate: $ref: '#/components/schemas/GeoCoordinate' + PortOfLoading: type: object title: Port of Loading @@ -2675,6 +2692,7 @@ components: More info can be found here: [UN/LOCODE](https://unece.org/trade/cefact/UNLOCODE-Download) example: NLAMS + PortOfDischarge: type: object title: Port of Discharge @@ -2709,6 +2727,7 @@ components: More info can be found here: [UN/LOCODE](https://unece.org/trade/cefact/UNLOCODE-Download) example: NLAMS + PlaceOfDelivery: type: object title: Place of Delivery @@ -2717,9 +2736,11 @@ components: **Condition:** Only when onward transport is done by the carrier - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` or a `Geo Coordinate`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address), `AddressLines` (unstructured address) or a `Geo Coordinate`. **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Hamburg UNLocationCode: DEHAM @@ -2737,6 +2758,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -2754,15 +2788,18 @@ components: example: NLAMS geoCoordinate: $ref: '#/components/schemas/GeoCoordinate' + OnwardInlandRouting: type: object title: Onward Inland Routing description: | An object to capture `Onward Inland Routing` location specified as the end location of the inland movement that takes place after the container(s) being delivered to the port of discharge/place of delivery for account and risk of merchant (merchant haulage). - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` or an `Address`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address) or `AddressLines` (unstructured address). **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Hamburg UNLocationCode: DEHAM @@ -2780,6 +2817,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -3072,24 +3122,24 @@ components: properties: street: type: string - description: The name of the street of the party’s address. + description: The name of the street of the party's address. maxLength: 70 example: Ruijggoordweg streetNumber: type: string - description: The number of the street of the party’s address. + description: The number of the street of the party's address. maxLength: 50 example: '100' floor: type: string description: | - The floor of the party’s street number. + The floor of the party's street number. pattern: ^\S(?:.*\S)?$ maxLength: 50 example: 2nd postCode: type: string - description: The post code of the party’s address. + description: The post code of the party's address. maxLength: 10 example: 1047 HM POBox: @@ -3100,7 +3150,7 @@ components: city: type: string description: | - The city name of the party’s address. + The city name of the party's address. pattern: ^\S(?:.*\S)?$ maxLength: 35 example: Amsterdam @@ -3117,7 +3167,7 @@ components: example: NLAMS stateRegion: type: string - description: The state/region of the party’s address. + description: The state/region of the party's address. maxLength: 65 example: North Holland countryCode: @@ -3141,7 +3191,7 @@ components: description: | The party by whom or in whose name or on whose behalf a contract of carriage of goods by sea has been concluded with a carrier, or the party by whom or in whose name, or on whose behalf, the goods are actually delivered to the carrier in relation to the contract of carriage by sea. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -3162,6 +3212,17 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -3221,8 +3282,6 @@ components: title: On Behalf of Shipper description: | The party allowed to act on behalf of the shipper for documentation purposes. - - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. properties: partyName: type: string @@ -3233,6 +3292,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array description: | @@ -3248,9 +3318,9 @@ components: description: | The party to which goods are consigned in the `Master Bill of Lading`. - **Condition:** Mandatory for non-negotiable BL (`isToOrder=false`) + **Condition:** Mandatory for non-negotiable BL (`isToOrder=false`). Note `Consignee` and `Endorsee` are mutually exclusive. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -3271,6 +3341,17 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -3332,8 +3413,6 @@ components: title: On Behalf of Consignee description: | The party allowed to act on behalf of the consignee for documentation purposes. - - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. properties: partyName: type: string @@ -3344,6 +3423,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array minItems: 1 @@ -3360,7 +3450,7 @@ components: **Condition:** Can only be provided for negotiable BLs (`isToOrder=true`). If a negotiable BL does not have an `Endorsee`, the BL is said to be "blank endorsed". Note `Consignee` and `Endorsee` are mutually exclusive. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -3371,6 +3461,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -3424,6 +3525,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" partyContactDetails: type: array description: | @@ -3441,7 +3553,7 @@ components: description: | The person to be notified when a shipment arrives at its destination. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -3462,6 +3574,17 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -3520,6 +3643,17 @@ components: example: Asseco Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array items: @@ -3561,6 +3695,17 @@ components: example: Asseco Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array items: diff --git a/ovs/v3/OVS_v3.0.2.yaml b/ovs/v3/OVS_v3.0.2.yaml index aa0cbcef..131e115c 100644 --- a/ovs/v3/OVS_v3.0.2.yaml +++ b/ovs/v3/OVS_v3.0.2.yaml @@ -389,7 +389,7 @@ components: type: string maxLength: 100 description: | - The unique reference for a transport call. It’s the vessel operator’s responsibility to provide the Transport Call Reference, other parties are obliged to pick it up and use it. It can take the form of Port Call References as defined in OVS Definitions Document, or alternatively a reference as defined by the vessel operator. + The unique reference for a transport call. It's the vessel operator's responsibility to provide the Transport Call Reference, other parties are obliged to pick it up and use it. It can take the form of Port Call References as defined in OVS Definitions Document, or alternatively a reference as defined by the vessel operator. example: SR11111X-9321483-2107W-NLAMS-ACT-1-1 carrierImportVoyageNumber: type: string @@ -591,37 +591,37 @@ components: street: maxLength: 100 type: string - description: The name of the street of the party’s address. + description: The name of the street of the party's address. example: Ruijggoordweg streetNumber: maxLength: 50 type: string - description: The number of the street of the party’s address. + description: The number of the street of the party's address. example: '100' floor: maxLength: 50 type: string - description: The floor of the party’s street number. + description: The floor of the party's street number. example: N/A postCode: maxLength: 50 type: string - description: The post code of the party’s address. + description: The post code of the party's address. example: 1047 HM city: maxLength: 65 type: string - description: The city name of the party’s address. + description: The city name of the party's address. example: Amsterdam stateRegion: maxLength: 65 type: string - description: The state/region of the party’s address. + description: The state/region of the party's address. example: North Holland country: maxLength: 75 type: string - description: The country of the party’s address. + description: The country of the party's address. example: The Netherlands required: - name diff --git a/pint/v3/EBL_PINT_v3.0.0.yaml b/pint/v3/EBL_PINT_v3.0.0.yaml index 178f3545..7198626c 100644 --- a/pint/v3/EBL_PINT_v3.0.0.yaml +++ b/pint/v3/EBL_PINT_v3.0.0.yaml @@ -1945,7 +1945,7 @@ components: maxLength: 3 description: | The reference type codes defined by DCSA. Possible values are: - - `CR` (Customer’s Reference) + - `CR` (Customer's Reference) - `AKG` (Vehicle Identification Number) example: CR value: @@ -1970,7 +1970,7 @@ components: maxLength: 3 description: | The reference type codes defined by DCSA. Possible values are: - - `CR` (Customer’s Reference) + - `CR` (Customer's Reference) - `AKG` (Vehicle Identification Number) - `SPO` (Shipper's Purchase Order) - `CPO` (Consignee's Purchase Order) @@ -2811,7 +2811,7 @@ components: type: object title: Net Explosive Content description: | - The total weight of the explosive substances, without the packaging’s, casings, etc. + The total weight of the explosive substances, without the packaging's, casings, etc. properties: value: type: number @@ -2819,7 +2819,7 @@ components: minimum: 0 exclusiveMinimum: true description: | - The total weight of the explosive substances, without the packaging’s, casings, etc. + The total weight of the explosive substances, without the packaging's, casings, etc. example: 2.4 unit: type: string @@ -3358,9 +3358,11 @@ components: **Condition:** Only when pre-carriage is done by the carrier. - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` or a `Geo Coordinate`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address), `AddressLines` (unstructured address) or a `Geo Coordinate`. **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Hamburg UNLocationCode: DEHAM @@ -3378,6 +3380,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -3471,9 +3486,11 @@ components: **Condition:** Only when onward transport is done by the carrier - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` or a `Geo Coordinate`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address), `AddressLines` (unstructured address) or a `Geo Coordinate`. **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Hamburg UNLocationCode: DEHAM @@ -3491,6 +3508,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -3514,9 +3544,11 @@ components: description: | An object to capture `Onward Inland Routing` location specified as the end location of the inland movement that takes place after the container(s) being delivered to the port of discharge/place of delivery for account and risk of merchant (merchant haulage). - The location can be specified in **any** of the following ways: `UN Location Code`, `Facility` or an `Address`. + The location can be specified in **any** of the following ways: `UN Location Code`, `Facility`, `Address` (structured address) or `AddressLines` (unstructured address). **Condition:** It is expected that if a location is specified in multiple ways (e.g. both as an `Address` and as a `Facility`) that both ways point to the same location. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. example: locationName: Hamburg UNLocationCode: DEHAM @@ -3534,6 +3566,19 @@ components: example: Building 123 address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + + **Condition:** When communicating with providers **or** consumers implementing API **v3.0.2 or earlier**, a sender implementing API **v3.0.3 or later MUST NOT** use `addressLines` as the only property to identify the location. Recipients implementing earlier versions **MAY ignore** this property. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" facility: $ref: '#/components/schemas/Facility' UNLocationCode: @@ -3826,24 +3871,24 @@ components: properties: street: type: string - description: The name of the street of the party’s address. + description: The name of the street of the party's address. maxLength: 70 example: Ruijggoordweg streetNumber: type: string - description: The number of the street of the party’s address. + description: The number of the street of the party's address. maxLength: 50 example: '100' floor: type: string description: | - The floor of the party’s street number. + The floor of the party's street number. pattern: ^\S(?:.*\S)?$ maxLength: 50 example: 2nd postCode: type: string - description: The post code of the party’s address. + description: The post code of the party's address. maxLength: 10 example: 1047 HM POBox: @@ -3854,7 +3899,7 @@ components: city: type: string description: | - The city name of the party’s address. + The city name of the party's address. pattern: ^\S(?:.*\S)?$ maxLength: 35 example: Amsterdam @@ -3871,7 +3916,7 @@ components: example: NLAMS stateRegion: type: string - description: The state/region of the party’s address. + description: The state/region of the party's address. maxLength: 65 example: North Holland countryCode: @@ -3895,7 +3940,7 @@ components: description: | The party by whom or in whose name or on whose behalf a contract of carriage of goods by sea has been concluded with a carrier, or the party by whom or in whose name, or on whose behalf, the goods are actually delivered to the carrier in relation to the contract of carriage by sea. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -3916,6 +3961,17 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -3975,8 +4031,6 @@ components: title: On Behalf of Shipper description: | The party allowed to act on behalf of the shipper for documentation purposes. - - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. properties: partyName: type: string @@ -3987,6 +4041,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array description: | @@ -4002,9 +4067,9 @@ components: description: | The party to which goods are consigned in the `Master Bill of Lading`. - **Condition:** Mandatory for non-negotiable BL (`isToOrder=false`) + **Condition:** Mandatory for non-negotiable BL (`isToOrder=false`). Note `Consignee` and `Endorsee` are mutually exclusive. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -4025,6 +4090,17 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -4086,8 +4162,6 @@ components: title: On Behalf of Consignee description: | The party allowed to act on behalf of the consignee for documentation purposes. - - **Condition:** Either the `address` or a party `identifyingCode` must be provided in the `Shipping Instructions`. properties: partyName: type: string @@ -4098,6 +4172,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array minItems: 1 @@ -4114,7 +4199,7 @@ components: **Condition:** Can only be provided for negotiable BLs (`isToOrder=true`). If a negotiable BL does not have an `Endorsee`, the BL is said to be "blank endorsed". Note `Consignee` and `Endorsee` are mutually exclusive. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -4125,6 +4210,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -4178,6 +4274,17 @@ components: example: IKEA Denmark address: $ref: '#/components/schemas/Address' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" partyContactDetails: type: array description: | @@ -4195,7 +4302,7 @@ components: description: | The person to be notified when a shipment arrives at its destination. - **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address`. + **Condition:** If a `displayedAddress` is provided, it must be included in the `Transport Document` instead of the `address` or `addressLines`. properties: partyName: type: string @@ -4216,6 +4323,17 @@ components: example: 'NATURAL_PERSON' address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" displayedAddress: type: array maxItems: 6 @@ -4274,6 +4392,17 @@ components: example: Asseco Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array items: @@ -4315,6 +4444,17 @@ components: example: Asseco Denmark address: $ref: '#/components/schemas/PartyAddress' + addressLines: + type: array + maxItems: 5 + description: | + Unstructured address lines, used as a fallback when structured address fields are unavailable. + items: + type: string + maxLength: 250 + description: | + One line of an unstructured `Address`. + example: "123 Example Rd" identifyingCodes: type: array items: