diff --git a/.stoplight/styleguide.json b/.stoplight/styleguide.json index e913a144..bdc5e68d 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'];\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 // Commercial Schedules\n 'CS_v1.0.0',\n 'CS_v1.0.1',\n // electronic Bill of Lading\n 'EBL_v3.0.0',\n 'EBL_v3.0.1',\n 'EBL_ISS_v3.0.0',\n 'EBL_SUR_v3.0.0',\n 'EBL_PINT_v3.0.0',\n // Just in Time Port Calls\n 'JIT_v2.0.0',\n]);\n\n// Standard covering EBL Beta 2\nconst EBL_BETA2_GROUP = [ 'EBL_v2.0.0-Beta-2', 'EBL_ISS_v2.0.0-Beta-2', 'EBL_ISS_RSP_v2.0.0-Beta-2', 'EBL_SUR_v2.0.0-Beta-2', 'EBL_SUR_RSP_v2.0.0-Beta-2' ];\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: {}, Transaction: {enum: ['ISSU','ENDO','TRNS','RESD','RESA','SACC','SREJ'] } },\n DEFAULT : { type: 'string', enum: ['SURR', 'SREJ'] },\n },\n actionCode: {\n PARENTS : { EndorsementChainLink: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['ISSUE','ENDORSE','SIGN','SURRENDER_FOR_DELIVERY','SURRENDER_FOR_AMENDMENT'] },\n },\n actionDateTime: {\n PARENTS : { EndorsementChainLink: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n ActiveReeferSettings: {\n 'BKG_v2.0.0' : { 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.0-Beta-2': { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n 'BKG_v2.0.0-Beta-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/TransactionParty' },\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 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 ShipperHBL: {$ref: '#/components/schemas/Address'},\n Consignee: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeHBL: {$ref: '#/components/schemas/Address'},\n Endorsee: {$ref: '#/components/schemas/PartyAddress'},\n EndorseeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ServiceContractOwner: {$ref: '#/components/schemas/PartyAddress'},\n CarrierBookingOffice: {$ref: '#/components/schemas/Address'},\n NotifyParty: { $ref: '#/components/schemas/PartyAddress'},\n NotifyPartyHBL: { $ref: '#/components/schemas/Address'},\n Seller: { $ref: '#/components/schemas/Address'},\n SellerHBL: { $ref: '#/components/schemas/Address'},\n Buyer: { $ref: '#/components/schemas/Address'},\n BuyerHBL: { $ref: '#/components/schemas/Address'},\n ShippingInstructionsRequestor: { $ref: '#/components/schemas/PartyAddress' },\n Party: {$ref: '#/components/schemas/PartyAddress'},\n PartyHBL: {$ref: '#/components/schemas/Address'},\n CarriersAgentAtDestination: {$ref: '#/components/schemas/Address'},\n IssuingParty: {$ref: '#/components/schemas/PartyAddress'},\n EmptyContainerDepotReleaseLocation: {$ref: '#/components/schemas/Address'},\n ContainerPositioningLocation: {$ref: '#/components/schemas/Address'},\n TransportCallLocation: { $ref: '#/components/schemas/Address' }\n },\n },\n Address: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'city', 'stateRegion', 'countryCode'] } },\n 'CS_v1.0.1' : { DEFAULT: { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'city', 'stateRegion', 'countryCode'] } },\n DEFAULT : { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'POBox', 'city', 'stateRegion', 'countryCode'] },\n },\n// AddressLocation: {\n// DEFAULT : { type: 'object', title: 'Address Location', required: ['locationType', 'address'], 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.0' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n 'BKG_v2.0.1' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n 'BKG_v2.0.2' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n 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 barge: {\n DEFAULT : { $ref: '#/components/schemas/Barge' },\n },\n Barge: {\n DEFAULT : { type: 'object', title: 'Barge', CHILDREN: ['vesselIMONumber','MMSINumber','name','flag','callSign','operatorCarrierCode','operatorCarrierCodeListProvider'] },\n },\n BargeTransport: {\n DEFAULT : { type: 'object', title: 'Barge Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','barge'] },\n },\n Booking: {\n DEFAULT : { type: 'object', title: 'Booking', required: ['bookingStatus', 'receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n booking: {\n DEFAULT : { $ref: '#/components/schemas/BookingFullNotification' },\n },\n bookingAgent: {\n PARENTS : { DocumentParties: {}, DocumentPartiesReq: {} },\n DEFAULT : { $ref: '#/components/schemas/BookingAgent' },\n },\n BookingAgent: {\n DEFAULT : { type: 'object', title: 'Booking Agent', required: ['partyName'], CHILDREN: ['partyName', 'address', 'partyContactDetails', 'identifyingCodes', 'taxLegalReferences','reference']},\n },\n BookingFullNotification: {\n DEFAULT : { type: 'object', title: 'Booking Full Notification', allOf: true },\n },\n bookingChannelReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n BookingRefCancelledStatus: {\n DEFAULT : { type: 'object', title: 'Cancelled Booking Response', required: ['bookingStatus'] },\n },\n BookingRefStatus: {\n DEFAULT : { type: 'object', title: 'Booking Response', required: ['bookingStatus'] },\n },\n BookingNotification: {\n DEFAULT : { type: 'object', title: 'Booking Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data'] },\n },\n BookingNotificationData: {\n DEFAULT : { type: 'object', title: 'Data', required: ['bookingStatus'], CHILDREN: ['bookingStatus', 'amendedBookingStatus', 'bookingCancellationStatus', 'carrierBookingRequestReference', 'carrierBookingReference', 'feedbacks', 'booking', 'amendedBooking'] },\n },\n bookingStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['RECEIVED','PENDING_UPDATE','UPDATE_RECEIVED','CONFIRMED','PENDING_AMENDMENT','REJECTED','DECLINED','CANCELLED','COMPLETED'] },\n },\n bookingCancellationStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['CANCELLATION_RECEIVED','CANCELLATION_DECLINED','CANCELLATION_CONFIRMED'] },\n },\n buyer: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesHouseBL: { $ref: '#/components/schemas/BuyerHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Buyer' },\n },\n Buyer: {\n DEFAULT : { type: 'object', title: 'Buyer', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n BuyerHBL: {\n DEFAULT : { type: 'object', title: 'Buyer (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n calculationBasis: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n callSign: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n cancel: {\n DEFAULT : { type: 'boolean' },\n },\n Cancel: {\n DEFAULT : { type: 'object', title: 'Cancel', CHILDREN: ['reason','isFYI'] },\n },\n cancelled: {\n PARENTS : { PortCallService: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n CancelBookingRequest: {\n DEFAULT : { type: 'object', title: 'Cancel Booking Request', CHILDREN: ['reason'] },\n },\n CancelShippingInstructionsUpdate: {\n DEFAULT : { type: 'object', title: 'Cancel Shipping Instructions Update', required: ['updatedShippingInstructionsStatus'], CHILDREN: ['updatedShippingInstructionsStatus'] },\n },\n cargoGrossVolume: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoGrossVolume' },\n },\n CargoGrossVolume: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Volume', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoGrossWeight: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {}, CargoItemHBL: {}, RequestedEquipment: { $ref: '#/components/schemas/CargoGrossWeightReq' }, RequestedEquipmentShipper: { $ref: '#/components/schemas/CargoGrossWeightReq' } },\n DEFAULT : { $ref: '#/components/schemas/CargoGrossWeight' },\n },\n CargoGrossWeight: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n CargoGrossWeightReq: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Weight (Requested Equipment)', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoNetVolume: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoNetVolume' },\n },\n CargoNetVolume: {\n DEFAULT : { type: 'object', title: 'Cargo Net Volume', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoNetWeight: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoNetWeight' },\n },\n CargoNetWeight: {\n DEFAULT : { type: 'object', title: 'Cargo Net Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n CargoItem: {\n DEFAULT : { type: 'object', title: 'Cargo Item', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','customsReferences'] },\n },\n CargoItemHBL: {\n DEFAULT : { type: 'object', title: 'Cargo Item (House B/L)', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','outerPackaging'] },\n },\n cargoItems: {\n PARENTS : {\n ConsignmentItemShipper: { items: {$ref: '#/components/schemas/CargoItemShipper' } },\n ConsignmentItem : { items: {$ref: '#/components/schemas/CargoItem' } },\n ConsignmentItemHBL : { items: {$ref: '#/components/schemas/CargoItemHBL' } },\n },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n CargoItemShipper: {\n DEFAULT : {type: 'object', title: 'Cargo Item (Shipper)', required: ['equipmentReference', 'cargoGrossWeight'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','houseBillOfLadingReference','customsReferences'] },\n },\n cargoMovementTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n cargoMovementTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n carrierBookingOffice: {\n 'BKG_v2.0.0' : { 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/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: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$' },\n },\n carrierCodeListProvider: {\n PARENTS : { Moves:{}, booking: {}, amendedBooking: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, TransportDocument: {}, transportDocument: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n carrierExportVoyageNumber: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n carrierImportVoyageNumber: {\n PARENTS : { 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 PARENTS : { TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierServiceName: {\n PARENTS : { TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n Charge: {\n DEFAULT : { type: 'object', title: 'Charge', required: ['chargeName', 'currencyAmount', 'currencyCode', 'paymentTermCode', 'calculationBasis', 'unitPrice', 'quantity'], CHILDREN: ['chargeName','currencyAmount','currencyCode','paymentTermCode','calculationBasis','unitPrice','quantity'] },\n },\n chargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n charges: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Charge'}},\n },\n city: {\n PARENTS : { PortOfLoading: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, PortOfDischarge: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, address: {}, Address: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n City: {\n DEFAULT : { type: 'object', title: 'City', required: ['city', 'countryCode'], CHILDREN: ['city','stateRegion','countryCode'] },\n },\n classifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT', 'EST', 'PLN', 'REQ'], pseudoEnum: [] }, // No validation is done on description\n },\n co2Setpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n code: {\n PARENTS : { Feedback: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFORMATIONAL_MESSAGE','PROPERTY_WILL_BE_IGNORED','PROPERTY_VALUE_MUST_CHANGE','PROPERTY_VALUE_HAS_BEEN_CHANGED','PROPERTY_VALUE_MAY_CHANGE','PROPERTY_HAS_BEEN_DELETED'] },\n },\n codedVariantList: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^[0-3][0-9A-Z]{3}$' },\n },\n codeListName: {\n PARENTS : { IdentifyingCode: {}, identifyingCode: {} },\n DEFAULT : { type: 'string', maxLength: 100, pseudoEnum: ['DID','LEI','DUNS'] },\n },\n codeListProvider: {\n PARENTS : { IdentifyingCode: {} },\n 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 },\n comments: {\n PARENTS : { SurrenderRequestAnswer: {}, SurrenderRequestDetails: {}, Transaction: {} },\n DEFAULT : { type: 'string', maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n commodities: {\n PARENTS : { RequestedEquipment: { items: { $ref: '#/components/schemas/Commodity' } }, RequestedEquipmentShipper: { items: { $ref: '#/components/schemas/CommodityShipper' } } },\n DEFAULT : { type: 'array' },\n },\n CommodityShipper: {\n DEFAULT : { type: 'object', title: 'Commodity (Shipper)', required: ['commodityType'], CHILDREN: ['commodityType','HSCodes','nationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n Commodity: {\n DEFAULT : { type: 'object', title: 'Commodity', required: ['commodityType'], CHILDREN: ['commoditySubReference', 'commodityType','HSCodes','nationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n commoditySubReference: {\n PARENTS : { Commodity: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n commodityType: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', maxLength: 550, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n competentAuthorityApproval: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern:'^\\\\S(?:.*\\\\S)?$' },\n },\n confirmedEquipments: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ConfirmedEquipment' } },\n },\n ConfirmedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n DEFAULT : { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup'] },\n },\n consignee: {\n 'BKG_v2.0.0' : { 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/ConsigneeShipper' }, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ConsigneeHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Consignee' },\n },\n Consignee: {\n 'BKG_v2.0.0' : { 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 DEFAULT : { type: 'object', title: 'Consignee', required: ['partyName','identifyingCodes'], CHILDREN: ['partyName','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences'] },\n },\n ConsigneeShipper: {\n DEFAULT : { type: 'object', title: 'Consignee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences'] },\n },\n ConsigneeHBL: {\n DEFAULT : { type: 'object', title: 'Consignee (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n consignmentItems: {\n PARENTS : {HouseBillOfLading: { items: { $ref: '#/components/schemas/ConsignmentItemHBL' } }, CreateShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, UpdateShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, ShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, shippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, updatedShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, TransportDocument: { items: { $ref: '#/components/schemas/ConsignmentItem' } }, transportDocument: { items: { $ref: '#/components/schemas/ConsignmentItem' } } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n// ConsignmentItem: {\n// DEFAULT : { type: 'object', title: 'Consignment Item', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes'], CHILDREN: ['carrierBookingReference','descriptionOfGoods','HSCodes','shippingMarks','references','customsReferences'] },\n// },\n ConsignmentItem: {\n DEFAULT : { type: 'object', title: 'Consignment Item', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes','cargoItems'], CHILDREN: ['carrierBookingReference','descriptionOfGoods','HSCodes','nationalCommodityCodes','shippingMarks','cargoItems', 'exportLicense', 'importLicense', 'references','customsReferences'] },\n },\n ConsignmentItemShipper: {\n DEFAULT : { type: 'object', title: 'Consignment Item (Shipper)', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes','cargoItems'], CHILDREN: ['carrierBookingReference','commoditySubReference', 'descriptionOfGoods','HSCodes','nationalCommodityCodes','shippingMarks','cargoItems', 'exportLicense', 'importLicense','references','customsReferences'], allOf: true },\n },\n ConsignmentItemHBL: {\n DEFAULT : { type: 'object', title: 'Consignment Item (House B/L)', required: ['descriptionOfGoods', 'cargoItems', 'nationalCommodityCode'], CHILDREN: ['descriptionOfGoods', 'nationalCommodityCode','cargoItems','customsReferences'] },\n },\n contact: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n ContainerUnits: {\n DEFAULT : { type: 'object', title: 'Container Units', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n ContainerPositioning: {\n DEFAULT : { type: 'object', title: 'Container Positioning', required: ['location'], CHILDREN: ['dateTime', 'location' ] },\n },\n ContainerPositioningEstimated: {\n DEFAULT : { type: 'object', title: 'Container Positioning Estimated', required: ['location'], CHILDREN: ['estimatedDateTime', 'location' ] },\n },\n containerPositionings : {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, ConfirmedEquipment: { items: { $ref: '#/components/schemas/ContainerPositioningEstimated' } }},\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ContainerPositioning' } },\n },\n ContainerPositioningLocation: {\n DEFAULT : { type: 'object', title: 'Container Positioning Location', CHILDREN: ['locationName', 'address', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n ContainerRestows: {\n DEFAULT : { type: 'object', title: 'Container units to restow', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n content: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', format: 'byte' },\n },\n contentType: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', maxLength: 100, default: 'application/pdf' },\n },\n contractQuotationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n controlTrackingRegistry: {\n DEFAULT : { type: 'string', maxLength: 1024, format: 'uri' },\n },\n countryCode: {\n PARENTS : { PlaceOfAcceptance: {}, PlaceOfFinalDelivery: {}, PlaceOfBLIssue: {}, PlaceOfIssue: {}, address: {}, City: {}, Address: {}, PartyAddress: {}, AdvanceManifestFiling: {}, TaxLegalReference: {}, CustomsReference: {}, NationalCommodityCode: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n CreateBooking: {\n DEFAULT : { type: 'object', title: 'Create Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n CreateBookingResponse: {\n DEFAULT : { type: 'object', title: 'Create Booking Response', required: ['carrierBookingRequestReference'], CHILDREN: ['carrierBookingRequestReference'] },\n },\n CreateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions', required: ['transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n CreateShippingInstructionsResponse: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions Response', required: ['shippingInstructionsReference'], CHILDREN: ['shippingInstructionsReference'] },\n },\n currencyAmount: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n currencyCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', pattern: '^[A-Z]{3}$', minLength: 3, maxLength: 3 },\n },\n CustomsReference: {\n DEFAULT : { type: 'object', title: 'Customs Reference', required: ['type', 'countryCode', 'values'], CHILDREN: ['type','countryCode','values'] },\n },\n customsReferences: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: {}, CargoItemCarrier: {}, CargoItemShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipmentShipper: {}, TransportDocument: {}, transportDocument: {}, UtilizedTransportEquipment: {}, CargoItem: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, Commodity: {}, CommodityShipper: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/CustomsReference' } },\n },\n cutOffDateTime: {\n PARENTS : { ShipmentCutOffTime: {}, CutOffTime: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n cutOffDateTimeCode: {\n PARENTS : { ShipmentCutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','EFC'] }, CutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','PCO','ECP','EFC','RCO','DGC','OBC','TCO','STA','SPA','CUA','AFC'] } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n CutOffTime: {\n DEFAULT : { type: 'object', title: 'Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n cutOffTimes: {\n PARENTS : { PointToPoint: {}, Schedule: {}, TransportCall: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/CutOffTime'} },\n },\n dangerousGoods: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DangerousGoods' } },\n },\n DangerousGoods: {\n 'BKG_v2.0.0' : { 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 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 DEFAULT : { type: 'string', maxLength: 3 },\n },\n deliveryTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n departure: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDeparture' },\n },\n depotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n description: {\n PARENTS : { OuterPackaging: {}, InnerPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n descriptionOfGoods: {\n PARENTS : { ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: { type: 'string', maxItems: null, maxLength: 512, items: null, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n destinationChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/DestinationChargesPaymentTerm' },\n },\n DestinationChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Destination Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n DetailedError: {\n DEFAULT : { type: 'object', title: 'Detailed Error', required: ['errorCodeText', 'errorCodeMessage'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','errorCodeMessage'] },\n },\n dimensionUnit: {\n DEFAULT : { type: 'string', enum: ['MTR', 'FOT'] },\n },\n dischargeLocation: {\n PARENTS : {Transport: {$ref:'#/components/schemas/DischargeLocation' } },\n },\n DischargeLocation: {\n DEFAULT : { type: 'object', title: 'Discharge Location', CHILDREN: ['locationName', 'address', 'facility', 'UNLocationCode'] },\n },\n dischargeUnits: {\n DEFAULT : { $ref: '#/components/schemas/DischargeUnits' }\n },\n DischargeUnits: {\n DEFAULT : { type: 'object', title: 'Discharge Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n displayedAddress: {\n PARENTS : { Shipper: {}, Consignee: {}, ConsigneeShipper: {}, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {} },\n DEFAULT : { type: 'array', maxItems: 6, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfDelivery: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfReceipt: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfDischarge: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfLoad: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedShippedOnBoardReceivedForShipment: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 250 },\n },\n document: {\n PARENTS : { IssuanceRequest: {} },\n DEFAULT : { $ref: '#/components/schemas/TransportDocument' },\n },\n documentChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64, $ref: '#/components/schemas/DocumentChecksum' },\n },\n DocumentChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n DocumentMetadata: {\n DEFAULT : { type: 'object', title: 'Document Metadata', required: ['name','size','mediaType','documentChecksum'], CHILDREN: ['name','size','mediaType','documentChecksum'] },\n },\n documentParties: {\n 'BKG_v2.0.0' : { 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 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.0' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','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 DEFAULT : { type: 'object', title: 'Document Parties', required: ['shipper','issuingParty'], CHILDREN: ['shipper','consignee','endorsee','issuingParty','carriersAgentAtDestination','notifyParties','other'] },\n },\n DocumentPartiesReq: {\n DEFAULT : { type: 'object', title: 'Document Parties (Shipper)', required: ['bookingAgent'], CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','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','consignee','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 DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$', pseudoEnum: EBL_PLATFORM_SOLUTION_PROVIDERS },\n },\n eBLVisualisationByCarrier: {\n PARENTS : { IssuanceRequest: {}, EnvelopeManifest: {} },\n DEFAULT : { $ref: '#/components/schemas/SupportingDocument' },\n },\n eBLVisualisationByCarrierChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n email: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^.+@\\\\S+$' },\n },\n EmergencyContactDetails: {\n DEFAULT : { type: 'object', title: 'Emergency Contact Details', required: ['contact', 'phone'], CHILDREN: ['contact','provider','phone','referenceNumber'] },\n },\n emergencyContactDetails: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/EmergencyContactDetails' },\n },\n emptyContainerPickup: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerPickup' },\n },\n EmptyContainerPickup: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Empty Container Pickup', deprecated: null, CHILDREN: ['dateTime','depotReleaseLocation'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Empty Container Pickup', deprecated: null, CHILDREN: ['dateTime','depotReleaseLocation'] } },\n DEFAULT : { type: 'object', title: 'Empty Container Pickup', deprecated: true, CHILDREN: ['dateTime','depotReleaseLocation'] },\n },\n originEmptyContainerPickup: {\n DEFAULT : { $ref: '#/components/schemas/OriginEmptyContainerPickup' },\n },\n OriginEmptyContainerPickup: {\n DEFAULT : { type: 'object', title: 'Origin Empty Container Pickup', CHILDREN: ['dateTime','depotReleaseLocation'] },\n },\n emptyContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n emptyContainerDepotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n EmptyContainerDepotReleaseLocation: {\n DEFAULT : { type: 'object', title: 'Empty Container Depot Release Location', CHILDREN: ['locationName', 'address', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n emptyContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerUnits' }\n },\n EmptyContainerUnits: {\n DEFAULT : { type: 'object', title: 'Empty Container Units', oneOf:true },\n },\n emptyIndicatorCode: {\n DEFAULT : { type: 'string', enum: ['LADEN','EMPTY'] },\n },\n EMSNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 7 },\n },\n endOfHoldingTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n endorsee: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/EndorseeShipper' } },\n DEFAULT : { $ref: '#/components/schemas/Endorsee' },\n },\n Endorsee: {\n DEFAULT : { type: 'object', title: 'Endorsee', required: ['partyName','identifyingCodes'], CHILDREN: ['partyName','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n EndorseeShipper: {\n DEFAULT : { type: 'object', title: 'Endorsee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n endorsementChain: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/EndorsementChainLink' } },\n },\n EndorsementChainLink: {\n DEFAULT : { type: 'object', title: 'Endorsement Chain Link', required: ['actionDateTime', 'actionCode', 'actor', 'recipient'] },\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 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 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 : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ARRI', 'DEPA'] },\n },\n eventClassifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['PLN', 'EST', 'ACT'] },\n },\n expectedArrivalAtPlaceOfDeliveryStartDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedArrivalAtPlaceOfDeliveryEndDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureFromPlaceOfReceiptDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expiryDate: {\n PARENTS : { ExportLicense: {}, ImportLicense: {},ExportLicenseShipper: {}, ImportLicenseShipper: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportDeclarationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n ExportLicense: {\n DEFAULT : { type: 'object', title: 'Export License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ExportLicenseShipper: {\n DEFAULT : { type: 'object', title: 'Export License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n exportLicense: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ExportLicense' },\n },\n exportLicenseExpiryDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportLicenseIssueDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n Facility: {\n 'JIT_v2.0.0' : { DEFAULT: { CHILDREN: ['facilityCode','facilityCodeListProvider','subFacility'] } },\n DEFAULT : { type: 'object', title: 'Facility', required: ['facilityCode', 'facilityCodeListProvider'], CHILDREN: ['facilityCode','facilityCodeListProvider'] },\n },\n facility: {\n DEFAULT : { $ref: '#/components/schemas/Facility' },\n },\n facilityCode: {\n 'EBL_v3.0.0' : { DEFAULT: { nullable: 'false'} },\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', maxLength: 6, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n facilitySMDGCode: {\n PARENTS : { FacilitySMDGLocation: {}, TransportCallLocation: {}, PortScheduleLocation: {} },\n DEFAULT : { type: 'string', maxLength: 6 },\n },\n FacilitySMDGLocation: {\n DEFAULT : { type: 'object', title: 'Facility SMDG Location', required: ['locationType', 'UNLocationCode', 'facilitySMDGCode'], CHILDREN: [] },\n },\n facilityTypeCode: {\n 'CS_v1.0.0' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n 'CS_v1.0.1' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n 'JIT_v2.0.0' : { DEFAULT: { enum: ['PBPL', 'BRTH', 'ANCH'], pseudoEnum: [] }}, // No validation added for description\n DEFAULT : { type: 'string', maxLength: 4},\n },\n facilityCodeListProvider: {\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', enum: ['BIC', 'SMDG'] },\n },\n Feedback: {\n DEFAULT : { type: 'object', title: 'Feedback', required: ['severity', 'code', 'message'], CHILDREN: ['severity', 'code', 'message', 'jsonPath', 'property'] },\n },\n feedbacks: {\n PARENTS : { ShippingInstructionsData: {}, ShippingInstructions: {}, 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 PARENTS : { Address: {}, address: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 50 },\n },\n forwardDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n freeText: {\n PARENTS : { InvoicePayableAt: {} },\n DEFAULT : { type: 'string', maxLength: 35 }, // In TD invoicePayableAt\n },\n freightPaymentTermCode: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n fullContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n fumigationDateTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n GeoCoordinate: {\n DEFAULT : { type: 'object', title: 'Geo Coordinate', required: ['latitude', 'longitude'], CHILDREN: ['latitude', 'longitude'] },\n },\n geoCoordinate: {\n DEFAULT : { $ref: '#/components/schemas/GeoCoordinate' },\n },\n grossWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/GrossWeight' },\n },\n GrossWeight: {\n DEFAULT : { type: 'object', title: 'Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n haulageChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n HouseBillOfLading: {\n DEFAULT : { type: 'object', title: 'House Bill of Lading', required: ['houseBillOfLadingReference','isToOrder','methodOfPayment','documentParties','isCargoDeliveredInICS2Zone','routingOfConsignmentCountries','consignmentItems','utilizedTransportEquipments'], CHILDREN: ['houseBillOfLadingReference','isToOrder','placeOfAcceptance','placeOfFinalDelivery','methodOfPayment','documentParties','isCargoDeliveredInICS2Zone','routingOfConsignmentCountries','consignmentItems','utilizedTransportEquipments'] },\n },\n houseBillOfLadingReference: {\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n houseBillOfLadings: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/HouseBillOfLading'} },\n },\n HSCodes: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, ConsignmentItem: { minItems: 1 }, ConsignmentItemShipper: {minItems: 1} },\n DEFAULT : { type: 'array', items: { type: 'string', minLength: 6, maxLength: 10, pattern: '^\\\\d{6,10}$' } },\n },\n httpMethod: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', '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.0' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { 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 PARENTS : { BookingAgent: { minItems: null }, Shipper: { minItems: null }, ShipperHBL: { minItems: null }, Consignee: {}, 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: {}, TransactionParty: {}, SurrenderRequestedBy: { minItems: null }, NotifyParty: { minItems: null }, NotifyPartyHBL: { minItems: null }, Seller: { minItems: null }, SellerHBL: { minItems: null }, Buyer: { minItems: null }, BuyerHBL: { minItems: null }, ShippingInstructionsRequestor: { minItems: null } },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/IdentifyingCode'} },\n },\n imoClass: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 4, pseudoEnum: ['1.1A','1.6N','2.1','8'] },\n },\n imoPackagingCode: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 5, pattern: '^[A-Z0-9]{1,5}$' },\n },\n ImportLicense : {\n DEFAULT : { type: 'object', title: 'Import License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ImportLicenseShipper : {\n DEFAULT : { type: 'object', title: 'Import License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n importLicense : {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ImportLicense' },\n },\n incoTerms: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n inhalationZone: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 1, pseudoEnum: ['A','B','C','D'] },\n },\n InnerPackaging: {\n DEFAULT : { type: 'object', title: 'Inner Packaging', required: ['quantity', 'material', 'description'], CHILDREN: ['quantity','material','description'] },\n },\n innerPackagings: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/InnerPackaging' } },\n },\n InvoicePayableAt: {\n 'BKG_v2.0.0' : { 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: {} },\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 'EBL_ISS_v3.0.0' : { DEFAULT: { required: ['partyName', 'sendToPlatform', 'identifyingCodes'] } },\n DEFAULT : { type: 'object', title: 'Issue To Party', required: ['partyName', 'identifyingCodes'], CHILDREN: ['partyName', 'sendToPlatform', 'identifyingCodes', 'taxLegalReferences'] },\n },\n issuingParty: {\n PARENTS : { DocumentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/IssuingParty' },\n },\n IssuingParty: {\n DEFAULT : { type: 'object', title: 'Issuing Party', required: ['partyName', 'address'], CHILDREN: ['partyName','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n isToOrder: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {}, HouseBillOfLading: {} },\n DEFAULT : { type: 'boolean' },\n },\n isVentilationOpen: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isWaste: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n jsonPath: {\n PARENTS : { Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 500 },\n },\n ladenContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/LadenContainerUnits' }\n },\n LadenContainerUnits: {\n DEFAULT : { type: 'object', title: 'Laden Container Units', oneOf:true },\n },\n lastEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n latitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n Leg: {\n DEFAULT : { type: 'object', title: 'Leg', required: ['departure', 'arrival'], CHILDREN: ['sequenceNumber', 'transport', 'departure', 'arrival'] },\n },\n legs: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Leg'} },\n },\n lengthOverall: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n Limits: {\n DEFAULT : { type: 'object', title: 'Limits', required: ['temperatureUnit'], CHILDREN: ['temperatureUnit','flashPoint','transportControlTemperature','transportEmergencyTemperature','SADT','SAPT'] },\n },\n limits: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/Limits' },\n },\n loadLocation: {\n PARENTS : { Transport: {$ref:'#/components/schemas/LoadLocation' } },\n },\n LoadLocation: {\n DEFAULT : { type: 'object', title: 'Load Location', CHILDREN: ['locationName', 'address', 'facility', 'UNLocationCode' ] },\n },\n loadUnits: {\n DEFAULT : { $ref: '#/components/schemas/LoadUnits' }\n },\n LoadUnits: {\n DEFAULT : { type: 'object', title: 'Load Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n location: {\n 'CS_v1.0.0' : { PARENTS: { PlaceOfReceipt: { $ref: '#/components/schemas/Location' }, TransportCall: { $ref: '#/components/schemas/TransportCallLocation' }, PortSchedule: { $ref: '#/components/schemas/PortScheduleLocation' }, PlaceOfDelivery: { $ref: '#/components/schemas/Location' }, PlaceOfArrival: { $ref: '#/components/schemas/Location' }, PlaceOfDeparture: { $ref: '#/components/schemas/Location' } } },\n 'CS_v1.0.1' : { PARENTS: { PlaceOfReceipt: { $ref: '#/components/schemas/Location' }, TransportCall: { $ref: '#/components/schemas/TransportCallLocation' }, PortSchedule: { $ref: '#/components/schemas/PortScheduleLocation' }, PlaceOfDelivery: { $ref: '#/components/schemas/Location' }, PlaceOfArrival: { $ref: '#/components/schemas/Location' }, PlaceOfDeparture: { $ref: '#/components/schemas/Location' } } },\n PARENTS : { ShipmentLocation: {}, ContainerPositioning: {$ref: '#/components/schemas/ContainerPositioningLocation'}, ContainerPositioningEstimated: {$ref: '#/components/schemas/ContainerPositioningLocation'} },\n DEFAULT : { $ref: '#/components/schemas/Location' },\n },\n Location: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','address','UNLocationCode','facility'] } },\n 'CS_v1.0.1' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','address','UNLocationCode','facility'] } },\n DEFAULT : { type: 'object', title: 'Location', CHILDREN: ['locationName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n locationName: {\n 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// 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'] },\n },\n longitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 11 },\n },\n manifestTypeCode: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n material: {\n PARENTS : { InnerPackaging: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n mediaType: {\n DEFAULT : { type: 'string', maxLength:100 },\n },\n message: {\n PARENTS : { Feedback: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n methodOfPayment: {\n DEFAULT : { type: 'string', maxLength: 1, pseudoEnum: ['A','B','C','D','H','Y','Z'] },\n },\n milesToDestinationPort: {\n DEFAULT : { type: 'number', format: 'float' }\n },\n missingAdditionalDocumentChecksums: {\n PARENTS : { EnvelopeTransferFinishedResponse: { minItems: null}, EnvelopeTransferStartedResponse: {} },\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n MMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n modeOfTransport: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n PARENTS : { Transport: { pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] }, VesselTransport: { maxLength: null, enum: ['VESSEL'], pseudoEnum: [] }, BargeTransport: { maxLength: null, enum: ['BARGE'], pseudoEnum: []}, OtherTransport: { maxLength: null, enum: ['RAIL_TRUCK', 'BARGE_TRUCK', 'BARGE_RAIL', 'MULTIMODAL', 'RAIL', 'TRUCK'] } },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n moves: {\n DEFAULT : { $ref: '#/components/schemas/MovesList' }\n },\n Moves: {\n DEFAULT : { type: 'object', title: 'Moves', CHILDREN: ['carrierCode','carrierCodeListProvider','restows'], oneOf: true },\n },\n MovesList: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Moves'} },\n },\n name: {\n PARENTS : { DocumentMetadata: {}, Vessel: { maxLength: 50 }, Barge: { maxLength: 50 }, SupportingDocument: {maxLength: 100, pattern: null }, vessel: { maxLength: 50 }, PartyContactDetail: { maxLength: 35 }, PartyContactDetailHBL: { maxLength: 35 }, PartyContactDetailWithPattern: { maxLength: 35 } },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n NANumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n NationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code', required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n nationalCommodityCode: {\n PARENTS : { ConsignmentItemHBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NationalCommodityCode' },\n },\n nationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/NationalCommodityCode'} },\n },\n netExplosiveContent: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetExplosiveContent' },\n },\n NetExplosiveContent: {\n DEFAULT : { type: 'object', title: 'Net Explosive Content', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetWeight' },\n },\n NetWeight: {\n DEFAULT : { type: 'object', title: 'Net Weight', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netVolume: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetVolume' },\n },\n NetVolume: {\n DEFAULT : { type: 'object', title: 'Net Volume', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n notifyParties: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {} },\n DEFAULT : { type: 'array', maxItems: 3, items: {$ref: '#/components/schemas/NotifyParty'} },\n },\n notifyParty: {\n PARENTS : { DocumentPartiesHouseBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NotifyPartyHBL' },\n },\n NotifyParty: {\n DEFAULT : { type: 'object', title: 'Notify Party', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n NotifyPartyHBL: {\n DEFAULT : { type: 'object', title: 'Notify Party (House B/L)', required: ['partyName','partyContactDetails', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n number: {\n PARENTS : { Seal: {} },\n DEFAULT : { type: 'string', maxLength: 15 },\n },\n numberOfCopiesWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfCopiesWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfPackages: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {}, OuterPackagingHBL: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1, maximum: 99999999 },\n },\n numberOfRiderPages: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n o2Setpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n omit: {\n DEFAULT : { type: 'boolean' },\n },\n OmitPortCall: {\n DEFAULT : { type: 'object', title: 'Omit Port Call', CHILDREN: ['reason','isFYI'] },\n },\n OmitTerminalCall: {\n DEFAULT : { type: 'object', title: 'Omit Terminal Call', CHILDREN: ['reason','isFYI'] },\n },\n omitted: {\n PARENTS : { PortCall: {}, TerminalCall: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n onCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n onwardInlandRouting: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/OnwardInlandRouting' },\n },\n OnwardInlandRouting: {\n DEFAULT : { type: 'object', title: 'Onward Inland Routing', CHILDREN: ['locationName','address','facility','UNLocationCode'] },\n },\n oogUnits: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n servcieEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'] },\n },\n operatorCarrierCode: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n operatorCarrierCodeListProvider: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n originChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/OriginChargesPaymentTerm' },\n },\n OriginChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Origin Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n OuterPackaging: {\n 'BKG_v2.0.0' : { 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 'BKG_v2.0.0-Beta-3' : { DEFAULT: { required: null } },\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.0' : { 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.0' : { 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.1' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC'] } } },\n 'BKG_v2.0.2' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC'] } } },\n PARENTS : { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','SCO'] }, OtherDocumentPartyShippingInstructions: { pseudoEnum: ['DDR','DDS','COW','COX','SCO','CS','MF','WH'] }, OtherDocumentPartyHBL: { pseudoEnum: ['DDR','DDS','CS','MF','WH']} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n partyName: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperHBL: {}, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, CarrierBookingOffice: {}, Party: {}, PartyHBL: {}, CarriersAgentAtDestination: {}, IssuingParty: {}, IssueToParty: {}, TransactionParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, NotifyPartyHBL: {}, Seller: {}, SellerHBL: {}, Buyer: {}, BuyerHBL: {}, ReceiverValidationResponse: {}, ShippingInstructionsRequestor: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n paymentTermCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n phone: {\n PARENTS : { PartyContactDetail: {}, PartyContactDetailHBL: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, PartyContactDetailWithPattern: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 30, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n placeOfAcceptance: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfAcceptance' },\n },\n PlaceOfAcceptance: {\n DEFAULT : { type: 'object', title: 'Place of Acceptance', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n PlaceOfArrival: {\n DEFAULT : { type: 'object', title: 'Place of Arrival', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] },\n },\n placeOfBLIssue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfBLIssue' },\n },\n PlaceOfBLIssue: {\n DEFAULT : { type: 'object', title: 'Place of B/L Issue', oneOf: {UNLocationCode: {}, countryCode: {} }, CHILDREN: ['locationName'] },\n },\n PlaceOfDeparture: {\n DEFAULT : { type: 'object', title: 'Place of Departure', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] },\n },\n placeOfFinalDelivery: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfFinalDelivery' },\n },\n PlaceOfFinalDelivery: {\n DEFAULT : { type: 'object', title: 'Place of Final Delivery', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n placeOfIssue: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfIssue' },\n },\n PlaceOfIssue: {\n DEFAULT : { type: 'object', title: 'Place of Issue', oneOf: true, CHILDREN: ['locationName'] },\n },\n placeOfDelivery: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDelivery' },\n },\n PlaceOfDelivery: {\n 'CS_v1.0.0' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Delivery', CHILDREN: ['locationName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n placeOfReceipt: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfReceipt' },\n },\n PlaceOfReceipt: {\n 'CS_v1.0.0' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Receipt', CHILDREN: ['locationName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n plannedArrivalDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n plannedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n plannedDepartureDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n POBox: {\n DEFAULT : { type: 'string', maxLength: 20 },\n },\n PointToPoint: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','transitTime','legs'] } },\n DEFAULT : { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','routingReference','transitTime','legs'] },\n },\n portCall: {\n DEFAULT : { $ref: '#/components/schemas/PortCall' },\n },\n PortCall: {\n DEFAULT : { type: 'object', title: 'Port Call', required: ['portCallID', 'UNLocationCode','vessel'], CHILDREN: ['portCallID','portVisitReference','UNLocationCode','vessel','omitted','isFYI'] },\n },\n PortCalls: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCall' } },\n },\n portCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallPhaseTypeCode: {\n DEFAULT : { type: 'string', enum: ['INBD', 'ALGS', 'SHIF', 'OUTB'], pseudoEnum: []}, // No validation added for description\n },\n PortCallServices: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCallService' } },\n },\n PortCallService: {\n DEFAULT : { type: 'object', title: 'Port Call Service', required: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallServiceLocation'], CHILDREN: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallPhaseTypeCode','facilityTypeCode','portCallServiceLocation','moves','cancelled','declined','isFYI'] },\n },\n portCallServiceEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'], pseudoEnum: []}, // No validation added for description\n },\n portCallServiceID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallServiceLocation: {\n PARENTS : { PortCallService: { $ref: '#/components/schemas/PortCallServiceLocation' }, Timestamp: { $ref: '#/components/schemas/PortCallServiceLocationTimestamp' } },\n },\n PortCallServiceLocation: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n PortCallServiceLocationTimestamp: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location (Timestamp)', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n portCallServiceTypeCode: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: []}, // No validation added for description\n },\n portChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n portOfDischarge: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfDischarge' },\n },\n PortOfDischarge: {\n DEFAULT : { type: 'object', title: 'Port of Discharge', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n portOfLoading: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfLoading' },\n },\n PortOfLoading: {\n DEFAULT : { type: 'object', title: 'Port of Loading', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n PortSchedule: {\n DEFAULT : { type: 'object', title: 'Port Schedule', required: ['location'], CHILDREN: ['location', 'vesselSchedules'] },\n },\n PortScheduleLocation: {\n DEFAULT : { type: 'object', title: 'Port Schedule Location', CHILDREN: ['locationName','UNLocationCode','facilitySMDGCode'] },\n },\n portVisitReference: {\n PARENTS : { TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, PortCall: {}, },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n postCode: {\n PARENTS : { Address: {}, address: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n preCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n previousEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$', nullable: 'true' },\n },\n property: {\n PARENTS : { ErrorResponse: {}, Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n provider: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n properShippingName: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 250 },\n },\n providerCorrelationReference: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n publisherRole: {\n DEFAULT : { type: 'string', enum: ['CA', 'AG', 'VSL', 'ATH', 'PLT', 'TWG', 'MOR', 'TR', 'LSH', 'BUK', 'SLU', 'SVP'] },\n },\n purchaseOrderReferences: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n quantity: {\n PARENTS : { InnerPackaging: { type: 'integer', format: 'int32' }, Charge: { type: 'number', format: 'float', minimum: '0' } },\n },\n reason: {\n 'JIT_v2.0.0' : { DEFAULT: { maxLength: 500 } },\n PARENTS : { CancelBookingRequest: {}, Transaction: {maxLength: 4}, EnvelopeTransferFinishedResponse: {nullable: 'true', 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'] },\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/TransactionParty' },\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 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 } },\n },\n requestedCarrierClauses: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 100 } },\n },\n requestedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n RequestedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n DEFAULT : { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup','fullContainerPickupDateTime','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] },\n },\n RequestedEquipmentShipper: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n DEFAULT : { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup','fullContainerPickupDateTime','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences','commodities'] },\n },\n requestedEquipments: {\n PARENTS : { CreateBooking: {items: {$ref: '#/components/schemas/RequestedEquipmentShipper'}}, UpdateBooking: {items: {$ref: '#/components/schemas/RequestedEquipmentShipper'}}, Booking: {items: {$ref: '#/components/schemas/RequestedEquipment'}}, booking: {items: {$ref: '#/components/schemas/RequestedEquipment'}}, amendedBooking: {items: {$ref: '#/components/schemas/RequestedEquipment'}} },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n requestedNumberOfTransportDocuments: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n requestedOnCarriageModeOfTransport: {\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] },\n },\n requestedPreCarriageModeOfTransport: {\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] },\n },\n requestUri: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string' },\n },\n RequiredEquipment: {\n DEFAULT : { type: 'object', title: 'Equipment (Required Properties)', required: ['equipmentReference', 'ISOEquipmentCode', 'tareWeight'], CHILDREN: ['equipmentReference','ISOEquipmentCode','tareWeight'] },\n },\n responseCode: {\n DEFAULT : { type: 'string', enum: ['RECE','DUPE','BSIG','BENV','INCD','MDOC','DISE'] },\n },\n restows: {\n DEFAULT : { $ref: '#/components/schemas/Restows' },\n },\n Restows: {\n DEFAULT : { type: 'object', title: 'Restows', oneOf:true },\n },\n routingOfConsignmentCountries: {\n DEFAULT : { type: 'array', minItems: 1, items: { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' } },\n },\n routingReference: {\n DEFAULT : { type: 'string', maxLength: 5000, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n SADT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n SAPT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n Schedule: {\n DEFAULT : { type: 'object', title: 'Schedule', required: ['servicePartners', 'isDummyVessel', 'timestamps'] },\n },\n Seal: {\n DEFAULT : { type: 'object', title: 'Seal', required: ['number'], CHILDREN: ['number','source'] },\n },\n seals: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, UtilizedTransportEquipmentShipper: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Seal'} },\n },\n segregationGroups: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: {type: 'string', maxLength: 2} },\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.0' : { 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 DEFAULT : { type: 'object', title: 'Service Schedule', required: ['carrierServiceName', 'carrierServiceCode', 'vesselSchedules'], CHILDREN: ['carrierServiceName','carrierServiceCode','universalServiceReference','vesselSchedules'] },\n },\n severity: {\n PARENTS : { Feedback: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFO','WARN','ERROR'] },\n },\n shipmentCutOffTimes: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ShipmentCutOffTime'} },\n },\n ShipmentCutOffTime: {\n DEFAULT : { type: 'object', title: 'Shipment Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n ShipmentLocation: {\n DEFAULT : { type: 'object', title: 'Shipment Location', required: ['location', 'locationTypeCode'], CHILDREN: ['location','locationTypeCode'] },\n },\n shipmentLocations: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/ShipmentLocation'} },\n },\n shippedOnBoardDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n shipper: {\n 'BKG_v2.0.0' : { 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.0' : { 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', 'feedbacks', 'shippingInstructions', 'updatedShippingInstructions'] }\n },\n ShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Full Notification', allOf: true },\n },\n ShippingInstructionsNotification: {\n 'ebl_ntf_v3.0.0-Beta-1': { DEFAULT: { required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'data'] } },\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 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 size: {\n PARENTS : { DocumentMetadata: {} },\n DEFAULT : { type: 'number', minimum: 1 }\n },\n solutionNumber: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 }\n },\n source: {\n // Removing DCSA_CLOUDEVENT_GROUP in the default in order to handle 'source' inside a 'Seal'\n PARENTS : { ShippingInstructionsNotification: {maxLength: 4096}, TransportDocumentNotification: {maxLength: 4096}, BookingNotification: {maxLength: 4096}, ArrivalNoticeNotification: {maxLength: 4096}, Seal: {enum: ['CAR', 'SHI', 'VET', 'CUS'] } },\n DEFAULT : { type: 'string' },\n },\n SpecificUnits: {\n DEFAULT : { type: 'object', title: 'Specific Units (for load and discharge)', CHILDREN: ['loadUnits', 'dischargeUnits'] },\n },\n specialCertificateNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n specversion: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['1.0'], pseudoEnum: [] },\n },\n stateRegion: {\n PARENTS : { Address:{}, address: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 65 },\n },\n statusCode: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'integer', format: 'int32' },\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 PARENTS : { Address: {}, address: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 70 },\n },\n streetNumber: {\n PARENTS : { Address: {}, address: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n subFacility: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subscriptionReference: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subsidiaryRisk1: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n subsidiaryRisk2: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n identificationNumber: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 17 },\n },\n SupportingDocument: {\n DEFAULT : { type: 'object', title: 'Supporting Document', required: ['name', 'content'] },\n },\n supportingDocuments: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/DocumentMetadata'} },\n },\n SurrenderRequestAnswer: {\n DEFAULT : { type: 'object', title: 'Surrender Request Answer', required: ['surrenderRequestReference', 'action'] },\n },\n surrenderRequestCode: {\n DEFAULT : { type: 'string', enum: ['SREQ', 'AREQ'] },\n },\n SurrenderRequestDetails: {\n DEFAULT : { type: 'object', title: 'Surrender Request Details', required: ['surrenderRequestReference','transportDocumentReference','surrenderRequestCode'] },\n },\n // SurrenderRequestedBy should be deleted\n SurrenderRequestedBy: {\n DEFAULT : { type: 'object', title: 'Surrender Requested By', required: ['partyName', 'eblPlatform'] },\n },\n surrenderRequestReference: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n tareWeight: {\n PARENTS : { Equipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, RequiredEquipment: {} },\n DEFAULT : { $ref: '#/components/schemas/TareWeight' },\n },\n TareWeight: {\n DEFAULT : { type: 'object', title: 'Tare Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n tareWeightUnit: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n TaxLegalReference: {\n DEFAULT : { type: 'object', title: 'Tax & Legal Reference', required: ['type', 'countryCode', 'value'], CHILDREN: ['type','countryCode','value'] },\n },\n taxLegalReferences: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperHBL: {}, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, Party: {}, PartyHBL: {}, IssuingParty: {}, IssueToParty: {}, TransactionParty: {}, 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 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 PARENTS : { Transaction: {} },\n DEFAULT : { type: 'integer', format: 'int64' },\n },\n Timestamp: {\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 timestampID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n timestamps: {\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 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 TransactionParty: {\n DEFAULT : { type: 'object', title: 'Transaction Party', required: ['partyName', 'eblPlatform', 'identifyingCodes'] },\n },\n Transaction: {\n DEFAULT : { type: 'object', title: 'Transaction', required: ['action','actor','timestamp','recipient'], CHILDREN: ['action','actor','recipient','timestamp','reason','comments'] },\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 '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 PARENTS : { TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n TransportCallLocation: {\n DEFAULT : { type: 'object', title: 'TransportCall Location', CHILDREN: ['locationName','address','UNLocationCode','facilitySMDGCode'] },\n },\n transportCalls: {\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportCall' } },\n },\n transportCallSequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transportControlTemperature: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n TransportDocument: {\n 'EBL_PINT_v3.0.0' : { DEFAULT: { $ref: '#/components/schemas/TransportDocument' } },\n 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', '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 'ebl_ntf_v3.0.0-Beta-1': { DEFAULT: { required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'data'] } },\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 : { 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 : { 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.0' : { PARENTS: {\n BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n 'BKG_v2.0.1' : { PARENTS: {\n BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n 'BKG_v2.0.2' : { PARENTS: {\n BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n PARENTS : { \n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n Reference: {maxLength: 3, pseudoEnum: ['CR','AKG'] },\n ReferenceConsignmentItem: {maxLength: 3, pseudoEnum: ['CR','AKG','SPO','CPO'] },\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n ArrivalNoticeNotification: {enum: ['org.dcsa.arrival-notice-notification.v1'], pseudoEnum: [] },\n TransportDocumentNotification: {enum: ['org.dcsa.transport-document.v3'], pseudoEnum: [] },\n ShippingInstructionsNotification: {enum: ['org.dcsa.shipping-instructions.v3'], pseudoEnum: [] },\n vessel: {enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n },\n DEFAULT : { type: 'string' },\n },\n typeCode: {\n PARENTS : { Vessel: { enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] } },\n DEFAULT : { type: 'string' },\n },\n typeOfPerson: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: ['NATURAL_PERSON','LEGAL_PERSON','ASSOCIATION_OF_PERSONS'] },\n },\n unit: {\n PARENTS : { \n CargoGrossWeight: {enum: ['KGM', 'LBR']},\n CargoNetWeight: {enum: ['KGM', 'LBR']},\n TareWeight: {enum: ['KGM', 'LBR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossVolume: {enum: ['MTQ', 'FTQ']}, \n NetVolume: {enum: ['MTQ', 'FTQ', 'LTR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossWeight: {enum: ['KGM', 'LBR']}, \n CargoGrossWeightReq: {enum: ['KGM', 'LBR']}, \n GrossWeight: {enum: ['KGM', 'LBR']}, \n CargoNetWeight: {enum: ['KGM', 'LBR']}, \n NetWeight: {enum: ['KGM', 'LBR']}, \n NetExplosiveContent: {enum: ['KGM', 'LBR', 'GRM', 'ONZ']} },\n DEFAULT : { type: 'string' },\n },\n units: {\n PARENTS : { ConfirmedEquipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n unitPrice: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n universalExportVoyageReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalImportVoyageReference: {\n PARENTS : { 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 PARENTS : { TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, Schedule: {}, ServiceSchedule: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', minLength: 8, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' },\n },\n UNLocationCode: {\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^[A-Z]{2}[A-Z2-9]{3}$', pseudoEnum: [] },\n },\n UNNumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n UpdateBooking: {\n DEFAULT : { type: 'object', title: 'Update Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n UpdateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Update Shipping Instructions', required: ['shippingInstructionsReference', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n updatedShippingInstructions: {\n PARENTS : { ShippingInstructionsData: {} },\n DEFAULT : { $ref: '#/components/schemas/UpdatedShippingInstructionsFullNotification' },\n },\n UpdatedShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Updated Shipping Instructions', allOf: true },\n },\n updatedShippingInstructionsStatus: {\n PARENTS : { CancelShippingInstructionsUpdate: { pseudoEnum: [] }, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['UPDATE_RECEIVED','UPDATE_CONFIRMED','UPDATE_CANCELLED','UPDATE_DECLINED'] },\n },\n UTEquipment: {\n DEFAULT : { type: 'object', title: 'Shipper Owned Equipment (SoC)', required: ['isShipperOwned', 'equipment'], CHILDREN: ['isShipperOwned','equipment'] },\n },\n UTEquipmentReference: {\n DEFAULT : { type: 'object', title: 'Carrier Owned Equipment', required: ['isShipperOwned', 'equipmentReference'], CHILDREN:['isShipperOwned','equipmentReference'] },\n },\n UtilizedTransportEquipment: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment', required: ['equipment', 'isShipperOwned', 'seals'], CHILDREN: ['equipment','isShipperOwned','isNonOperatingReefer','activeReeferSettings','shippingMarks','seals','references','customsReferences'] },\n },\n utilizedTransportEquipments: {\n PARENTS : { HouseBillOfLading: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentHBL'}}, CreateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, UpdateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, ShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, shippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, updatedShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, TransportDocument: {items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} }, transportDocument: { items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n UtilizedTransportEquipmentHBL: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (House B/L)', required: ['emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode'], oneOf: true, CHILDREN: ['seals','emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode']},\n },\n UtilizedTransportEquipmentShipper: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (Shipper)', required: ['seals'], oneOf: true, CHILDREN: ['shippingMarks','seals','emptyIndicatorCode','references','customsReferences']},\n },\n value: {\n PARENTS : {\n TareWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n NetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n CargoGrossWeightReq: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n GrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetExplosiveContent: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n DetailedError: {type: 'string', maxLength: 500},\n errors: {type: 'string', maxLength: 500}, \n TaxLegalReference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n Reference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n },\n },\n values: {\n PARENTS : { \n NationalCommodityCode: {}, \n CustomsReference: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n ReferenceConsignmentItem: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n DEFAULT : { type: 'array', minItems: 1, items: {type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n vessel: {\n 'CS_v1.0.0' : { 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.0' : { 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 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 PARENTS : { vessel: {}, Vessel: {}, Transport: {}, VesselVoyage: {}, Barge: {} },\n DEFAULT : { type: 'string', minLength: 7, maxLength: 8, pattern: '^\\\\d{7,8}$' },\n },\n vesselName: {\n PARENTS : { Transport: {}, VesselVoyage: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n vesselOperatorCarrierCode: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n 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 DEFAULT : { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel'], CHILDREN: ['vessel','isDummyVessel','transportCalls'] },\n },\n vesselSchedules: {\n PARENTS : { ServiceSchedule: { minItems: 1, items: {$ref: '#/components/schemas/VesselSchedule'} }, PortSchedule: { items: { $ref: '#/components/schemas/Schedule' } } },\n DEFAULT : { type: 'array' },\n },\n VesselStatus: {\n DEFAULT : {type: 'object', title: 'Vessel Status', required: ['portCallServiceID'], CHILDREN: ['portCallServiceID', 'draft','airDraft','aftDraft','forwardDraft','dimensionUnit','vesselPosition','milesToDestinationPort','isFYI']}\n },\n VesselStatuses: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/VesselStatus' } },\n },\n VesselTransport: {\n DEFAULT : { type: 'object', title: 'Vessel Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','vessel'] },\n },\n VesselVoyage: {\n DEFAULT : { type: 'object', title: 'Vessel/Voyage', required: ['vesselName', 'carrierExportVoyageNumber'], CHILDREN: ['vesselName','carrierExportVoyageNumber','universalExportVoyageReference'] },\n },\n vesselVoyages: {\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/VesselVoyage'} },\n },\n weightUnit: {\n PARENTS : { Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n width: {\n PARENTS : { Vessel: {} },\n DEFAULT : { type: 'number', format: 'float' }, // JIT\n },\n woodDeclaration: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['NOT_APPLICABLE','NOT_TREATED_AND_NOT_CERTIFIED','PROCESSED','TREATED_AND_CERTIFIED'] },\n },\n};\n\n\n// Makes sure two arrays are equal if:\n// * they are the same array\n// * they have the same size\n// * items on each position in the list are the same\nfunction arraysEqual(a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\n// input: the property (Node) in the API to validate\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// attribute: the attribute to test (type, minLength, required, etc...) if specified correctly\n// requirements: the list of attributes that from the Spectral rule that is valid\n// results: an accumulated list of errors for a particular property\nfunction checkRequirement(input, propertyName, attribute, requirements, results) {\n // Checking 'enum' attribute\n if (attribute === 'enum') {\n // Check that enum values match (= are specified the same way...)\n const enumValuesRequired = requirements[attribute];\n const enumValues = input[attribute];\n if (!arraysEqual(enumValues, enumValuesRequired)) {\n // The two enum lists do not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: [` + enumValuesRequired + `], value provided: [` + enumValues + `]`, }, );\n }\n // Checking 'required' attribute\n } else if (attribute === 'required') {\n // Check that required lists match (= are specified the same way...)\n const requiredValues = requirements[attribute];\n const inputValues = input[attribute];\n if (!arraysEqual(inputValues, requiredValues)) {\n // The two required lists do not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: [` + requiredValues + `], value provided: [` + inputValues + `]`, }, );\n }\n\n // Check that required attributes are part of the Schema (if schema is updated without the required list being updated)\n if (requiredValues && requiredValues.length > 0) {\n if (!input.properties) {\n results.push( { message: propertyName + ` has required child-properties defined...`, }, );\n } else {\n for (let i = 0; i < requiredValues.length; ++i) {\n if (!input.properties[requiredValues[i]]) {\n results.push( { message: propertyName + ` HAS required property ` + requiredValues[i] + ` but it is missing as a child in the schema`, }, );\n }\n }\n }\n }\n // Checking 'items' attribute\n } else if (attribute === 'items') {\n if (input['items'] && requirements['items']) {\n // Check if a $ref MUST be used\n if (Object.keys(input['items']).length === 1 && input['items']['$ref']) {\n // the input contains a $ref\n if (requirements['items']['$ref'] !== input['items']['$ref']) {\n results.push( { message: propertyName + `.` + attribute + ` is defined as a $ref pointing to '` + input['items']['$ref'] + `' - but must be defined ` + (requirements['items']['$ref'] ? `as a $ref pointing to: ` + requirements['items']['$ref'] : `inline`), }, );\n }\n } else if (Object.keys(requirements['items']).length === 1 && requirements['items']['$ref']) {\n // the spec requires a $ref\n if (input['items']['$ref'] !== requirements['items']['$ref']) {\n results.push( { message: propertyName + `.` + attribute + ` is not defined as a $ref and MUST point to: ` + requirements['items']['$ref'], }, );\n }\n } else {\n // Multiple properties defined for an inline defined items\n for (const attribute2 of ATTRIBUTES_TO_CHECK) {\n checkRequirement(input.items, propertyName + '.items', attribute2, requirements.items, results)\n }\n }\n } 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` : `PsuedoEnum`) + ` 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 PsuedoEnum`) + `: [` + formatList + `]\\nShould follow the pattern: - \\`...\\` (...)`, }, );\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 Psuedo-Enums\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 // 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 }\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 const standardProperty = property[standard];\n if (standardProperty) {\n mergeSpecs(specs, standardProperty['DEFAULT'], false);\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.: jit_v1.2.0-Beta-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'];\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 // Commercial Schedules\n 'CS_v1.0.0',\n 'CS_v1.0.1',\n // electronic Bill of Lading\n 'EBL_v3.0.0',\n 'EBL_v3.0.1',\n 'EBL_ISS_v3.0.0',\n 'EBL_ISS_v3.0.1',\n 'EBL_SUR_v3.0.0',\n 'EBL_SUR_v3.0.1',\n 'EBL_PINT_v3.0.0',\n // Just in Time Port Calls\n 'JIT_v2.0.0',\n]);\n\n// Standard covering EBL Beta 2\nconst EBL_BETA2_GROUP = [ 'EBL_v2.0.0-Beta-2', 'EBL_ISS_v2.0.0-Beta-2', 'EBL_ISS_RSP_v2.0.0-Beta-2', 'EBL_SUR_v2.0.0-Beta-2', 'EBL_SUR_RSP_v2.0.0-Beta-2' ];\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: {}, Transaction: {enum: ['ISSU','ENDO','TRNS','RESD','RESA','SACC','SREJ'] } },\n DEFAULT : { type: 'string', enum: ['SURR', 'SREJ'] },\n },\n actionCode: {\n PARENTS : { EndorsementChainLink: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['ISSUE','ENDORSE','SIGN','SURRENDER_FOR_DELIVERY','SURRENDER_FOR_AMENDMENT'] },\n },\n actionDateTime: {\n PARENTS : { EndorsementChainLink: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n ActiveReeferSettings: {\n 'BKG_v2.0.0' : { 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.0-Beta-2': { DEFAULT: { required: ['temperatureSetpoint', 'temperatureUnit'], CHILDREN: ['temperatureSetpoint', 'temperatureUnit', 'o2Setpoint', 'co2Setpoint', 'humiditySetpoint', 'airExchangeSetpoint', 'airExchangeUnit', 'isVentilationOpen', 'isDrainholesOpen', 'isBulbMode', 'isColdTreatmentRequired', 'isControlledAtmosphereRequired', 'isPreCoolingRequired', 'isGeneratorSetRequired'] }, },\n 'BKG_v2.0.0-Beta-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/TransactionParty' },\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 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 ShipperHBL: {$ref: '#/components/schemas/Address'},\n Consignee: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ConsigneeHBL: {$ref: '#/components/schemas/Address'},\n Endorsee: {$ref: '#/components/schemas/PartyAddress'},\n EndorseeShipper: {$ref: '#/components/schemas/PartyAddress'},\n ServiceContractOwner: {$ref: '#/components/schemas/PartyAddress'},\n CarrierBookingOffice: {$ref: '#/components/schemas/Address'},\n NotifyParty: { $ref: '#/components/schemas/PartyAddress'},\n NotifyPartyHBL: { $ref: '#/components/schemas/Address'},\n Seller: { $ref: '#/components/schemas/Address'},\n SellerHBL: { $ref: '#/components/schemas/Address'},\n Buyer: { $ref: '#/components/schemas/Address'},\n BuyerHBL: { $ref: '#/components/schemas/Address'},\n ShippingInstructionsRequestor: { $ref: '#/components/schemas/PartyAddress' },\n Party: {$ref: '#/components/schemas/PartyAddress'},\n PartyHBL: {$ref: '#/components/schemas/Address'},\n CarriersAgentAtDestination: {$ref: '#/components/schemas/Address'},\n IssuingParty: {$ref: '#/components/schemas/PartyAddress'},\n EmptyContainerDepotReleaseLocation: {$ref: '#/components/schemas/Address'},\n ContainerPositioningLocation: {$ref: '#/components/schemas/Address'},\n TransportCallLocation: { $ref: '#/components/schemas/Address' }\n },\n },\n Address: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'city', 'stateRegion', 'countryCode'] } },\n 'CS_v1.0.1' : { DEFAULT: { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'city', 'stateRegion', 'countryCode'] } },\n DEFAULT : { type: 'object', title: 'Address', required: ['street', 'city', 'countryCode'], CHILDREN: ['street', 'streetNumber', 'floor', 'postCode', 'POBox', 'city', 'stateRegion', 'countryCode'] },\n },\n// AddressLocation: {\n// DEFAULT : { type: 'object', title: 'Address Location', required: ['locationType', 'address'], 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.0' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n 'BKG_v2.0.1' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n 'BKG_v2.0.2' : { DEFAULT: { required: ['manifestTypeCode'], CHILDREN: ['manifestTypeCode','countryCode'] } },\n 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 barge: {\n DEFAULT : { $ref: '#/components/schemas/Barge' },\n },\n Barge: {\n DEFAULT : { type: 'object', title: 'Barge', CHILDREN: ['vesselIMONumber','MMSINumber','name','flag','callSign','operatorCarrierCode','operatorCarrierCodeListProvider'] },\n },\n BargeTransport: {\n DEFAULT : { type: 'object', title: 'Barge Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','barge'] },\n },\n Booking: {\n DEFAULT : { type: 'object', title: 'Booking', required: ['bookingStatus', 'receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n booking: {\n DEFAULT : { $ref: '#/components/schemas/BookingFullNotification' },\n },\n bookingAgent: {\n PARENTS : { DocumentParties: {}, DocumentPartiesReq: {} },\n DEFAULT : { $ref: '#/components/schemas/BookingAgent' },\n },\n BookingAgent: {\n DEFAULT : { type: 'object', title: 'Booking Agent', required: ['partyName'], CHILDREN: ['partyName', 'address', 'partyContactDetails', 'identifyingCodes', 'taxLegalReferences','reference']},\n },\n BookingFullNotification: {\n DEFAULT : { type: 'object', title: 'Booking Full Notification', allOf: true },\n },\n bookingChannelReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n BookingRefCancelledStatus: {\n DEFAULT : { type: 'object', title: 'Cancelled Booking Response', required: ['bookingStatus'] },\n },\n BookingRefStatus: {\n DEFAULT : { type: 'object', title: 'Booking Response', required: ['bookingStatus'] },\n },\n BookingNotification: {\n DEFAULT : { type: 'object', title: 'Booking Notification', required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'subscriptionReference', 'data'] },\n },\n BookingNotificationData: {\n DEFAULT : { type: 'object', title: 'Data', required: ['bookingStatus'], CHILDREN: ['bookingStatus', 'amendedBookingStatus', 'bookingCancellationStatus', 'carrierBookingRequestReference', 'carrierBookingReference', 'feedbacks', 'booking', 'amendedBooking'] },\n },\n bookingStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['RECEIVED','PENDING_UPDATE','UPDATE_RECEIVED','CONFIRMED','PENDING_AMENDMENT','REJECTED','DECLINED','CANCELLED','COMPLETED'] },\n },\n bookingCancellationStatus: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, BookingRefStatus: {}, BookingNotificationData: {}, CancelBookingRequest: { pseudoEnum: [] } },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['CANCELLATION_RECEIVED','CANCELLATION_DECLINED','CANCELLATION_CONFIRMED'] },\n },\n buyer: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {}, DocumentPartiesHouseBL: { $ref: '#/components/schemas/BuyerHBL' } },\n DEFAULT : { $ref: '#/components/schemas/Buyer' },\n },\n Buyer: {\n DEFAULT : { type: 'object', title: 'Buyer', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n BuyerHBL: {\n DEFAULT : { type: 'object', title: 'Buyer (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n calculationBasis: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n callSign: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n cancel: {\n DEFAULT : { type: 'boolean' },\n },\n Cancel: {\n DEFAULT : { type: 'object', title: 'Cancel', CHILDREN: ['reason','isFYI'] },\n },\n cancelled: {\n PARENTS : { PortCallService: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n CancelBookingRequest: {\n DEFAULT : { type: 'object', title: 'Cancel Booking Request', CHILDREN: ['reason'] },\n },\n CancelShippingInstructionsUpdate: {\n DEFAULT : { type: 'object', title: 'Cancel Shipping Instructions Update', required: ['updatedShippingInstructionsStatus'], CHILDREN: ['updatedShippingInstructionsStatus'] },\n },\n cargoGrossVolume: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoGrossVolume' },\n },\n CargoGrossVolume: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Volume', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoGrossWeight: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {}, CargoItemHBL: {}, RequestedEquipment: { $ref: '#/components/schemas/CargoGrossWeightReq' }, RequestedEquipmentShipper: { $ref: '#/components/schemas/CargoGrossWeightReq' } },\n DEFAULT : { $ref: '#/components/schemas/CargoGrossWeight' },\n },\n CargoGrossWeight: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n CargoGrossWeightReq: {\n DEFAULT : { type: 'object', title: 'Cargo Gross Weight (Requested Equipment)', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoNetVolume: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoNetVolume' },\n },\n CargoNetVolume: {\n DEFAULT : { type: 'object', title: 'Cargo Net Volume', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n cargoNetWeight: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { $ref: '#/components/schemas/CargoNetWeight' },\n },\n CargoNetWeight: {\n DEFAULT : { type: 'object', title: 'Cargo Net Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n CargoItem: {\n DEFAULT : { type: 'object', title: 'Cargo Item', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','customsReferences'] },\n },\n CargoItemHBL: {\n DEFAULT : { type: 'object', title: 'Cargo Item (House B/L)', required: ['equipmentReference', 'cargoGrossWeight', 'outerPackaging'], CHILDREN: ['equipmentReference','cargoGrossWeight','outerPackaging'] },\n },\n cargoItems: {\n PARENTS : {\n ConsignmentItemShipper: { items: {$ref: '#/components/schemas/CargoItemShipper' } },\n ConsignmentItem : { items: {$ref: '#/components/schemas/CargoItem' } },\n ConsignmentItemHBL : { items: {$ref: '#/components/schemas/CargoItemHBL' } },\n },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n CargoItemShipper: {\n DEFAULT : {type: 'object', title: 'Cargo Item (Shipper)', required: ['equipmentReference', 'cargoGrossWeight'], CHILDREN: ['equipmentReference','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume', 'exportLicense', 'importLicense','outerPackaging','nationalCommodityCodes','houseBillOfLadingReference','customsReferences'] },\n },\n cargoMovementTypeAtOrigin: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n cargoMovementTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 3, pseudoEnum: ['FCL','LCL'] },\n },\n carrierBookingOffice: {\n 'BKG_v2.0.0' : { 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/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 PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, TerminalCall: {}, TransportCall: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n carrierImportVoyageNumber: {\n PARENTS : { 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 PARENTS : { TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 11, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n carrierServiceName: {\n PARENTS : { TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, ServiceSchedule: {}, ServicePartner: {}, ServicePartnerSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n Charge: {\n DEFAULT : { type: 'object', title: 'Charge', required: ['chargeName', 'currencyAmount', 'currencyCode', 'paymentTermCode', 'calculationBasis', 'unitPrice', 'quantity'], CHILDREN: ['chargeName','currencyAmount','currencyCode','paymentTermCode','calculationBasis','unitPrice','quantity'] },\n },\n chargeName: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n charges: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Charge'}},\n },\n city: {\n PARENTS : { PortOfLoading: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, PortOfDischarge: { type: null, maxLength: null, pattern: null, $ref: '#/components/schemas/City' }, address: {}, Address: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n City: {\n DEFAULT : { type: 'object', title: 'City', required: ['city', 'countryCode'], CHILDREN: ['city','stateRegion','countryCode'] },\n },\n classifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ACT', 'EST', 'PLN', 'REQ'], pseudoEnum: [] }, // No validation is done on description\n },\n co2Setpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n code: {\n PARENTS : { Feedback: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFORMATIONAL_MESSAGE','PROPERTY_WILL_BE_IGNORED','PROPERTY_VALUE_MUST_CHANGE','PROPERTY_VALUE_HAS_BEEN_CHANGED','PROPERTY_VALUE_MAY_CHANGE','PROPERTY_HAS_BEEN_DELETED'] },\n },\n codedVariantList: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^[0-3][0-9A-Z]{3}$' },\n },\n codeListName: {\n PARENTS : { IdentifyingCode: {}, identifyingCode: {} },\n DEFAULT : { type: 'string', maxLength: 100, pseudoEnum: ['DID','LEI','DUNS'] },\n },\n codeListProvider: {\n 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','GSBN','WISE','GLEIF','W3C','DNB','FMC','DCSA','ZZZ'] },\n },\n comments: {\n PARENTS : { SurrenderRequestAnswer: {}, SurrenderRequestDetails: {}, Transaction: {} },\n DEFAULT : { type: 'string', maxLength: 255, pattern: '^\\\\S(?:.*\\\\S)?$'},\n },\n commodities: {\n PARENTS : { RequestedEquipment: { items: { $ref: '#/components/schemas/Commodity' } }, RequestedEquipmentShipper: { items: { $ref: '#/components/schemas/CommodityShipper' } } },\n DEFAULT : { type: 'array' },\n },\n CommodityShipper: {\n DEFAULT : { type: 'object', title: 'Commodity (Shipper)', required: ['commodityType'], CHILDREN: ['commodityType','HSCodes','nationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n Commodity: {\n DEFAULT : { type: 'object', title: 'Commodity', required: ['commodityType'], CHILDREN: ['commoditySubReference', 'commodityType','HSCodes','nationalCommodityCodes','cargoGrossWeight','cargoGrossVolume','cargoNetWeight','cargoNetVolume','exportLicense','importLicense','outerPackaging','references','customsReferences'] },\n },\n commoditySubReference: {\n PARENTS : { Commodity: {}, ConsignmentItemShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n commodityType: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', maxLength: 550, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n competentAuthorityApproval: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern:'^\\\\S(?:.*\\\\S)?$' },\n },\n confirmedEquipments: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ConfirmedEquipment' } },\n },\n ConfirmedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup'] } },\n DEFAULT : { type: 'object', title: 'Confirmed Equipment', required: ['ISOEquipmentCode', 'units'], CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup'] },\n },\n consignee: {\n 'BKG_v2.0.0' : { 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/ConsigneeShipper' }, DocumentPartiesHouseBL: {$ref: '#/components/schemas/ConsigneeHBL'} },\n DEFAULT : { $ref: '#/components/schemas/Consignee' },\n },\n Consignee: {\n 'BKG_v2.0.0' : { 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 DEFAULT : { type: 'object', title: 'Consignee', required: ['partyName','identifyingCodes'], CHILDREN: ['partyName','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences'] },\n },\n ConsigneeShipper: {\n DEFAULT : { type: 'object', title: 'Consignee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails','reference','purchaseOrderReferences'] },\n },\n ConsigneeHBL: {\n DEFAULT : { type: 'object', title: 'Consignee (House B/L)', required: ['partyName', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n consignmentItems: {\n PARENTS : {HouseBillOfLading: { items: { $ref: '#/components/schemas/ConsignmentItemHBL' } }, CreateShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, UpdateShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, ShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, shippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, updatedShippingInstructions: { items: { $ref: '#/components/schemas/ConsignmentItemShipper' } }, TransportDocument: { items: { $ref: '#/components/schemas/ConsignmentItem' } }, transportDocument: { items: { $ref: '#/components/schemas/ConsignmentItem' } } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n// ConsignmentItem: {\n// DEFAULT : { type: 'object', title: 'Consignment Item', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes'], CHILDREN: ['carrierBookingReference','descriptionOfGoods','HSCodes','shippingMarks','references','customsReferences'] },\n// },\n ConsignmentItem: {\n DEFAULT : { type: 'object', title: 'Consignment Item', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes','cargoItems'], CHILDREN: ['carrierBookingReference','descriptionOfGoods','HSCodes','nationalCommodityCodes','shippingMarks','cargoItems', 'exportLicense', 'importLicense', 'references','customsReferences'] },\n },\n ConsignmentItemShipper: {\n DEFAULT : { type: 'object', title: 'Consignment Item (Shipper)', required: ['carrierBookingReference', 'descriptionOfGoods', 'HSCodes','cargoItems'], CHILDREN: ['carrierBookingReference','commoditySubReference', 'descriptionOfGoods','HSCodes','nationalCommodityCodes','shippingMarks','cargoItems', 'exportLicense', 'importLicense','references','customsReferences'], allOf: true },\n },\n ConsignmentItemHBL: {\n DEFAULT : { type: 'object', title: 'Consignment Item (House B/L)', required: ['descriptionOfGoods', 'cargoItems', 'nationalCommodityCode'], CHILDREN: ['descriptionOfGoods', 'nationalCommodityCode','cargoItems','customsReferences'] },\n },\n contact: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n ContainerUnits: {\n DEFAULT : { type: 'object', title: 'Container Units', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n ContainerPositioning: {\n DEFAULT : { type: 'object', title: 'Container Positioning', required: ['location'], CHILDREN: ['dateTime', 'location' ] },\n },\n ContainerPositioningEstimated: {\n DEFAULT : { type: 'object', title: 'Container Positioning Estimated', required: ['location'], CHILDREN: ['estimatedDateTime', 'location' ] },\n },\n containerPositionings : {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {}, ConfirmedEquipment: { items: { $ref: '#/components/schemas/ContainerPositioningEstimated' } }},\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/ContainerPositioning' } },\n },\n ContainerPositioningLocation: {\n DEFAULT : { type: 'object', title: 'Container Positioning Location', CHILDREN: ['locationName', 'address', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n ContainerRestows: {\n DEFAULT : { type: 'object', title: 'Container units to restow', required: ['_20_units', '_40_units', '_45_units'], CHILDREN: ['_20_units', '_40_units', '_45_units'] },\n },\n content: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', format: 'byte' },\n },\n contentType: {\n PARENTS : { SupportingDocument: {} },\n DEFAULT : { type: 'string', maxLength: 100, default: 'application/pdf' },\n },\n contractQuotationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n controlTrackingRegistry: {\n DEFAULT : { type: 'string', maxLength: 1024, format: 'uri' },\n },\n countryCode: {\n PARENTS : { PlaceOfAcceptance: {}, PlaceOfFinalDelivery: {}, PlaceOfBLIssue: {}, PlaceOfIssue: {}, address: {}, City: {}, Address: {}, PartyAddress: {}, AdvanceManifestFiling: {}, TaxLegalReference: {}, CustomsReference: {}, NationalCommodityCode: {} },\n DEFAULT : { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' },\n },\n CreateBooking: {\n DEFAULT : { type: 'object', title: 'Create Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n CreateBookingResponse: {\n DEFAULT : { type: 'object', title: 'Create Booking Response', required: ['carrierBookingRequestReference'], CHILDREN: ['carrierBookingRequestReference'] },\n },\n CreateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions', required: ['transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n CreateShippingInstructionsResponse: {\n DEFAULT : { type: 'object', title: 'Create Shipping Instructions Response', required: ['shippingInstructionsReference'], CHILDREN: ['shippingInstructionsReference'] },\n },\n currencyAmount: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n currencyCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', pattern: '^[A-Z]{3}$', minLength: 3, maxLength: 3 },\n },\n CustomsReference: {\n DEFAULT : { type: 'object', title: 'Customs Reference', required: ['type', 'countryCode', 'values'], CHILDREN: ['type','countryCode','values'] },\n },\n customsReferences: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: {}, CargoItemCarrier: {}, CargoItemShipper: {}, UtilizedTransportEquipmentCarrier: {}, UtilizedTransportEquipmentShipper: {}, TransportDocument: {}, transportDocument: {}, UtilizedTransportEquipment: {}, CargoItem: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, Commodity: {}, CommodityShipper: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/CustomsReference' } },\n },\n cutOffDateTime: {\n PARENTS : { ShipmentCutOffTime: {}, CutOffTime: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n cutOffDateTimeCode: {\n PARENTS : { ShipmentCutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','EFC'] }, CutOffTime: { pseudoEnum: ['DCO','VCO','FCO','LCO','PCO','ECP','EFC','RCO','DGC','OBC','TCO','STA','SPA','CUA','AFC'] } },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n CutOffTime: {\n DEFAULT : { type: 'object', title: 'Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n cutOffTimes: {\n PARENTS : { PointToPoint: {}, Schedule: {}, TransportCall: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/CutOffTime'} },\n },\n dangerousGoods: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/DangerousGoods' } },\n },\n DangerousGoods: {\n 'BKG_v2.0.0' : { 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 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 DEFAULT : { type: 'string', maxLength: 3 },\n },\n deliveryTypeAtDestination: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, TransportDocument: {}, transportDocument: {}, PointToPoint: {} },\n DEFAULT : { type: 'string', maxLength: 3, enum: ['CY', 'SD', 'CFS'] },\n },\n departure: {\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDeparture' },\n },\n depotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n description: {\n PARENTS : { OuterPackaging: {}, InnerPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n descriptionOfGoods: {\n PARENTS : { ConsignmentItem: {}, ConsignmentItemShipper: {}, ConsignmentItemHBL: { type: 'string', maxItems: null, maxLength: 512, items: null, pattern: '^\\\\S(?:.*\\\\S)?$'} },\n DEFAULT : { type: 'array', maxItems: 150, items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n destinationChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/DestinationChargesPaymentTerm' },\n },\n DestinationChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Destination Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n DetailedError: {\n DEFAULT : { type: 'object', title: 'Detailed Error', required: ['errorCodeText', 'errorCodeMessage'], CHILDREN: ['errorCode','property','value','jsonPath','errorCodeText','errorCodeMessage'] },\n },\n dimensionUnit: {\n DEFAULT : { type: 'string', enum: ['MTR', 'FOT'] },\n },\n dischargeLocation: {\n PARENTS : {Transport: {$ref:'#/components/schemas/DischargeLocation' } },\n },\n DischargeLocation: {\n DEFAULT : { type: 'object', title: 'Discharge Location', CHILDREN: ['locationName', 'address', 'facility', 'UNLocationCode'] },\n },\n dischargeUnits: {\n DEFAULT : { $ref: '#/components/schemas/DischargeUnits' }\n },\n DischargeUnits: {\n DEFAULT : { type: 'object', title: 'Discharge Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n displayedAddress: {\n PARENTS : { Shipper: {}, Consignee: {}, ConsigneeShipper: {}, Endorsee: {}, EndorseeShipper: {}, NotifyParty: {} },\n DEFAULT : { type: 'array', maxItems: 6, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfDelivery: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPlaceOfReceipt: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfDischarge: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedNameForPortOfLoad: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'array', maxItems: 5, items: { type: 'string', maxLength: 35 } },\n },\n displayedShippedOnBoardReceivedForShipment: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 250 },\n },\n document: {\n PARENTS : { IssuanceRequest: {} },\n DEFAULT : { $ref: '#/components/schemas/TransportDocument' },\n },\n documentChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64, $ref: '#/components/schemas/DocumentChecksum' },\n },\n DocumentChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n DocumentMetadata: {\n DEFAULT : { type: 'object', title: 'Document Metadata', required: ['name','size','mediaType','documentChecksum'], CHILDREN: ['name','size','mediaType','documentChecksum'] },\n },\n documentParties: {\n 'BKG_v2.0.0' : { 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 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.0' : { DEFAULT: { required: null, CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','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 DEFAULT : { type: 'object', title: 'Document Parties', required: ['shipper','issuingParty'], CHILDREN: ['shipper','consignee','endorsee','issuingParty','carriersAgentAtDestination','notifyParties','other'] },\n },\n DocumentPartiesReq: {\n DEFAULT : { type: 'object', title: 'Document Parties (Shipper)', required: ['bookingAgent'], CHILDREN: ['bookingAgent','shipper','consignee','serviceContractOwner','carrierBookingOffice','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','consignee','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 DEFAULT : { type: 'string', maxLength: 4, pattern: '^\\\\S+$', pseudoEnum: EBL_PLATFORM_SOLUTION_PROVIDERS },\n },\n eBLVisualisationByCarrier: {\n PARENTS : { IssuanceRequest: {}, EnvelopeManifest: {} },\n DEFAULT : { $ref: '#/components/schemas/SupportingDocument' },\n },\n eBLVisualisationByCarrierChecksum: {\n DEFAULT : { type: 'string', pattern: '^[0-9a-f]+$', maxLength: 64, minLength: 64 },\n },\n email: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^.+@\\\\S+$' },\n },\n EmergencyContactDetails: {\n DEFAULT : { type: 'object', title: 'Emergency Contact Details', required: ['contact', 'phone'], CHILDREN: ['contact','provider','phone','referenceNumber'] },\n },\n emergencyContactDetails: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/EmergencyContactDetails' },\n },\n emptyContainerPickup: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerPickup' },\n },\n EmptyContainerPickup: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Empty Container Pickup', deprecated: null, CHILDREN: ['dateTime','depotReleaseLocation'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Empty Container Pickup', deprecated: null, CHILDREN: ['dateTime','depotReleaseLocation'] } },\n DEFAULT : { type: 'object', title: 'Empty Container Pickup', deprecated: true, CHILDREN: ['dateTime','depotReleaseLocation'] },\n },\n originEmptyContainerPickup: {\n DEFAULT : { $ref: '#/components/schemas/OriginEmptyContainerPickup' },\n },\n OriginEmptyContainerPickup: {\n DEFAULT : { type: 'object', title: 'Origin Empty Container Pickup', CHILDREN: ['dateTime','depotReleaseLocation'] },\n },\n emptyContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n emptyContainerDepotReleaseLocation: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerDepotReleaseLocation' },\n },\n EmptyContainerDepotReleaseLocation: {\n DEFAULT : { type: 'object', title: 'Empty Container Depot Release Location', CHILDREN: ['locationName', 'address', 'facility','UNLocationCode','geoCoordinate' ] },\n },\n emptyContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/EmptyContainerUnits' }\n },\n EmptyContainerUnits: {\n DEFAULT : { type: 'object', title: 'Empty Container Units', oneOf:true },\n },\n emptyIndicatorCode: {\n DEFAULT : { type: 'string', enum: ['LADEN','EMPTY'] },\n },\n EMSNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 7 },\n },\n endOfHoldingTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n endorsee: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: { $ref: '#/components/schemas/EndorseeShipper' } },\n DEFAULT : { $ref: '#/components/schemas/Endorsee' },\n },\n Endorsee: {\n DEFAULT : { type: 'object', title: 'Endorsee', required: ['partyName','identifyingCodes'], CHILDREN: ['partyName','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n EndorseeShipper: {\n DEFAULT : { type: 'object', title: 'Endorsee (Shipper provided)', required: ['partyName'], CHILDREN: ['partyName','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n endorsementChain: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/EndorsementChainLink' } },\n },\n EndorsementChainLink: {\n DEFAULT : { type: 'object', title: 'Endorsement Chain Link', required: ['actionDateTime', 'actionCode', 'actor', 'recipient'] },\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 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 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 : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['ARRI', 'DEPA'] },\n },\n eventClassifierCode: {\n PARENTS : { Timestamp: {} },\n DEFAULT : { type: 'string', enum: ['PLN', 'EST', 'ACT'] },\n },\n expectedArrivalAtPlaceOfDeliveryStartDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedArrivalAtPlaceOfDeliveryEndDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expectedDepartureFromPlaceOfReceiptDate: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n expiryDate: {\n PARENTS : { ExportLicense: {}, ImportLicense: {},ExportLicenseShipper: {}, ImportLicenseShipper: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportDeclarationReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n ExportLicense: {\n DEFAULT : { type: 'object', title: 'Export License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ExportLicenseShipper: {\n DEFAULT : { type: 'object', title: 'Export License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n exportLicense: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ExportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ExportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ExportLicense' },\n },\n exportLicenseExpiryDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n exportLicenseIssueDate: {\n PARENTS : { CommodityShipper: {}, Commodity: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n Facility: {\n 'JIT_v2.0.0' : { DEFAULT: { CHILDREN: ['facilityCode','facilityCodeListProvider','subFacility'] } },\n DEFAULT : { type: 'object', title: 'Facility', required: ['facilityCode', 'facilityCodeListProvider'], CHILDREN: ['facilityCode','facilityCodeListProvider'] },\n },\n facility: {\n DEFAULT : { $ref: '#/components/schemas/Facility' },\n },\n facilityCode: {\n 'EBL_v3.0.0' : { DEFAULT: { nullable: 'false'} },\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', maxLength: 6, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n facilitySMDGCode: {\n PARENTS : { FacilitySMDGLocation: {}, TransportCallLocation: {}, PortScheduleLocation: {} },\n DEFAULT : { type: 'string', maxLength: 6 },\n },\n FacilitySMDGLocation: {\n DEFAULT : { type: 'object', title: 'Facility SMDG Location', required: ['locationType', 'UNLocationCode', 'facilitySMDGCode'], CHILDREN: [] },\n },\n facilityTypeCode: {\n 'CS_v1.0.0' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n 'CS_v1.0.1' : { DEFAULT: { pseudoEnum: ['BORD','CLOC','COFS','OFFD','DEPO','INTE','POTE','PBPL','BRTH','RAMP','WAYP'] } },\n 'JIT_v2.0.0' : { DEFAULT: { enum: ['PBPL', 'BRTH', 'ANCH'], pseudoEnum: [] }}, // No validation added for description\n DEFAULT : { type: 'string', maxLength: 4},\n },\n facilityCodeListProvider: {\n PARENTS : { Facility: {} },\n DEFAULT : { type: 'string', enum: ['BIC', 'SMDG'] },\n },\n Feedback: {\n DEFAULT : { type: 'object', title: 'Feedback', required: ['severity', 'code', 'message'], CHILDREN: ['severity', 'code', 'message', 'jsonPath', 'property'] },\n },\n feedbacks: {\n PARENTS : { ShippingInstructionsData: {}, ShippingInstructions: {}, 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 PARENTS : { Address: {}, address: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 50 },\n },\n forwardDraft: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n freeText: {\n PARENTS : { InvoicePayableAt: {} },\n DEFAULT : { type: 'string', maxLength: 35 }, // In TD invoicePayableAt\n },\n freightPaymentTermCode: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n fullContainerPickupDateTime: {\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n fumigationDateTime: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', format: 'date-time' },\n },\n GeoCoordinate: {\n DEFAULT : { type: 'object', title: 'Geo Coordinate', required: ['latitude', 'longitude'], CHILDREN: ['latitude', 'longitude'] },\n },\n geoCoordinate: {\n DEFAULT : { $ref: '#/components/schemas/GeoCoordinate' },\n },\n grossWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/GrossWeight' },\n },\n GrossWeight: {\n DEFAULT : { type: 'object', title: 'Gross Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n haulageChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n HouseBillOfLading: {\n DEFAULT : { type: 'object', title: 'House Bill of Lading', required: ['houseBillOfLadingReference','isToOrder','methodOfPayment','documentParties','isCargoDeliveredInICS2Zone','routingOfConsignmentCountries','consignmentItems','utilizedTransportEquipments'], CHILDREN: ['houseBillOfLadingReference','isToOrder','placeOfAcceptance','placeOfFinalDelivery','methodOfPayment','documentParties','isCargoDeliveredInICS2Zone','routingOfConsignmentCountries','consignmentItems','utilizedTransportEquipments'] },\n },\n houseBillOfLadingReference: {\n DEFAULT : { type: 'string', maxLength: 20, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n houseBillOfLadings: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/HouseBillOfLading'} },\n },\n HSCodes: {\n PARENTS : { CommodityShipper: {}, Commodity: {}, ConsignmentItem: { minItems: 1 }, ConsignmentItemShipper: {minItems: 1} },\n DEFAULT : { type: 'array', items: { type: 'string', minLength: 6, maxLength: 10, pattern: '^\\\\d{6,10}$' } },\n },\n httpMethod: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', enum: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTION', '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.0' : { PARENTS: { BookingAgent: { minItems: null }, Shipper: { minItems: null }, Consignee: { minItems: null }, ServiceContractOwner: { minItems: null }, CarrierBookingOffice: { 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 PARENTS : { BookingAgent: { minItems: null }, Shipper: { minItems: null }, ShipperHBL: { minItems: null }, Consignee: {}, 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: {}, TransactionParty: {}, SurrenderRequestedBy: { minItems: null }, NotifyParty: { minItems: null }, NotifyPartyHBL: { minItems: null }, Seller: { minItems: null }, SellerHBL: { minItems: null }, Buyer: { minItems: null }, BuyerHBL: { minItems: null }, ShippingInstructionsRequestor: { minItems: null } },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/IdentifyingCode'} },\n },\n imoClass: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 4, pseudoEnum: ['1.1A','1.6N','2.1','8'] },\n },\n imoPackagingCode: {\n PARENTS : { OuterPackaging: {}, OuterPackagingCarrier: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 5, pattern: '^[A-Z0-9]{1,5}$' },\n },\n ImportLicense : {\n DEFAULT : { type: 'object', title: 'Import License', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n ImportLicenseShipper : {\n DEFAULT : { type: 'object', title: 'Import License (Shipper)', CHILDREN: ['isRequired', 'reference', 'issueDate', 'expiryDate'] },\n },\n importLicense : {\n PARENTS : { Commodity: {}, CommodityShipper: {}, TransportDocument: {}, CargoItem: {}, CargoItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, ConsignmentItem: {}, ConsignmentItemShipper: { $ref: '#/components/schemas/ImportLicenseShipper' }, CreateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, UpdateShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' }, ShippingInstructions: { $ref: '#/components/schemas/ImportLicenseShipper' } },\n DEFAULT : { $ref: '#/components/schemas/ImportLicense' },\n },\n incoTerms: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n inhalationZone: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 1, pseudoEnum: ['A','B','C','D'] },\n },\n InnerPackaging: {\n DEFAULT : { type: 'object', title: 'Inner Packaging', required: ['quantity', 'material', 'description'], CHILDREN: ['quantity','material','description'] },\n },\n innerPackagings: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/InnerPackaging' } },\n },\n InvoicePayableAt: {\n 'BKG_v2.0.0' : { 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: {} },\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 'EBL_ISS_v3.0.0' : { DEFAULT: { required: ['partyName', 'sendToPlatform', 'identifyingCodes'] } },\n 'EBL_ISS_v3.0.1' : { DEFAULT: { required: ['partyName', 'sendToPlatform', 'identifyingCodes'] } },\n DEFAULT : { type: 'object', title: 'Issue To Party', required: ['partyName', 'identifyingCodes'], CHILDREN: ['partyName', 'sendToPlatform', 'identifyingCodes', 'taxLegalReferences'] },\n },\n issuingParty: {\n PARENTS : { DocumentParties: {} },\n DEFAULT : { $ref: '#/components/schemas/IssuingParty' },\n },\n IssuingParty: {\n DEFAULT : { type: 'object', title: 'Issuing Party', required: ['partyName', 'address'], CHILDREN: ['partyName','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n isToOrder: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {}, HouseBillOfLading: {} },\n DEFAULT : { type: 'boolean' },\n },\n isVentilationOpen: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'boolean' },\n },\n isWaste: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'boolean' },\n },\n jsonPath: {\n PARENTS : { Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 500 },\n },\n ladenContainerUnits: {\n DEFAULT : { $ref: '#/components/schemas/LadenContainerUnits' }\n },\n LadenContainerUnits: {\n DEFAULT : { type: 'object', title: 'Laden Container Units', oneOf:true },\n },\n lastEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$' },\n },\n latitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n Leg: {\n DEFAULT : { type: 'object', title: 'Leg', required: ['departure', 'arrival'], CHILDREN: ['sequenceNumber', 'transport', 'departure', 'arrival'] },\n },\n legs: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Leg'} },\n },\n lengthOverall: {\n DEFAULT : { type: 'number', format: 'float' },\n },\n Limits: {\n DEFAULT : { type: 'object', title: 'Limits', required: ['temperatureUnit'], CHILDREN: ['temperatureUnit','flashPoint','transportControlTemperature','transportEmergencyTemperature','SADT','SAPT'] },\n },\n limits: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/Limits' },\n },\n loadLocation: {\n PARENTS : { Transport: {$ref:'#/components/schemas/LoadLocation' } },\n },\n LoadLocation: {\n DEFAULT : { type: 'object', title: 'Load Location', CHILDREN: ['locationName', 'address', 'facility', 'UNLocationCode' ] },\n },\n loadUnits: {\n DEFAULT : { $ref: '#/components/schemas/LoadUnits' }\n },\n LoadUnits: {\n DEFAULT : { type: 'object', title: 'Load Units', CHILDREN: ['ladenContainerUnits','emptyContainerUnits','reeferPluggedContainerUnits','oogUnits'] },\n },\n location: {\n 'CS_v1.0.0' : { PARENTS: { PlaceOfReceipt: { $ref: '#/components/schemas/Location' }, TransportCall: { $ref: '#/components/schemas/TransportCallLocation' }, PortSchedule: { $ref: '#/components/schemas/PortScheduleLocation' }, PlaceOfDelivery: { $ref: '#/components/schemas/Location' }, PlaceOfArrival: { $ref: '#/components/schemas/Location' }, PlaceOfDeparture: { $ref: '#/components/schemas/Location' } } },\n 'CS_v1.0.1' : { PARENTS: { PlaceOfReceipt: { $ref: '#/components/schemas/Location' }, TransportCall: { $ref: '#/components/schemas/TransportCallLocation' }, PortSchedule: { $ref: '#/components/schemas/PortScheduleLocation' }, PlaceOfDelivery: { $ref: '#/components/schemas/Location' }, PlaceOfArrival: { $ref: '#/components/schemas/Location' }, PlaceOfDeparture: { $ref: '#/components/schemas/Location' } } },\n PARENTS : { ShipmentLocation: {}, ContainerPositioning: {$ref: '#/components/schemas/ContainerPositioningLocation'}, ContainerPositioningEstimated: {$ref: '#/components/schemas/ContainerPositioningLocation'} },\n DEFAULT : { $ref: '#/components/schemas/Location' },\n },\n Location: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','address','UNLocationCode','facility'] } },\n 'CS_v1.0.1' : { DEFAULT: { type: 'object', title: 'Location', CHILDREN: ['locationName','address','UNLocationCode','facility'] } },\n DEFAULT : { type: 'object', title: 'Location', CHILDREN: ['locationName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n locationName: {\n 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// 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'] },\n },\n longitude: {\n PARENTS : { GeoCoordinate: {} },\n DEFAULT : { type: 'string', maxLength: 11 },\n },\n manifestTypeCode: {\n PARENTS : { AdvanceManifestFiling: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n material: {\n PARENTS : { InnerPackaging: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n mediaType: {\n DEFAULT : { type: 'string', maxLength:100 },\n },\n message: {\n PARENTS : { Feedback: {} },\n DEFAULT : { type: 'string', maxLength: 5000 },\n },\n methodOfPayment: {\n DEFAULT : { type: 'string', maxLength: 1, pseudoEnum: ['A','B','C','D','H','Y','Z'] },\n },\n milesToDestinationPort: {\n DEFAULT : { type: 'number', format: 'float' }\n },\n missingAdditionalDocumentChecksums: {\n PARENTS : { EnvelopeTransferFinishedResponse: { minItems: null}, EnvelopeTransferStartedResponse: {} },\n DEFAULT : { type: 'array', minItems: 1, items: { $ref: '#/components/schemas/DocumentChecksum' } },\n },\n MMSINumber: {\n DEFAULT : { type: 'string', minLength: 9, maxLength: 9, pattern: '^\\\\d{9}$' },\n },\n modeOfTransport: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] } },\n PARENTS : { Transport: { pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] }, VesselTransport: { maxLength: null, enum: ['VESSEL'], pseudoEnum: [] }, BargeTransport: { maxLength: null, enum: ['BARGE'], pseudoEnum: []}, OtherTransport: { maxLength: null, enum: ['RAIL_TRUCK', 'BARGE_TRUCK', 'BARGE_RAIL', 'MULTIMODAL', 'RAIL', 'TRUCK'] } },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n moves: {\n DEFAULT : { $ref: '#/components/schemas/MovesList' }\n },\n Moves: {\n DEFAULT : { type: 'object', title: 'Moves', CHILDREN: ['carrierCode','carrierCodeListProvider','restows'], oneOf: true },\n },\n MovesList: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/Moves'} },\n },\n name: {\n PARENTS : { DocumentMetadata: {}, Vessel: { maxLength: 50 }, Barge: { maxLength: 50 }, SupportingDocument: {maxLength: 100, pattern: null }, vessel: { maxLength: 50 }, PartyContactDetail: { maxLength: 35 }, PartyContactDetailHBL: { maxLength: 35 }, PartyContactDetailWithPattern: { maxLength: 35 } },\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n NANumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n NationalCommodityCode: {\n DEFAULT : { type: 'object', title: 'National Commodity Code', required: ['type', 'values'], CHILDREN: ['type', 'countryCode', 'values'] },\n },\n nationalCommodityCode: {\n PARENTS : { ConsignmentItemHBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NationalCommodityCode' },\n },\n nationalCommodityCodes: {\n PARENTS : { Commodity: {}, CommodityShipper: {}, ConsignmentItem: {}, ConsignmentItemShipper: {}, CargoItem: {}, CargoItemShipper: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/NationalCommodityCode'} },\n },\n netExplosiveContent: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetExplosiveContent' },\n },\n NetExplosiveContent: {\n DEFAULT : { type: 'object', title: 'Net Explosive Content', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netWeight: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetWeight' },\n },\n NetWeight: {\n DEFAULT : { type: 'object', title: 'Net Weight', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n netVolume: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { $ref: '#/components/schemas/NetVolume' },\n },\n NetVolume: {\n DEFAULT : { type: 'object', title: 'Net Volume', required: ['value', 'unit'], CHILDREN: ['value','unit'] },\n },\n notifyParties: {\n PARENTS : { DocumentParties: {}, DocumentPartiesShippingInstructions: {} },\n DEFAULT : { type: 'array', maxItems: 3, items: {$ref: '#/components/schemas/NotifyParty'} },\n },\n notifyParty: {\n PARENTS : { DocumentPartiesHouseBL: {} },\n DEFAULT : { $ref: '#/components/schemas/NotifyPartyHBL' },\n },\n NotifyParty: {\n DEFAULT : { type: 'object', title: 'Notify Party', required: ['partyName'], CHILDREN: ['partyName','typeOfPerson','address','displayedAddress','identifyingCodes','taxLegalReferences','partyContactDetails', 'reference'] },\n },\n NotifyPartyHBL: {\n DEFAULT : { type: 'object', title: 'Notify Party (House B/L)', required: ['partyName','partyContactDetails', 'typeOfPerson'], CHILDREN: ['partyName','typeOfPerson','address','identifyingCodes','taxLegalReferences','partyContactDetails'] },\n },\n number: {\n PARENTS : { Seal: {} },\n DEFAULT : { type: 'string', maxLength: 15 },\n },\n numberOfCopiesWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfCopiesWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfOriginalsWithoutCharges: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {}, TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n numberOfPackages: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {}, OuterPackagingHBL: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1, maximum: 99999999 },\n },\n numberOfRiderPages: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n o2Setpoint: {\n PARENTS : { ActiveReeferSettings: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0', maximum: 100 },\n },\n omit: {\n DEFAULT : { type: 'boolean' },\n },\n OmitPortCall: {\n DEFAULT : { type: 'object', title: 'Omit Port Call', CHILDREN: ['reason','isFYI'] },\n },\n OmitTerminalCall: {\n DEFAULT : { type: 'object', title: 'Omit Terminal Call', CHILDREN: ['reason','isFYI'] },\n },\n omitted: {\n PARENTS : { PortCall: {}, TerminalCall: {} },\n DEFAULT : { type: 'boolean', readOnly: 'true', default: 'false' },\n },\n onCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n onwardInlandRouting: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/OnwardInlandRouting' },\n },\n OnwardInlandRouting: {\n DEFAULT : { type: 'object', title: 'Onward Inland Routing', CHILDREN: ['locationName','address','facility','UNLocationCode'] },\n },\n oogUnits: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: '0' },\n },\n servcieEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'] },\n },\n operatorCarrierCode: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n operatorCarrierCodeListProvider: {\n PARENTS : { Vessel: {}, Barge: {} },\n DEFAULT : { type: 'string', enum: ['SMDG', 'NMFTA'] },\n },\n originChargesPaymentTerm: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { $ref: '#/components/schemas/OriginChargesPaymentTerm' },\n },\n OriginChargesPaymentTerm: {\n DEFAULT : { type: 'object', title: 'Origin Charges Payment Term', CHILDREN: ['haulageChargesPaymentTermCode','portChargesPaymentTermCode','otherChargesPaymentTermCode'] },\n },\n OuterPackaging: {\n 'BKG_v2.0.0' : { 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 'BKG_v2.0.0-Beta-3' : { DEFAULT: { required: null } },\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.0' : { 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.0' : { 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.1' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC'] } } },\n 'BKG_v2.0.2' : { PARENTS: { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','N1','N2','NI','NAC'] } } },\n PARENTS : { OtherDocumentParty: { pseudoEnum: ['DDR','DDS','COW','COX','SCO'] }, OtherDocumentPartyShippingInstructions: { pseudoEnum: ['DDR','DDS','COW','COX','SCO','CS','MF','WH'] }, OtherDocumentPartyHBL: { pseudoEnum: ['DDR','DDS','CS','MF','WH']} },\n DEFAULT : { type: 'string', maxLength: 3 },\n },\n partyName: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperHBL: {}, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, CarrierBookingOffice: {}, Party: {}, PartyHBL: {}, CarriersAgentAtDestination: {}, IssuingParty: {}, IssueToParty: {}, TransactionParty: {}, SurrenderRequestedBy: {}, NotifyParty: {}, NotifyPartyHBL: {}, Seller: {}, SellerHBL: {}, Buyer: {}, BuyerHBL: {}, ReceiverValidationResponse: {}, ShippingInstructionsRequestor: {} },\n DEFAULT : { type: 'string', maxLength: 70, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n paymentTermCode: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n phone: {\n PARENTS : { PartyContactDetail: {}, PartyContactDetailHBL: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, PartyContactDetailWithPattern: { pattern: '^\\\\+(?:[0-9] ?){6,14}[0-9]$' }, EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 30, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n placeOfAcceptance: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfAcceptance' },\n },\n PlaceOfAcceptance: {\n DEFAULT : { type: 'object', title: 'Place of Acceptance', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n PlaceOfArrival: {\n DEFAULT : { type: 'object', title: 'Place of Arrival', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] },\n },\n placeOfBLIssue: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfBLIssue' },\n },\n PlaceOfBLIssue: {\n DEFAULT : { type: 'object', title: 'Place of B/L Issue', oneOf: {UNLocationCode: {}, countryCode: {} }, CHILDREN: ['locationName'] },\n },\n PlaceOfDeparture: {\n DEFAULT : { type: 'object', title: 'Place of Departure', required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] },\n },\n placeOfFinalDelivery: {\n PARENTS : { HouseBillOfLading: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfFinalDelivery' },\n },\n PlaceOfFinalDelivery: {\n DEFAULT : { type: 'object', title: 'Place of Final Delivery', CHILDREN: ['locationName','countryCode','UNLocationCode'] },\n },\n placeOfIssue: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, TransportDocument: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfIssue' },\n },\n PlaceOfIssue: {\n DEFAULT : { type: 'object', title: 'Place of Issue', oneOf: true, CHILDREN: ['locationName'] },\n },\n placeOfDelivery: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfDelivery' },\n },\n PlaceOfDelivery: {\n 'CS_v1.0.0' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Delivery', CHILDREN: ['locationName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n placeOfReceipt: {\n PARENTS : { Transports: {}, PointToPoint: {} },\n DEFAULT : { $ref: '#/components/schemas/PlaceOfReceipt' },\n },\n PlaceOfReceipt: {\n 'CS_v1.0.0' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n 'CS_v1.0.1' : { DEFAULT: { required: ['facilityTypeCode','location','dateTime'], CHILDREN: ['facilityTypeCode','location','dateTime'] } },\n DEFAULT : { type: 'object', title: 'Place of Receipt', CHILDREN: ['locationName','address','facility','UNLocationCode','geoCoordinate'] },\n },\n plannedArrivalDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n plannedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n plannedDepartureDate: {\n PARENTS : { Transport: {}, Transports: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n POBox: {\n DEFAULT : { type: 'string', maxLength: 20 },\n },\n PointToPoint: {\n 'CS_v1.0.0' : { DEFAULT: { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','transitTime','legs'] } },\n DEFAULT : { type: 'object', title: 'Point to Point', required: ['placeOfReceipt', 'placeOfDelivery', 'legs'], CHILDREN: ['placeOfReceipt','placeOfDelivery','receiptTypeAtOrigin','deliveryTypeAtDestination','cutOffTimes','solutionNumber','routingReference','transitTime','legs'] },\n },\n portCall: {\n DEFAULT : { $ref: '#/components/schemas/PortCall' },\n },\n PortCall: {\n DEFAULT : { type: 'object', title: 'Port Call', required: ['portCallID', 'UNLocationCode','vessel'], CHILDREN: ['portCallID','portVisitReference','UNLocationCode','vessel','omitted','isFYI'] },\n },\n PortCalls: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCall' } },\n },\n portCallID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallPhaseTypeCode: {\n DEFAULT : { type: 'string', enum: ['INBD', 'ALGS', 'SHIF', 'OUTB'], pseudoEnum: []}, // No validation added for description\n },\n PortCallServices: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/PortCallService' } },\n },\n PortCallService: {\n DEFAULT : { type: 'object', title: 'Port Call Service', required: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallServiceLocation'], CHILDREN: ['terminalCallID','portCallServiceID','portCallServiceTypeCode','portCallServiceEventTypeCode','portCallPhaseTypeCode','facilityTypeCode','portCallServiceLocation','moves','cancelled','declined','isFYI'] },\n },\n portCallServiceEventTypeCode: {\n DEFAULT : { type: 'string', enum: ['STRT', 'CMPL', 'ARRI', 'DEPA'], pseudoEnum: []}, // No validation added for description\n },\n portCallServiceID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n portCallServiceLocation: {\n PARENTS : { PortCallService: { $ref: '#/components/schemas/PortCallServiceLocation' }, Timestamp: { $ref: '#/components/schemas/PortCallServiceLocationTimestamp' } },\n },\n PortCallServiceLocation: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n PortCallServiceLocationTimestamp: {\n DEFAULT : { type: 'object', title: 'Port Call Service Location (Timestamp)', required: ['UNLocationCode'], CHILDREN: ['locationName','facility','UNLocationCode', 'geoCoordinate'] },\n },\n portCallServiceTypeCode: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: []}, // No validation added for description\n },\n portChargesPaymentTermCode: {\n PARENTS : { OriginChargesPaymentTerm: {}, DestinationChargesPaymentTerm: {} },\n DEFAULT : { type: 'string', enum: ['PRE', 'COL'] },\n },\n portOfDischarge: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfDischarge' },\n },\n PortOfDischarge: {\n DEFAULT : { type: 'object', title: 'Port of Discharge', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n portOfLoading: {\n PARENTS : { Transports: {} },\n DEFAULT : { $ref: '#/components/schemas/PortOfLoading' },\n },\n PortOfLoading: {\n DEFAULT : { type: 'object', title: 'Port of Loading', CHILDREN: ['locationName','city','UNLocationCode'] },\n },\n PortSchedule: {\n DEFAULT : { type: 'object', title: 'Port Schedule', required: ['location'], CHILDREN: ['location', 'vesselSchedules'] },\n },\n PortScheduleLocation: {\n DEFAULT : { type: 'object', title: 'Port Schedule Location', CHILDREN: ['locationName','UNLocationCode','facilitySMDGCode'] },\n },\n portVisitReference: {\n PARENTS : { TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {}, PortCall: {}, },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n postCode: {\n PARENTS : { Address: {}, address: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n preCarriageBy: {\n PARENTS : { Transports: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','MULTIMODAL'] },\n },\n previousEnvelopeTransferChainEntrySignedContentChecksum: {\n DEFAULT : { type: 'string', minLength: 64, maxLength: 64, pattern: '^[0-9a-f]+$', nullable: 'true' },\n },\n property: {\n PARENTS : { ErrorResponse: {}, Feedback: {}, DetailedError: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n provider: {\n PARENTS : { EmergencyContactDetails: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n properShippingName: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 250 },\n },\n providerCorrelationReference: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n publisherRole: {\n DEFAULT : { type: 'string', enum: ['CA', 'AG', 'VSL', 'ATH', 'PLT', 'TWG', 'MOR', 'TR', 'LSH', 'BUK', 'SLU', 'SVP'] },\n },\n purchaseOrderReferences: {\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n quantity: {\n PARENTS : { InnerPackaging: { type: 'integer', format: 'int32' }, Charge: { type: 'number', format: 'float', minimum: '0' } },\n },\n reason: {\n 'JIT_v2.0.0' : { DEFAULT: { maxLength: 500 } },\n PARENTS : { CancelBookingRequest: {}, Transaction: {maxLength: 4}, EnvelopeTransferFinishedResponse: {nullable: 'true', 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'] },\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/TransactionParty' },\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 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 } },\n },\n requestedCarrierClauses: {\n PARENTS : { CreateShippingInstructions: {}, UpdateShippingInstructions: {}, ShippingInstructions: {}, updatedShippingInstructions: {}, shippingInstructions: {} },\n DEFAULT : { type: 'array', items: { type: 'string', maxLength: 100 } },\n },\n requestedDateTime: {\n DEFAULT : { type: 'string', format: 'date-time'}\n },\n RequestedEquipment: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n DEFAULT : { type: 'object', title: 'Requested Equipment', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup','fullContainerPickupDateTime','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] },\n },\n RequestedEquipmentShipper: {\n 'BKG_v2.0.0' : { DEFAULT: { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n 'BKG_v2.0.1' : { DEFAULT: { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences', 'commodities'] } },\n DEFAULT : { type: 'object', title: 'Requested Equipment (Shipper)', required: ['ISOEquipmentCode', 'units','isShipperOwned'], oneOf: true, CHILDREN: ['ISOEquipmentCode','units','containerPositionings','emptyContainerPickup','originEmptyContainerPickup','fullContainerPickupDateTime','equipmentReferences','tareWeight','cargoGrossWeight','isShipperOwned','isNonOperatingReefer','activeReeferSettings','references','customsReferences','commodities'] },\n },\n requestedEquipments: {\n PARENTS : { CreateBooking: {items: {$ref: '#/components/schemas/RequestedEquipmentShipper'}}, UpdateBooking: {items: {$ref: '#/components/schemas/RequestedEquipmentShipper'}}, Booking: {items: {$ref: '#/components/schemas/RequestedEquipment'}}, booking: {items: {$ref: '#/components/schemas/RequestedEquipment'}}, amendedBooking: {items: {$ref: '#/components/schemas/RequestedEquipment'}} },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n requestedNumberOfTransportDocuments: {\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n requestedOnCarriageModeOfTransport: {\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] },\n },\n requestedPreCarriageModeOfTransport: {\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['VESSEL','RAIL','TRUCK','BARGE','RAIL_TRUCK', 'BARGE_RAIL', 'BARGE_TRUCK','MULTIMODAL'] },\n },\n requestUri: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'string' },\n },\n RequiredEquipment: {\n DEFAULT : { type: 'object', title: 'Equipment (Required Properties)', required: ['equipmentReference', 'ISOEquipmentCode', 'tareWeight'], CHILDREN: ['equipmentReference','ISOEquipmentCode','tareWeight'] },\n },\n responseCode: {\n DEFAULT : { type: 'string', enum: ['RECE','DUPE','BSIG','BENV','INCD','MDOC','DISE'] },\n },\n restows: {\n DEFAULT : { $ref: '#/components/schemas/Restows' },\n },\n Restows: {\n DEFAULT : { type: 'object', title: 'Restows', oneOf:true },\n },\n routingOfConsignmentCountries: {\n DEFAULT : { type: 'array', minItems: 1, items: { type: 'string', maxLength: 2, minLength: 2, pattern: '^[A-Z]{2}$' } },\n },\n routingReference: {\n DEFAULT : { type: 'string', maxLength: 5000, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: [] },\n },\n SADT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n SAPT: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n Schedule: {\n DEFAULT : { type: 'object', title: 'Schedule', required: ['servicePartners', 'isDummyVessel', 'timestamps'] },\n },\n Seal: {\n DEFAULT : { type: 'object', title: 'Seal', required: ['number'], CHILDREN: ['number','source'] },\n },\n seals: {\n PARENTS : { UtilizedTransportEquipmentHBL: {}, UtilizedTransportEquipmentShipper: {}, UtilizedTransportEquipment: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/Seal'} },\n },\n segregationGroups: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'array', items: {type: 'string', maxLength: 2} },\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.0' : { 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 DEFAULT : { type: 'object', title: 'Service Schedule', required: ['carrierServiceName', 'carrierServiceCode', 'vesselSchedules'], CHILDREN: ['carrierServiceName','carrierServiceCode','universalServiceReference','vesselSchedules'] },\n },\n severity: {\n PARENTS : { Feedback: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['INFO','WARN','ERROR'] },\n },\n shipmentCutOffTimes: {\n PARENTS : { Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/ShipmentCutOffTime'} },\n },\n ShipmentCutOffTime: {\n DEFAULT : { type: 'object', title: 'Shipment Cut-Off Time', required: ['cutOffDateTimeCode', 'cutOffDateTime'], CHILDREN: ['cutOffDateTimeCode','cutOffDateTime'] },\n },\n ShipmentLocation: {\n DEFAULT : { type: 'object', title: 'Shipment Location', required: ['location', 'locationTypeCode'], CHILDREN: ['location','locationTypeCode'] },\n },\n shipmentLocations: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {} },\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/ShipmentLocation'} },\n },\n shippedOnBoardDate: {\n PARENTS : { TransportDocument: {}, transportDocument: {} },\n DEFAULT : { type: 'string', format: 'date' },\n },\n shipper: {\n 'BKG_v2.0.0' : { 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.0' : { 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', 'feedbacks', 'shippingInstructions', 'updatedShippingInstructions'] }\n },\n ShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Shipping Instructions Full Notification', allOf: true },\n },\n ShippingInstructionsNotification: {\n 'ebl_ntf_v3.0.0-Beta-1': { DEFAULT: { required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'data'] } },\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 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 size: {\n PARENTS : { DocumentMetadata: {} },\n DEFAULT : { type: 'number', minimum: 1 }\n },\n solutionNumber: {\n PARENTS : { PointToPoint: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 }\n },\n source: {\n // Removing DCSA_CLOUDEVENT_GROUP in the default in order to handle 'source' inside a 'Seal'\n PARENTS : { ShippingInstructionsNotification: {maxLength: 4096}, TransportDocumentNotification: {maxLength: 4096}, BookingNotification: {maxLength: 4096}, ArrivalNoticeNotification: {maxLength: 4096}, Seal: {enum: ['CAR', 'SHI', 'VET', 'CUS'] } },\n DEFAULT : { type: 'string' },\n },\n SpecificUnits: {\n DEFAULT : { type: 'object', title: 'Specific Units (for load and discharge)', CHILDREN: ['loadUnits', 'dischargeUnits'] },\n },\n specialCertificateNumber: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', maxLength: 255 },\n },\n specversion: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', enum: ['1.0'], pseudoEnum: [] },\n },\n stateRegion: {\n PARENTS : { Address:{}, address: {}, PartyAddress: {}, City: {} },\n DEFAULT : { type: 'string', maxLength: 65 },\n },\n statusCode: {\n PARENTS : { ErrorResponse: {} },\n DEFAULT : { type: 'integer', format: 'int32' },\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 PARENTS : { Address: {}, address: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 70 },\n },\n streetNumber: {\n PARENTS : { Address: {}, address: {}, PartyAddress: {} },\n DEFAULT : { type: 'string', maxLength: 50 },\n },\n subFacility: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subscriptionReference: {\n PARENTS : DCSA_CLOUDEVENT_GROUP,\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 100},\n },\n subsidiaryRisk1: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n subsidiaryRisk2: {\n PARENTS : { DangerousGoods: {} },\n DEFAULT : { type: 'string', minLength: 1, maxLength: 3, pattern: '^[0-9](\\\\.[0-9])?$' },\n },\n identificationNumber: {\n DEFAULT : { type: 'string', pattern: '^\\\\S(?:.*\\\\S)?$', maxLength: 17 },\n },\n SupportingDocument: {\n DEFAULT : { type: 'object', title: 'Supporting Document', required: ['name', 'content'] },\n },\n supportingDocuments: {\n DEFAULT : { type: 'array', items: {$ref: '#/components/schemas/DocumentMetadata'} },\n },\n SurrenderRequestAnswer: {\n DEFAULT : { type: 'object', title: 'Surrender Request Answer', required: ['surrenderRequestReference', 'action'] },\n },\n surrenderRequestCode: {\n DEFAULT : { type: 'string', enum: ['SREQ', 'AREQ'] },\n },\n SurrenderRequestDetails: {\n DEFAULT : { type: 'object', title: 'Surrender Request Details', required: ['surrenderRequestReference','transportDocumentReference','surrenderRequestCode'] },\n },\n // SurrenderRequestedBy should be deleted\n SurrenderRequestedBy: {\n DEFAULT : { type: 'object', title: 'Surrender Requested By', required: ['partyName', 'eblPlatform'] },\n },\n surrenderRequestReference: {\n DEFAULT : { type: 'string', maxLength: 100, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n tareWeight: {\n PARENTS : { Equipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {}, RequiredEquipment: {} },\n DEFAULT : { $ref: '#/components/schemas/TareWeight' },\n },\n TareWeight: {\n DEFAULT : { type: 'object', title: 'Tare Weight', required: ['value','unit'], CHILDREN: ['value','unit'] },\n },\n tareWeightUnit: {\n PARENTS : { RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n TaxLegalReference: {\n DEFAULT : { type: 'object', title: 'Tax & Legal Reference', required: ['type', 'countryCode', 'value'], CHILDREN: ['type','countryCode','value'] },\n },\n taxLegalReferences: {\n PARENTS : { BookingAgent: {}, Shipper: {}, ShipperHBL: {}, Consignee: {}, ConsigneeShipper: {}, ConsigneeHBL: {}, Endorsee: {}, EndorseeShipper: {}, ServiceContractOwner: {}, Party: {}, PartyHBL: {}, IssuingParty: {}, IssueToParty: {}, TransactionParty: {}, 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 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 PARENTS : { Transaction: {} },\n DEFAULT : { type: 'integer', format: 'int64' },\n },\n Timestamp: {\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 timestampID: {\n DEFAULT : { type: 'string', format: 'uuid' },\n },\n timestamps: {\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 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 TransactionParty: {\n DEFAULT : { type: 'object', title: 'Transaction Party', required: ['partyName', 'eblPlatform', 'identifyingCodes'] },\n },\n Transaction: {\n DEFAULT : { type: 'object', title: 'Transaction', required: ['action','actor','timestamp','recipient'], CHILDREN: ['action','actor','recipient','timestamp','reason','comments'] },\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 '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 PARENTS : { TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', maxLength: 100 },\n },\n TransportCallLocation: {\n DEFAULT : { type: 'object', title: 'TransportCall Location', CHILDREN: ['locationName','address','UNLocationCode','facilitySMDGCode'] },\n },\n transportCalls: {\n PARENTS : { VesselSchedule: {} },\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/TransportCall' } },\n },\n transportCallSequenceNumber: {\n DEFAULT : { type: 'integer', format: 'int32' },\n },\n transportControlTemperature: {\n PARENTS : { Limits: {} },\n DEFAULT : { type: 'number', format: 'float' },\n },\n TransportDocument: {\n 'EBL_PINT_v3.0.0' : { DEFAULT: { $ref: '#/components/schemas/TransportDocument' } },\n 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', '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 'ebl_ntf_v3.0.0-Beta-1': { DEFAULT: { required: ['specversion', 'id', 'source', 'type', 'time', 'datacontenttype', 'data'] } },\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 : { 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 : { 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.0' : { PARENTS: {\n BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n 'BKG_v2.0.1' : { PARENTS: {\n BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n 'BKG_v2.0.2' : { PARENTS: {\n BookingNotification: {enum: ['org.dcsa.booking.v2'], pseudoEnum: [] },\n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {maxLength: 3, pseudoEnum: ['CR','AKG','AEF'] },\n Reference: {maxLength: 3, pseudoEnum: ['CR','ECR','AKG','AEF'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n } },\n PARENTS : { \n CustomsReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$'},\n Reference: {maxLength: 3, pseudoEnum: ['CR','AKG'] },\n ReferenceConsignmentItem: {maxLength: 3, pseudoEnum: ['CR','AKG','SPO','CPO'] },\n TaxLegalReference: {maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n ArrivalNoticeNotification: {enum: ['org.dcsa.arrival-notice-notification.v1'], pseudoEnum: [] },\n TransportDocumentNotification: {enum: ['org.dcsa.transport-document.v3'], pseudoEnum: [] },\n ShippingInstructionsNotification: {enum: ['org.dcsa.shipping-instructions.v3'], pseudoEnum: [] },\n vessel: {enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] },\n NationalCommodityCode: {maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum:['NCM','HTS','SCHEDULE_B','TARIC','CN','CUS'] },\n },\n DEFAULT : { type: 'string' },\n },\n typeCode: {\n PARENTS : { Vessel: { enum: ['GCGO', 'CONT', 'RORO', 'CARC', 'PASS', 'FERY', 'BULK', 'TANK', 'LGTK', 'ASSI', 'PILO'] } },\n DEFAULT : { type: 'string' },\n },\n typeOfPerson: {\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$', pseudoEnum: ['NATURAL_PERSON','LEGAL_PERSON','ASSOCIATION_OF_PERSONS'] },\n },\n unit: {\n PARENTS : { \n CargoGrossWeight: {enum: ['KGM', 'LBR']},\n CargoNetWeight: {enum: ['KGM', 'LBR']},\n TareWeight: {enum: ['KGM', 'LBR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossVolume: {enum: ['MTQ', 'FTQ']}, \n NetVolume: {enum: ['MTQ', 'FTQ', 'LTR']}, \n CargoNetVolume: {enum: ['MTQ', 'FTQ']}, \n CargoGrossWeight: {enum: ['KGM', 'LBR']}, \n CargoGrossWeightReq: {enum: ['KGM', 'LBR']}, \n GrossWeight: {enum: ['KGM', 'LBR']}, \n CargoNetWeight: {enum: ['KGM', 'LBR']}, \n NetWeight: {enum: ['KGM', 'LBR']}, \n NetExplosiveContent: {enum: ['KGM', 'LBR', 'GRM', 'ONZ']} },\n DEFAULT : { type: 'string' },\n },\n units: {\n PARENTS : { ConfirmedEquipment: {}, RequestedEquipment: {}, RequestedEquipmentShipper: {} },\n DEFAULT : { type: 'integer', format: 'int32', minimum: 1 },\n },\n unitPrice: {\n PARENTS : { Charge: {} },\n DEFAULT : { type: 'number', format: 'float', minimum: '0' },\n },\n universalExportVoyageReference: {\n PARENTS : { CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, VesselVoyage: {}, Schedule: {}, TerminalCall: {}, TransportCall: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^\\\\d{2}[0-9A-Z]{2}[NEWSR]$', pseudoEnum: [] },\n },\n universalImportVoyageReference: {\n PARENTS : { 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 PARENTS : { TerminalCall: {}, CreateBooking: {}, UpdateBooking: {}, Booking: {}, booking: {}, amendedBooking: {}, Transport: {}, Schedule: {}, ServiceSchedule: {}, VesselTransport: {}, BargeTransport: {} },\n DEFAULT : { type: 'string', minLength: 8, maxLength: 8, pattern: '^SR\\\\d{5}[A-Z]$' },\n },\n UNLocationCode: {\n DEFAULT : { type: 'string', minLength: 5, maxLength: 5, pattern: '^[A-Z]{2}[A-Z2-9]{3}$', pseudoEnum: [] },\n },\n UNNumber: {\n DEFAULT : { type: 'string', minLength: 4, maxLength: 4, pattern: '^\\\\d{4}$' },\n },\n UpdateBooking: {\n DEFAULT : { type: 'object', title: 'Update Booking', required: ['receiptTypeAtOrigin', 'deliveryTypeAtDestination', 'cargoMovementTypeAtOrigin', 'cargoMovementTypeAtDestination', 'isEquipmentSubstitutionAllowed', 'shipmentLocations', 'requestedEquipments', 'documentParties'] },\n },\n UpdateShippingInstructions: {\n DEFAULT : { type: 'object', title: 'Update Shipping Instructions', required: ['shippingInstructionsReference', 'transportDocumentTypeCode', 'isShippedOnBoardType', 'isElectronic', 'isToOrder', 'freightPaymentTermCode', 'partyContactDetails', 'documentParties', 'isCargoDeliveredInICS2Zone', 'consignmentItems', 'utilizedTransportEquipments'] },\n },\n updatedShippingInstructions: {\n PARENTS : { ShippingInstructionsData: {} },\n DEFAULT : { $ref: '#/components/schemas/UpdatedShippingInstructionsFullNotification' },\n },\n UpdatedShippingInstructionsFullNotification: {\n DEFAULT : { type: 'object', title: 'Updated Shipping Instructions', allOf: true },\n },\n updatedShippingInstructionsStatus: {\n PARENTS : { CancelShippingInstructionsUpdate: { pseudoEnum: [] }, ShippingInstructions: {}, shippingInstructions: {}, updatedShippingInstructions: {}, ShippingInstructionsRefStatus: {}, ShippingInstructionsRefCancelStatus: {}, ShippingInstructionsData: {} },\n DEFAULT : { type: 'string', maxLength: 50, pseudoEnum: ['UPDATE_RECEIVED','UPDATE_CONFIRMED','UPDATE_CANCELLED','UPDATE_DECLINED'] },\n },\n UTEquipment: {\n DEFAULT : { type: 'object', title: 'Shipper Owned Equipment (SoC)', required: ['isShipperOwned', 'equipment'], CHILDREN: ['isShipperOwned','equipment'] },\n },\n UTEquipmentReference: {\n DEFAULT : { type: 'object', title: 'Carrier Owned Equipment', required: ['isShipperOwned', 'equipmentReference'], CHILDREN:['isShipperOwned','equipmentReference'] },\n },\n UtilizedTransportEquipment: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment', required: ['equipment', 'isShipperOwned', 'seals'], CHILDREN: ['equipment','isShipperOwned','isNonOperatingReefer','activeReeferSettings','shippingMarks','seals','references','customsReferences'] },\n },\n utilizedTransportEquipments: {\n PARENTS : { HouseBillOfLading: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentHBL'}}, CreateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, UpdateShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, ShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, shippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, updatedShippingInstructions: {items: {$ref: '#/components/schemas/UtilizedTransportEquipmentShipper'}}, TransportDocument: {items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} }, transportDocument: { items: {$ref: '#/components/schemas/UtilizedTransportEquipment'} } },\n DEFAULT : { type: 'array', minItems: 1 },\n },\n UtilizedTransportEquipmentHBL: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (House B/L)', required: ['emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode'], oneOf: true, CHILDREN: ['seals','emptyIndicatorCode','isShipperOwned','equipmentReference','ISOEquipmentCode']},\n },\n UtilizedTransportEquipmentShipper: {\n DEFAULT : { type: 'object', title: 'Utilized Transport Equipment (Shipper)', required: ['seals'], oneOf: true, CHILDREN: ['shippingMarks','seals','emptyIndicatorCode','references','customsReferences']},\n },\n value: {\n PARENTS : {\n TareWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n NetVolume: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'},\n CargoGrossWeightReq: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoGrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n GrossWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n CargoNetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetWeight: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n NetExplosiveContent: {type: 'number', format: 'float', minimum: '0', exclusiveMinimum: 'true'}, \n DetailedError: {type: 'string', maxLength: 500},\n errors: {type: 'string', maxLength: 500}, \n TaxLegalReference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n Reference: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'},\n ReferenceShipper: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$'}, \n },\n },\n values: {\n PARENTS : { \n NationalCommodityCode: {}, \n CustomsReference: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n ReferenceConsignmentItem: { items: {type: 'string', maxLength: 35, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n DEFAULT : { type: 'array', minItems: 1, items: {type: 'string', maxLength: 10, pattern: '^\\\\S(?:.*\\\\S)?$' } },\n },\n vessel: {\n 'CS_v1.0.0' : { 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.0' : { 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 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 PARENTS : { vessel: {}, Vessel: {}, Transport: {}, VesselVoyage: {}, Barge: {} },\n DEFAULT : { type: 'string', minLength: 7, maxLength: 8, pattern: '^\\\\d{7,8}$' },\n },\n vesselName: {\n PARENTS : { Transport: {}, VesselVoyage: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 50, pattern: '^\\\\S(?:.*\\\\S)?$' },\n },\n vesselOperatorCarrierCode: {\n PARENTS : { vessel: {nullable: 'false'}, Schedule: {}, VesselSchedule: {} },\n DEFAULT : { type: 'string', maxLength: 10 },\n },\n 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 DEFAULT : { type: 'object', title: 'Vessel Schedule', required: ['isDummyVessel'], CHILDREN: ['vessel','isDummyVessel','transportCalls'] },\n },\n vesselSchedules: {\n PARENTS : { ServiceSchedule: { minItems: 1, items: {$ref: '#/components/schemas/VesselSchedule'} }, PortSchedule: { items: { $ref: '#/components/schemas/Schedule' } } },\n DEFAULT : { type: 'array' },\n },\n VesselStatus: {\n DEFAULT : {type: 'object', title: 'Vessel Status', required: ['portCallServiceID'], CHILDREN: ['portCallServiceID', 'draft','airDraft','aftDraft','forwardDraft','dimensionUnit','vesselPosition','milesToDestinationPort','isFYI']}\n },\n VesselStatuses: {\n DEFAULT : { type: 'array', items: { $ref: '#/components/schemas/VesselStatus' } },\n },\n VesselTransport: {\n DEFAULT : { type: 'object', title: 'Vessel Transport', required: ['modeOfTransport'], CHILDREN: ['modeOfTransport','portVisitReference','transportCallReference','servicePartners','universalServiceReference','universalExportVoyageReference','universalImportVoyageReference','vessel'] },\n },\n VesselVoyage: {\n DEFAULT : { type: 'object', title: 'Vessel/Voyage', required: ['vesselName', 'carrierExportVoyageNumber'], CHILDREN: ['vesselName','carrierExportVoyageNumber','universalExportVoyageReference'] },\n },\n vesselVoyages: {\n DEFAULT : { type: 'array', minItems: 1, items: {$ref: '#/components/schemas/VesselVoyage'} },\n },\n weightUnit: {\n PARENTS : { Equipment: {}, RequiredEquipment: {} },\n DEFAULT : { type: 'string', enum: ['KGM', 'LBR'] },\n },\n width: {\n PARENTS : { Vessel: {} },\n DEFAULT : { type: 'number', format: 'float' }, // JIT\n },\n woodDeclaration: {\n PARENTS : { OuterPackaging: {}, OuterPackagingShipper: {} },\n DEFAULT : { type: 'string', maxLength: 30, pseudoEnum: ['NOT_APPLICABLE','NOT_TREATED_AND_NOT_CERTIFIED','PROCESSED','TREATED_AND_CERTIFIED'] },\n },\n};\n\n\n// Makes sure two arrays are equal if:\n// * they are the same array\n// * they have the same size\n// * items on each position in the list are the same\nfunction arraysEqual(a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\n// input: the property (Node) in the API to validate\n// propertyName: the name of the property being tested (can be a simpleType or an object)\n// attribute: the attribute to test (type, minLength, required, etc...) if specified correctly\n// requirements: the list of attributes that from the Spectral rule that is valid\n// results: an accumulated list of errors for a particular property\nfunction checkRequirement(input, propertyName, attribute, requirements, results) {\n // Checking 'enum' attribute\n if (attribute === 'enum') {\n // Check that enum values match (= are specified the same way...)\n const enumValuesRequired = requirements[attribute];\n const enumValues = input[attribute];\n if (!arraysEqual(enumValues, enumValuesRequired)) {\n // The two enum lists do not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: [` + enumValuesRequired + `], value provided: [` + enumValues + `]`, }, );\n }\n // Checking 'required' attribute\n } else if (attribute === 'required') {\n // Check that required lists match (= are specified the same way...)\n const requiredValues = requirements[attribute];\n const inputValues = input[attribute];\n if (!arraysEqual(inputValues, requiredValues)) {\n // The two required lists do not match - file an error\n results.push( { message: propertyName + `.` + attribute + ` value must equal: [` + requiredValues + `], value provided: [` + inputValues + `]`, }, );\n }\n\n // Check that required attributes are part of the Schema (if schema is updated without the required list being updated)\n if (requiredValues && requiredValues.length > 0) {\n if (!input.properties) {\n results.push( { message: propertyName + ` has required child-properties defined...`, }, );\n } else {\n for (let i = 0; i < requiredValues.length; ++i) {\n if (!input.properties[requiredValues[i]]) {\n results.push( { message: propertyName + ` HAS required property ` + requiredValues[i] + ` but it is missing as a child in the schema`, }, );\n }\n }\n }\n }\n // Checking 'items' attribute\n } else if (attribute === 'items') {\n if (input['items'] && requirements['items']) {\n // Check if a $ref MUST be used\n if (Object.keys(input['items']).length === 1 && input['items']['$ref']) {\n // the input contains a $ref\n if (requirements['items']['$ref'] !== input['items']['$ref']) {\n results.push( { message: propertyName + `.` + attribute + ` is defined as a $ref pointing to '` + input['items']['$ref'] + `' - but must be defined ` + (requirements['items']['$ref'] ? `as a $ref pointing to: ` + requirements['items']['$ref'] : `inline`), }, );\n }\n } else if (Object.keys(requirements['items']).length === 1 && requirements['items']['$ref']) {\n // the spec requires a $ref\n if (input['items']['$ref'] !== requirements['items']['$ref']) {\n results.push( { message: propertyName + `.` + attribute + ` is not defined as a $ref and MUST point to: ` + requirements['items']['$ref'], }, );\n }\n } else {\n // Multiple properties defined for an inline defined items\n for (const attribute2 of ATTRIBUTES_TO_CHECK) {\n checkRequirement(input.items, propertyName + '.items', attribute2, requirements.items, results)\n }\n }\n } 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` : `PsuedoEnum`) + ` 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 PsuedoEnum`) + `: [` + formatList + `]\\nShould follow the pattern: - \\`...\\` (...)`, }, );\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 Psuedo-Enums\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 // 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 }\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 const standardProperty = property[standard];\n if (standardProperty) {\n mergeSpecs(specs, standardProperty['DEFAULT'], false);\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.: jit_v1.2.0-Beta-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.2.yaml b/bkg/v2/BKG_v2.0.2.yaml index b8592de8..a2821a28 100644 --- a/bkg/v2/BKG_v2.0.2.yaml +++ b/bkg/v2/BKG_v2.0.2.yaml @@ -3190,7 +3190,7 @@ components: partyContactDetails: type: array description: | - The contact details of the person(s) to contact in relation to the **Booking** (changes, notifications etc.) + The contact details of the Booking requestor(s) to contact in relation to the **Booking** (changes, notifications etc.) items: $ref: '#/components/schemas/PartyContactDetail' shipmentLocations: @@ -3576,7 +3576,7 @@ components: partyContactDetails: type: array description: | - The contact details of the person(s) to contact in relation to the **Booking** (changes, notifications etc.) + The contact details of the Booking requestor(s) to contact in relation to the **Booking** (changes, notifications etc.) items: $ref: '#/components/schemas/PartyContactDetail' shipmentLocations: @@ -4035,7 +4035,7 @@ components: partyContactDetails: type: array description: | - The contact details of the person(s) to contact in relation to the **Booking** (changes, notifications etc.) + The contact details of the Booking requestor(s) to contact in relation to the **Booking** (changes, notifications etc.) items: $ref: '#/components/schemas/PartyContactDetail' shipmentLocations: @@ -4796,6 +4796,10 @@ components: - `ETEU` (eTEU) - `TRAC` (Enigio trace:original) - `BRIT` (BRITC eBL) + - `COVA` (Covantis) + - `ETIT` (e-title) + - `KTNE` (KTNET) + - `CRED` (Credore) - `GSBN` (Global Shipping Business Network) - `WISE` (WiseTech) - `GLEIF` (Global Legal Entity Identifier Foundation) diff --git a/bkg/v2/README.md b/bkg/v2/README.md index 154610f6..4b7d66de 100644 --- a/bkg/v2/README.md +++ b/bkg/v2/README.md @@ -7,7 +7,7 @@ Publications related to the Booking API: - [Booking Process](https://dcsa.org/standards/booking-process/) contains documents and publications - [Booking Notification](./notification/) maintained here on GitHub (**DEPRECATED** - now included as part of Booking API) -[Release v2.0.2 (TBD)](https://app.swaggerhub.com/apis-docs/dcsaorg/DCSA_BKG/2.0.2) +[Release v2.0.2 (31 July 2025)](https://app.swaggerhub.com/apis-docs/dcsaorg/DCSA_BKG/2.0.2) --- This is a patch release for the DCSA Booking API. A bug in the `GET`, `PUT` and `PATCH` description has been fixed (chaning the semantics of the endPoints) and a lot of minor changes have been added to this patch, here is a list of changes @@ -26,7 +26,8 @@ This is a patch release for the DCSA Booking API. A bug in the `GET`, `PUT` and - `BARGE_TRUCK`(Barge and truck) - `BARGE_RAIL`(Barge and rail) - We have removed a constraint that was preventing shippers who don't receive notifications to transition from using the carrier booking request reference (CBRR) to using the carrier booking reference (CBR) when the booking is confirmed - +- `codeListProvider` updated with the following values: `COVA` (Covantis), `ETIT` (e-title), `KTNE` (KTNET) and `CRED` (Credore) +- clarifies which party `partyContactDetails` refers to Link to [commits included in this patch](https://github.com/dcsaorg/DCSA-OpenAPI/commits/master/bkg/v2/BKG_v2.0.2.yaml?since=2025-04-25&until=2025-07-04) [Release v2.0.1 (25 April 2025)](https://app.swaggerhub.com/apis-docs/dcsaorg/DCSA_BKG/2.0.1) diff --git a/ebl/v3/EBL_v3.0.1.yaml b/ebl/v3/EBL_v3.0.1.yaml index cf681924..c0bc27f7 100644 --- a/ebl/v3/EBL_v3.0.1.yaml +++ b/ebl/v3/EBL_v3.0.1.yaml @@ -2967,14 +2967,14 @@ components: description: | The status of the `Transport Document`. Possible values are: - - `DRAFT` (Transport Document is Drafted) - - `APPROVED` (Transport Document has been Approved by consumer) - - `ISSUED` (Transport Document has been Issued by provider) - - `PENDING_SURRENDER_FOR_AMENDMENT` (Transport Document is Pending for Surrender for an Amendment) - - `SURRENDER_FOR_AMENDMENT` (Transport Document Surrendered for an Amendment) + - `DRAFT` (the Transport Document is currently a Draft) + - `APPROVED` (the Transport Document has been Approved by consumer) + - `ISSUED` (the Transport Document has been Issued by provider) + - `PENDING_SURRENDER_FOR_AMENDMENT` (the Transport Document has a pending Surrender for Amendment) + - `SURRENDER_FOR_AMENDMENT` (the Transport Document is Surrendered for Amendment) - `VOID` (the Transport Document has been Voided) - - `PENDING_SURRENDER_FOR_DELIVERY` (Transport Document pending surrender for Delivery) - - `SURRENDER_FOR_DELIVERY` (Transport Document surrendered for Delivery) + - `PENDING_SURRENDER_FOR_DELIVERY` (the Transport Document has a pending Surrender for Delivery) + - `SURRENDER_FOR_DELIVERY` (the Transport Document is Surrendered for Delivery) example: DRAFT shippingInstructionsReference: type: string @@ -3183,6 +3183,23 @@ components: description: | A line of the address to be displayed on the transport document. example: 'Strawinskylaan 4117' + carrierCode: + type: string + pattern: ^\S+$ + maxLength: 4 + description: | + The `SCAC` code (provided by [NMFTA](https://nmfta.org/scac/)) or `SMDG` code (provided by [SMDG](https://smdg.org/documents/smdg-code-lists/smdg-liner-code-list/)) of the carrier the `Shipping Instructions` is intended for. `carrierCodeListProvider` defines which list the `carrierCode` is based upon. + example: MMCU + carrierCodeListProvider: + type: string + description: | + The code list provider for the `carrierCode`. Possible values are: + - `SMDG` (Ship Message Design Group) + - `NMFTA` (National Motor Freight Traffic Association) + enum: + - SMDG + - NMFTA + example: NMFTA placeOfIssue: $ref: '#/components/schemas/PlaceOfIssue' invoicePayableAt: @@ -3191,7 +3208,7 @@ components: type: array minItems: 1 description: | - The contact details of the person(s) to contact in relation to the **Transport Document** (changes, notifications etc.) + The contact details of the Shipping Instructions requestor(s) to contact in relation to the **Transport Document** (changes, notifications etc.) items: $ref: '#/components/schemas/PartyContactDetail' isCarriersAgentAtDestinationRequired: @@ -3482,6 +3499,23 @@ components: description: | A line of the address to be displayed on the transport document. example: 'Strawinskylaan 4117' + carrierCode: + type: string + pattern: ^\S+$ + maxLength: 4 + description: | + The `SCAC` code (provided by [NMFTA](https://nmfta.org/scac/)) or `SMDG` code (provided by [SMDG](https://smdg.org/documents/smdg-code-lists/smdg-liner-code-list/)) of the carrier the `Shipping Instructions` is intended for. `carrierCodeListProvider` defines which list the `carrierCode` is based upon. + example: MMCU + carrierCodeListProvider: + type: string + description: | + The code list provider for the `carrierCode`. Possible values are: + - `SMDG` (Ship Message Design Group) + - `NMFTA` (National Motor Freight Traffic Association) + enum: + - SMDG + - NMFTA + example: NMFTA placeOfIssue: $ref: '#/components/schemas/PlaceOfIssue' invoicePayableAt: @@ -3490,7 +3524,7 @@ components: type: array minItems: 1 description: | - The contact details of the person(s) to contact in relation to the **Transport Document** (changes, notifications etc.) + The contact details of the Shipping Instructions requestor(s) to contact in relation to the **Transport Document** (changes, notifications etc.) items: $ref: '#/components/schemas/PartyContactDetail' isCarriersAgentAtDestinationRequired: @@ -3801,6 +3835,23 @@ components: description: | A line of the address to be displayed on the transport document. example: 'Strawinskylaan 4117' + carrierCode: + type: string + pattern: ^\S+$ + maxLength: 4 + description: | + The `SCAC` code (provided by [NMFTA](https://nmfta.org/scac/)) or `SMDG` code (provided by [SMDG](https://smdg.org/documents/smdg-code-lists/smdg-liner-code-list/)) of the carrier the `Shipping Instructions` is intended for. `carrierCodeListProvider` defines which list the `carrierCode` is based upon. + example: MMCU + carrierCodeListProvider: + type: string + description: | + The code list provider for the `carrierCode`. Possible values are: + - `SMDG` (Ship Message Design Group) + - `NMFTA` (National Motor Freight Traffic Association) + enum: + - SMDG + - NMFTA + example: NMFTA placeOfIssue: $ref: '#/components/schemas/PlaceOfIssue' invoicePayableAt: @@ -3809,7 +3860,7 @@ components: type: array minItems: 1 description: | - The contact details of the person(s) to contact in relation to the **Transport Document** (changes, notifications etc.) + The contact details of the Shipping Instructions requestor(s) to contact in relation to the **Transport Document** (changes, notifications etc.) items: $ref: '#/components/schemas/PartyContactDetail' isCarriersAgentAtDestinationRequired: @@ -4463,7 +4514,7 @@ components: **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 + - 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: @@ -4593,7 +4644,7 @@ components: **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 + - 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: @@ -4678,7 +4729,7 @@ components: **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 + - 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: @@ -4798,7 +4849,7 @@ components: **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 + - 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: @@ -4855,7 +4906,7 @@ components: **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 + - 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: @@ -4943,6 +4994,10 @@ components: - `ETEU` (eTEU) - `TRAC` (Enigio trace:original) - `BRIT` (BRITC eBL) + - `COVA` (Covantis) + - `ETIT` (e-title) + - `KTNE` (KTNET) + - `CRED` (Credore) **Condition:** Only applicable when `isElectronic=true` and `transportDocumentTypeCode=BOL`. The property **MUST** be absent for paper B/Ls (`isElectronic=false`) example: BOLE @@ -4996,7 +5051,7 @@ components: **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 + - 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: @@ -5584,6 +5639,10 @@ components: - `ETEU` (eTEU) - `TRAC` (Enigio trace:original) - `BRIT` (BRITC eBL) + - `COVA` (Covantis) + - `ETIT` (e-title) + - `KTNE` (KTNET) + - `CRED` (Credore) - `GSBN` (Global Shipping Business Network) - `WISE` (WiseTech) - `GLEIF` (Global Legal Entity Identifier Foundation) @@ -7636,13 +7695,13 @@ components: maxLength: 50 description: | The status of the `Transport Document`. Possible values are: - - `DRAFT` (Transport Document is Drafted) - - `APPROVED` (Transport Document has been Approved by consumer) - - `ISSUED` (Transport Document has been Issued by provider) - - `PENDING_SURRENDER_FOR_AMENDMENT` (Transport Document is Pending for Surrender for an Amendment) - - `SURRENDERED_FOR_AMENDMENT` (Transport Document Surrendered for an Amendment) - - `PENDING_SURRENDER_FOR_DELIVERY` (Transport Document pending surrender for Delivery) - - `SURRENDERED_FOR_DELIVERY` (Transport Document surrendered for Delivery) + - `DRAFT` (the Transport Document is currently a Draft) + - `APPROVED` (the Transport Document has been Approved by consumer) + - `ISSUED` (the Transport Document has been Issued by provider) + - `PENDING_SURRENDER_FOR_AMENDMENT` (the Transport Document has a pending Surrender for Amendment) + - `SURRENDERED_FOR_AMENDMENT` (the Transport Document is Surrendered for Amendment) + - `PENDING_SURRENDER_FOR_DELIVERY` (the Transport Document has a pending Surrender for Delivery) + - `SURRENDERED_FOR_DELIVERY` (the Transport Document is Surrendered for Delivery) - `VOIDED` (the Transport Document has been Voided) example: DRAFT transportDocumentTypeCode: diff --git a/ebl/v3/README.md b/ebl/v3/README.md index 4ec2da6b..fd5dddc0 100644 --- a/ebl/v3/README.md +++ b/ebl/v3/README.md @@ -11,19 +11,25 @@ Publications related to the Bill of Lading API: - [Bill of Lading Surrender](./surrender/) maintained here on GitHub - [Bill of Lading Surrender Response](./surrender_response/) maintained here on GitHub (**DEPRECATED** - now included as part of EBL Surrender API) -[Release v3.0.1 (TBD May 2025)](https://app.swaggerhub.com/apis-docs/dcsaorg/DCSA_EBL/3.0.1) +[Release v3.0.1 (31 July 2025)](https://app.swaggerhub.com/apis-docs/dcsaorg/DCSA_EBL/3.0.1) --- This is a patch version for the DCSA Bill of Lading API. The primary reason for this patch is the `ShippingInstructionRequestor` party and adding a `transportDocumentReference` by Shipper, but other improvements have been added as well: ## Schema changes - added `shippingInstructionsRequestor` as an optional party - added `transportDocumentReference` as an optional property when creating and updating a `Shipping Instructions` -- remove Servers list that was wrongly added (no Virtual Servers are connected to DCSA APIs) -- remove `nullable=false` as false is the default +- removed `nullable=false` as false is the default +- updated `partyFunctionCode` for the `TransportDocument` as it was wrongly aligned with `ShippingInstructions` (`CS` (Consolidator), `MF` (Manufacturer) and `WH` (Warehouse Keeper) removed) +- added `carrierCode` and `carrierCodeListProvider` to identify which carrier a ShippingInstructions should be sent to + +## Minor changes +- removed Servers list that was wrongly added (no Virtual Servers are connected to DCSA APIs) +- added an extra **Note** on the `dispalyedAdress` mentioning that some carriers might allow for more than 2 lines for physical Bill of Ladings - updated spelling for Jerr**i**cans -> Jerr**y**cans - updated some typos -- remove the reference to `ISO 8601` (all dateTime fields must comply with [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6)) -- update partyFunction codes for the `TransportDocument` as it was wrongly aligned with `ShippingInstructions` (`CS` (Consolidator), `MF` (Manufacturer) and `WH` (Warehouse Keeper) removed) +- removed the reference to `ISO 8601` (all dateTime fields must comply with [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6)) - fixed some formatting in the `transportDocumentStatus` description and some places referring to `Transport Document` +- `codeListProvider` and `sendToPlatform` updated with the following values: `COVA` (Covantis), `ETIT` (e-title), `KTNE` (KTNET) and `CRED` (Credore) +- clarifies which party `partyContactDetails` refers to [Release v3.0.0 (17 December 2024)](https://app.swaggerhub.com/apis-docs/dcsaorg/DCSA_EBL/3.0.0) --- diff --git a/ebl/v3/issuance/EBL_ISS_v3.0.1.yaml b/ebl/v3/issuance/EBL_ISS_v3.0.1.yaml index 662fa70f..7b60c198 100644 --- a/ebl/v3/issuance/EBL_ISS_v3.0.1.yaml +++ b/ebl/v3/issuance/EBL_ISS_v3.0.1.yaml @@ -1,9 +1,6 @@ openapi: 3.0.3 -servers: - - description: SwaggerHub API Auto Mocking - url: 'https://virtserver.swaggerhub.com/dcsaorg/DCSA_EBL_ISS/3.0.0' info: - version: 3.0.0 + version: 3.0.1 title: DCSA eBL Issuance API description: |