{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/portbase/main/json-schema/portbase-com-portbase-bezoekschip-common-api-external-visit-api-visit-schema.json",
  "title": "Visit",
  "description": "State of the visit",
  "x-generated": "2026-10-18",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/portbase-vessel-visit-openapi.yml#/components/schemas/com.portbase.bezoekschip.common.api.external.visit.ApiVisit",
  "required": [
    "cargoDeclarants",
    "crn",
    "declarant",
    "declarationStatuses",
    "owner",
    "paxDeclarationSummaries",
    "portOfCall",
    "vessel",
    "visitDeclaration",
    "wasteCollections"
  ],
  "type": [
    "object",
    "null"
  ],
  "properties": {
    "crn": {
      "type": "string",
      "description": "The call reference number of the visit"
    },
    "portOfCall": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPortOfCall"
    },
    "vessel": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiVessel"
    },
    "owner": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.common.ApiBezoekschipOrganisation"
    },
    "declarant": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.common.ApiBezoekschipOrganisation"
    },
    "cargoDeclarants": {
      "minItems": 1,
      "type": "array",
      "description": "The organisations that are responsible for reporting the cargo on board of the vessel",
      "items": {
        "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.common.ApiBezoekschipOrganisation"
      }
    },
    "visitDeclaration": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiVisitDeclaration"
    },
    "securityDeclaration": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiSecurityDeclaration"
    },
    "dangerousGoodsDeclaration": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiDangerousGoods"
    },
    "wasteDeclaration": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteDeclaration"
    },
    "wasteCollections": {
      "type": "array",
      "description": "The waste collections per waste collector.",
      "items": {
        "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteCollection"
      }
    },
    "shipStoresDeclaration": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiShipStoresDeclaration"
    },
    "paxDeclarationSummaries": {
      "minItems": 1,
      "type": "array",
      "description": "The summary of the declaration of the crew and passengers information of the port visit",
      "items": {
        "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPaxDeclarationSummary"
      }
    },
    "healthDeclaration": {
      "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiHealthDeclaration"
    },
    "declarationStatuses": {
      "type": "object",
      "additionalProperties": {
        "type": [
          "string",
          "null"
        ],
        "enum": [
          "DECLARED",
          "ACCEPTED",
          "REJECTED"
        ]
      },
      "description": "The current status of each declaration made for this visit, keyed by declaration type.\n\nEach entry maps a declaration type (e.g. VISIT, SECURITY, WASTE, DANGEROUS_GOODS, CREW_AND_PASSENGERS, HEALTH, SHIP_STORES) to its latest status:\n- DECLARED: the declaration has been submitted and is awaiting a response from the receiving authority.\n- ACCEPTED: the declaration has been accepted by the receiving authority.\n- REJECTED: the declaration has been rejected by the receiving authority.\n\nA declaration type is only present in the map once it has been declared at least once; if a type is absent, no declaration of that type has been made for this visit. When a declaration is re-submitted, the map reflects the status of the most recent submission.\n\nDANGEROUS_GOODS is only included when dangerous goods are enabled for the visit, and its status is aggregated from all dangerous goods declarations: if any single dangerous goods declaration is rejected, the overall DANGEROUS_GOODS status is reported as REJECTED."
    },
    "etaPortAis": {
      "type": [
        "string",
        "null"
      ],
      "description": "The estimated time of arrival at the given pilot station for the vessel call based on AIS information",
      "format": "date-time"
    },
    "ignoreEtaPortAis": {
      "type": "boolean",
      "description": "Indication whether the declarant chose to ignore the etaPortAis",
      "deprecated": true
    },
    "cancelled": {
      "type": "boolean",
      "description": "Indication whether the port visit is cancelled"
    },
    "ataAcknowledged": {
      "type": "boolean",
      "description": "Indication whether customs has acknowledged the ATA of the visit"
    },
    "orderIncomingMovement": {
      "type": "boolean",
      "description": "Indication whether ordering the incoming movement is enabled",
      "deprecated": true
    },
    "importDeclarations": {
      "type": "array",
      "description": "List of import declarations by the visit's cargo declarants",
      "items": {
        "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiVisit_ApiImportDeclaration"
      }
    },
    "transhipments": {
      "type": "array",
      "description": "Map of transhipments by consignment number",
      "items": {
        "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.transhipment.ApiTranshipment"
      }
    }
  },
  "$defs": {
    "com.portbase.bezoekschip.common.api.bunkering.BunkerVessel": {
      "title": "BunkerVessel",
      "required": [
        "name"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "imo": {
          "type": [
            "string",
            "null"
          ]
        },
        "eni": {
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "minLength": 1,
          "type": "string"
        },
        "tonnage": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        }
      },
      "description": "The bunker vessel"
    },
    "com.portbase.bezoekschip.common.api.cargo.common.BulkDischargeResult": {
      "title": "BulkDischargeResult",
      "required": [
        "consignmentNumber",
        "grossWeight",
        "itemNumber"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "consignmentNumber": {
          "minLength": 1,
          "type": "string"
        },
        "itemNumber": {
          "type": "integer",
          "format": "int32"
        },
        "grossWeight": {
          "minimum": 0,
          "type": "number"
        }
      },
      "description": "Discharged bulk goods reported by terminals"
    },
    "com.portbase.bezoekschip.common.api.cargo.common.CargoCurrency": {
      "title": "CargoCurrency",
      "required": [
        "description",
        "unCode"
      ],
      "type": "object",
      "properties": {
        "unCode": {
          "minLength": 1,
          "type": "string"
        },
        "description": {
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.Consignment": {
      "title": "Consignment",
      "required": [
        "actualDeparture",
        "consignmentNumber",
        "consignor",
        "goodsItems",
        "portOfDischarge",
        "portOfLoading"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "consignmentNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": "string"
        },
        "portOfLoading": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Port"
        },
        "portOfDischarge": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Port"
        },
        "actualDeparture": {
          "type": "string",
          "format": "date-time"
        },
        "terminal": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Terminal"
        },
        "movementReferenceNumbers": {
          "uniqueItems": true,
          "type": "array",
          "items": {
            "maxLength": 21,
            "minLength": 0,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "partShipment": {
          "type": "boolean"
        },
        "movementType": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "DOOR_TO_DOOR",
            "DOOR_TO_PIER",
            "PIER_TO_DOOR",
            "PIER_TO_PIER"
          ]
        },
        "customsStatus": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "EU_COMMUNITY_GOODS",
            "EU_COMMUNITY_GOODS_IN_TRANSHIPMENT",
            "EU_EMPTY_RETURN_PACKAGING",
            "EU_PROCEDURE_T",
            "EU_PROCEDURE_T1",
            "EU_PROCEDURE_T2",
            "EU_PROCEDURE_T2F",
            "GOODS_FROM_EVA_COUNTRIES"
          ]
        },
        "customsProcess": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "SEA_IN_SEA_OUT",
            "MILITARY",
            "EMPTY_RETURN_PACKAGING"
          ]
        },
        "warehouseLicense": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.WarehouseLicense"
        },
        "bulkAuthorisations": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.authentication.BezoekschipOrganisation"
          }
        },
        "exchangeRate": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.ExchangeRate"
        },
        "consignor": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.Party"
        },
        "consignee": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.Party"
        },
        "partiesToNotify": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.Party"
          }
        },
        "placeOfOrigin": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Location"
        },
        "placeOfDestination": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Location"
        },
        "placeOfDelivery": {
          "type": [
            "string",
            "null"
          ]
        },
        "onCarriageDetails": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.OnCarriageDetails"
        },
        "agentVoyageNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "goodsItems": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.GoodsItem"
          }
        },
        "bulk": {
          "type": "boolean"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.ConsignmentDifference": {
      "title": "ConsignmentDifference",
      "required": [
        "consignmentNumber"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "consignmentNumber": {
          "minLength": 1,
          "type": "string"
        },
        "portOfLoadingUnCode": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "timestamp": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "readOnly": true
        },
        "itemDifferences": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.GoodsItemDifference"
          }
        }
      },
      "description": "Consignment differences according to customs"
    },
    "com.portbase.bezoekschip.common.api.cargo.common.DangerInformation": {
      "title": "DangerInformation",
      "required": [
        "unCode"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "The technical name of the dangerous good"
        },
        "unCode": {
          "maxLength": 4,
          "minLength": 4,
          "type": "string",
          "description": "The UN code of the dangerous good"
        },
        "hazardClass": {
          "type": [
            "string",
            "null"
          ],
          "description": "The IMO hazard class of the dangerous good"
        },
        "packingGroup": {
          "type": [
            "string",
            "null"
          ],
          "description": "Indication of the level of danger",
          "enum": [
            "MINOR_DANGER",
            "MEDIUM_DANGER",
            "GREAT_DANGER"
          ]
        },
        "flashPoint": {
          "type": [
            "number",
            "null"
          ],
          "description": "The temperature in degrees Celsius at which a good will give off enough flammable vapour to be ignited. According IMDG Code DG Class 3 or subsidiary risk of Class 3"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.DischargeResult": {
      "title": "DischargeResult",
      "required": [
        "number",
        "sizeType",
        "type"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "number": {
          "maxLength": 17,
          "minLength": 0,
          "type": "string"
        },
        "portOfLoading": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Port"
        },
        "terminal": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Terminal"
        },
        "actualTimeOfHandling": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "stowageLocation": {
          "maxLength": 10,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "grossWeight": {
          "type": [
            "number",
            "null"
          ],
          "description": "The weight of the container with its content."
        },
        "transportStatus": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "CONTINENTAL",
            "EXPORT",
            "IMPORT",
            "SHIFTER",
            "TRANSHIPMENT",
            "SHORTLANDED",
            "OVERLANDED"
          ]
        },
        "type": {
          "type": "string",
          "enum": [
            "CONTAINER",
            "TRAILER",
            "SWAP_BODY",
            "CHASSIS"
          ]
        },
        "sizeType": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.SizeType"
        },
        "containerOperator": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Carrier"
        },
        "cargoAgentShortName": {
          "type": [
            "string",
            "null"
          ]
        },
        "tareWeight": {
          "type": [
            "number",
            "null"
          ],
          "description": "The weight of the container without its content."
        },
        "bookingReference": {
          "maxLength": 35,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "shipperSealNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "carrierSealNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "customsSealNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "shippersOwned": {
          "type": "boolean",
          "description": "Indication whether the container number is a ISO 6346 compliant container number (apply true when it does not comply)."
        },
        "empty": {
          "type": "boolean",
          "description": "Indication whether the container is full or empty."
        },
        "temperature": {
          "type": [
            "number",
            "null"
          ]
        },
        "overlength": {
          "type": [
            "number",
            "null"
          ]
        },
        "overheight": {
          "type": [
            "number",
            "null"
          ]
        },
        "overwidth": {
          "type": [
            "number",
            "null"
          ]
        },
        "oversizeRemarks": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "description": "Discharged containers reported by terminals"
    },
    "com.portbase.bezoekschip.common.api.cargo.common.ExchangeRate": {
      "title": "ExchangeRate",
      "required": [
        "currency",
        "rate"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "rate": {
          "minimum": 0,
          "type": "number"
        },
        "currency": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.CargoCurrency"
        }
      },
      "description": "Exchange rate of 1 euro."
    },
    "com.portbase.bezoekschip.common.api.cargo.common.GoodPlacement": {
      "title": "GoodPlacement",
      "required": [
        "equipmentNumber",
        "grossWeight"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "equipmentNumber": {
          "minLength": 1,
          "type": "string"
        },
        "numberOfPackages": {
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "grossWeight": {
          "type": "number",
          "description": "The gross weight of the cargo in kilograms, including package weight, excluding container weight."
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.GoodsClassification": {
      "title": "GoodsClassification",
      "required": [
        "code",
        "description"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string"
        },
        "description": {
          "minLength": 1,
          "type": "string"
        }
      },
      "description": "The classification of the goods item"
    },
    "com.portbase.bezoekschip.common.api.cargo.common.GoodsDocument": {
      "title": "GoodsDocument",
      "required": [
        "id",
        "type"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "N703",
            "N705",
            "N740",
            "Y031",
            "_820",
            "_821",
            "_822",
            "_825"
          ]
        },
        "id": {
          "maxLength": 35,
          "minLength": 0,
          "type": "string"
        },
        "description": {
          "maxLength": 35,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.GoodsItem": {
      "title": "GoodsItem",
      "required": [
        "description",
        "grossWeight",
        "itemNumber",
        "numberOfOuterPackages",
        "outerPackageType"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "itemNumber": {
          "type": "integer",
          "format": "int32"
        },
        "description": {
          "minLength": 1,
          "type": "string"
        },
        "grossWeight": {
          "minimum": 0,
          "type": "number",
          "description": "The gross weight of the cargo in kilograms, including package weight, excluding container weight."
        },
        "numberOfOuterPackages": {
          "minimum": 0,
          "type": "integer",
          "format": "int32"
        },
        "outerPackageType": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.dangerousgoods.common.CargoPackageType"
        },
        "netWeight": {
          "type": [
            "number",
            "null"
          ],
          "description": "The total weight of the goods in kilograms, excluding package weight, excluding container weight."
        },
        "numberOfInnerPackages": {
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "innerPackageType": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.dangerousgoods.common.CargoPackageType"
        },
        "classification": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.GoodsClassification"
        },
        "dangerInformation": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.DangerInformation"
        },
        "marksAndNumbers": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "minimumTemperature": {
          "type": [
            "number",
            "null"
          ],
          "description": "The minimum temperature (degrees C) on which the cooling system must be set."
        },
        "maximumTemperature": {
          "type": [
            "number",
            "null"
          ],
          "description": "The maximum temperature (degrees C) on which the cooling system must be set."
        },
        "placements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.GoodPlacement"
          }
        },
        "producedDocuments": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.GoodsDocument"
          }
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.GoodsItemDifference": {
      "title": "GoodsItemDifference",
      "required": [
        "itemNumber"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "itemNumber": {
          "type": "integer",
          "format": "int32"
        },
        "remainingWeight": {
          "minimum": 0,
          "type": [
            "number",
            "null"
          ]
        },
        "remainingPackages": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.ImportContainer": {
      "title": "ImportContainer",
      "required": [
        "actualDeparture",
        "containerOperator",
        "number",
        "portOfDischarge",
        "portOfLoading",
        "sizeType",
        "type"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "number": {
          "maxLength": 17,
          "minLength": 0,
          "type": "string"
        },
        "portOfLoading": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Port"
        },
        "portOfDischarge": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Port"
        },
        "actualDeparture": {
          "type": "string",
          "format": "date-time"
        },
        "terminal": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Terminal"
        },
        "type": {
          "type": "string",
          "enum": [
            "CONTAINER",
            "TRAILER",
            "SWAP_BODY",
            "CHASSIS"
          ]
        },
        "sizeType": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.SizeType"
        },
        "containerOperator": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Carrier"
        },
        "tareWeight": {
          "type": [
            "number",
            "null"
          ],
          "description": "The weight of the container without its content."
        },
        "bookingReference": {
          "maxLength": 35,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "shipperSealNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "carrierSealNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "customsSealNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "shippersOwned": {
          "type": "boolean",
          "description": "Indication whether the container number is a ISO 6346 compliant container number (apply true when it does not comply)."
        },
        "empty": {
          "type": "boolean",
          "description": "Indication whether the container is full or empty."
        },
        "temperature": {
          "type": [
            "number",
            "null"
          ]
        },
        "overlength": {
          "type": [
            "number",
            "null"
          ]
        },
        "overheight": {
          "type": [
            "number",
            "null"
          ]
        },
        "overwidth": {
          "type": [
            "number",
            "null"
          ]
        },
        "oversizeRemarks": {
          "type": [
            "string",
            "null"
          ]
        },
        "onCarriageDetails": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.OnCarriageDetails"
        },
        "initialDemurrage": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "redeliveryAddress": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.OnCarriageDetails": {
      "title": "OnCarriageDetails",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "modeOfTransport": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "AIR_TRANSPORT",
            "FIXED_TRANSPORT",
            "INLAND_WATER_TRANSPORT",
            "MAIL",
            "MARITIME_TRANSPORT",
            "MULTIMODAL_TRANSPORT",
            "NOT_APPLICABLE",
            "NOT_SPECIFIED",
            "RAIL_TRANSPORT",
            "ROAD_TRANSPORT"
          ]
        },
        "vessel": {
          "type": [
            "string",
            "null"
          ]
        },
        "radioCallSign": {
          "maxLength": 7,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "voyageNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "plannedDeparture": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.Party": {
      "title": "Party",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "eoriNumber": {
          "maxLength": 35,
          "minLength": 0,
          "pattern": "[A-Z]{2}[^\\s]*|null",
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "address": {
          "type": [
            "string",
            "null"
          ]
        },
        "zipCode": {
          "maxLength": 9,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "countryCode": {
          "maxLength": 2,
          "minLength": 2,
          "type": [
            "string",
            "null"
          ]
        },
        "id": {
          "type": [
            "string",
            "null"
          ]
        },
        "ownerShortName": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.common.SizeType": {
      "title": "SizeType",
      "required": [
        "code"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "code": {
          "maxLength": 4,
          "minLength": 0,
          "type": "string",
          "description": "The coded container's length, width, height, type and features."
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "The descriptive name of the size type of container as specified with the code."
        }
      },
      "description": "The classification of the container's length, width, height, type and features.<br>Use a size type retrieved with find size types via the Reference Data API '[Find SizeTypes](#operation/_06_findSizeTypes)'."
    },
    "com.portbase.bezoekschip.common.api.cargo.common.WarehouseLicense": {
      "title": "WarehouseLicense",
      "required": [
        "customsAuthorityId",
        "licenseNumber"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "licenseNumber": {
          "maxLength": 35,
          "minLength": 0,
          "type": "string"
        },
        "customsAuthorityId": {
          "maxLength": 17,
          "minLength": 0,
          "type": "string"
        },
        "holderName": {
          "type": [
            "string",
            "null"
          ]
        },
        "storageType": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "C",
            "D",
            "E",
            "I",
            "U"
          ]
        },
        "address": {
          "type": [
            "string",
            "null"
          ]
        },
        "zipCode": {
          "type": [
            "string",
            "null"
          ]
        },
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "id": {
          "type": [
            "string",
            "null"
          ]
        },
        "organisationShortName": {
          "type": [
            "string",
            "null"
          ]
        },
        "organisationFullName": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.cargo.inspection.InspectionUpdate": {
      "title": "InspectionUpdate",
      "required": [
        "consignmentNumber"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "consignmentNumber": {
          "minLength": 1,
          "type": "string"
        },
        "containerNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "Keep containerNumber empty for bulk inspections."
        },
        "physicalInspectionLocation": {
          "type": [
            "string",
            "null"
          ],
          "description": "Only relevant for physical container inspections.",
          "enum": [
            "inspection_outlet",
            "customs_warehouse"
          ]
        },
        "status": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "released",
            "deleted",
            "external_scan"
          ]
        },
        "type": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "physical",
            "scan",
            "block"
          ]
        },
        "remark": {
          "type": [
            "string",
            "null"
          ]
        },
        "processId": {
          "type": [
            "string",
            "null"
          ]
        },
        "timestamp": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "readOnly": true
        }
      },
      "description": "Inspection events logged per consignment."
    },
    "com.portbase.bezoekschip.common.api.common.authentication.BezoekschipOrganisation": {
      "title": "BezoekschipOrganisation",
      "required": [
        "fullName",
        "shortName"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "fullName": {
          "minLength": 1,
          "type": "string",
          "description": "The full name of the organisation"
        },
        "shortName": {
          "minLength": 1,
          "type": "string",
          "description": "The short name of the organisation"
        },
        "iamConnectedId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The IAM Connected id of the organisation"
        },
        "portAuthorityId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The unique identifier of the organisation, issued by the port authority"
        },
        "creditNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The credit number of the organisation, issued by the port for harbour dues declarations"
        },
        "emailAddress": {
          "type": [
            "string",
            "null"
          ],
          "description": "The email address of the organisation"
        },
        "address": {
          "type": [
            "string",
            "null"
          ],
          "description": "The address of the organisation"
        },
        "city": {
          "type": [
            "string",
            "null"
          ],
          "description": "The city where the organisation is located"
        },
        "zipCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The zip code of the organisation"
        },
        "countryUnCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The UN code of the country where the organisation is located"
        },
        "countryName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the country where the organisation is located"
        },
        "phoneNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The phone number of the organisation"
        },
        "faxNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fax number of the organisation"
        },
        "contact": {
          "type": [
            "string",
            "null"
          ],
          "description": "The contact person of the organisation"
        },
        "customsEORINumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The EORI number of the organisation, issued by customs"
        },
        "ean": {
          "type": [
            "string",
            "null"
          ],
          "description": "The EAN number of the organisation"
        },
        "chamberOfCommerceNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The chamber of commerce number of the organisation"
        },
        "scacCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The SCAC code of the organisation"
        },
        "rtoNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The warehouse license id"
        }
      },
      "description": "Owner: The organisation that is accountable for reporting the port visit\nDeclarant: The organisation that is responsible for reporting the port visit\nCargoDeclarant: The organisation that is responsible for reporting the cargo on board of the vessel\nFinancialDeclarant: The organisation that is responsible for reporting the harbour dues for a visit"
    },
    "com.portbase.bezoekschip.common.api.common.visit.Carrier": {
      "title": "Carrier",
      "type": "object",
      "properties": {
        "customsId": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the carrier, issued by Customs (EORI or TCUIN)"
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the carrier"
        },
        "scacCode": {
          "maxLength": 4,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the carrier, issued by the US"
        },
        "smdgCode": {
          "maxLength": 3,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the carrier, issued by the SMDG"
        },
        "bicCode": {
          "maxLength": 3,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the carrier, issued by the BIC"
        },
        "cargoDeclarantShortName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The main cargo agent of the carrier"
        },
        "boxOperators": {
          "uniqueItems": true,
          "type": "array",
          "description": "All the cargo agents allowed to process cargo for this carrier",
          "items": {
            "type": [
              "string",
              "null"
            ],
            "description": "All the cargo agents allowed to process cargo for this carrier"
          }
        }
      },
      "description": "The organisation that arranges the transport of the goods and performs the port visit"
    },
    "com.portbase.bezoekschip.common.api.common.visit.Location": {
      "title": "Location",
      "required": [
        "countryUnCode",
        "locationUnCode",
        "name"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the location"
        },
        "locationUnCode": {
          "minLength": 1,
          "type": "string",
          "description": "The UN locode of the location"
        },
        "countryUnCode": {
          "minLength": 1,
          "type": "string",
          "description": "The UN code of the location's country"
        },
        "euLocation": {
          "type": "boolean",
          "description": "Indication whether the location is located in the EU"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.common.visit.OrderablePilotTransferPoint": {
      "title": "OrderablePilotTransferPoint",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "pilotRequired": {
          "type": "boolean"
        },
        "pilotTransferPointId": {
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "nextTransferPoints": {
          "uniqueItems": true,
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "description": "When the Port of call contains pilotTransferPoints this field can be populated with the traject the vessel will take"
    },
    "com.portbase.bezoekschip.common.api.common.visit.Port": {
      "title": "Port",
      "required": [
        "countryUnCode",
        "locationUnCode",
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the port"
        },
        "locationUnCode": {
          "minLength": 1,
          "type": "string",
          "description": "The UN locode of the location where the port is located"
        },
        "countryUnCode": {
          "minLength": 1,
          "type": "string",
          "description": "The UN code of the country where the port is located"
        },
        "euPort": {
          "type": "boolean",
          "description": "Indication whether the port is located in the EU"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.common.visit.Terminal": {
      "title": "Terminal",
      "required": [
        "terminalCode",
        "terminalName"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "terminalName": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the terminal"
        },
        "terminalCode": {
          "minLength": 1,
          "type": "string",
          "description": "The code of the terminal"
        },
        "organisationShortName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The short name of the organisation that contains the terminal"
        },
        "organisationName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the organisation that contains the terminal"
        },
        "deprecatedSwLocationCode": {
          "type": "boolean",
          "description": "True when the terminal will be phased out (but still valid) in the customs N24 location code table"
        },
        "rollOnRollOff": {
          "type": "boolean",
          "description": "True when the terminal is a Roll-On Roll-Off terminal"
        },
        "terminalLicence": {
          "type": [
            "string",
            "null"
          ],
          "description": "The terminal license id"
        }
      },
      "description": "The terminal that is visited by the vessel"
    },
    "com.portbase.bezoekschip.common.api.common.visit.WasteMaterial": {
      "title": "WasteMaterial",
      "required": [
        "ssn"
      ],
      "type": "object",
      "properties": {
        "typeCode": {
          "type": "string",
          "description": "The code of the waste type."
        },
        "euralCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the waste type in the european list of waste."
        },
        "iltCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the waste type for Human Environment and Transport Inspectorate (Dutch IL&T)"
        },
        "ssn": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.WasteTypeSsn"
        },
        "start": {
          "type": [
            "string",
            "null"
          ],
          "description": "The start date that the entry becomes valid.",
          "format": "partial-date"
        },
        "end": {
          "type": [
            "string",
            "null"
          ],
          "description": "The end date until which the entry stays valid.",
          "format": "partial-date"
        },
        "nameNL": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name in dutch of the substance."
        },
        "nameEN": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name in english of the substance."
        },
        "unitOfMeasure": {
          "type": [
            "string",
            "null"
          ],
          "description": "The unit of measure.",
          "enum": [
            "kg",
            "m3",
            "units"
          ]
        },
        "unitConversionToCubicMeters": {
          "type": [
            "number",
            "null"
          ],
          "description": "The conversion from the value in the unit of measure to cubic meters."
        }
      },
      "description": "The waste that is aboard the vessel and can be collected"
    },
    "com.portbase.bezoekschip.common.api.common.visit.WasteTypeSsn": {
      "title": "WasteTypeSsn",
      "required": [
        "code",
        "description",
        "marpolCategory",
        "specificationRequired"
      ],
      "type": "object",
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string",
          "description": "The code of the waste type in the Maritime Single Window."
        },
        "description": {
          "minLength": 1,
          "type": "string",
          "description": "The description of the waste type in the Maritime Single Window."
        },
        "marpolCategory": {
          "minLength": 1,
          "type": "string",
          "description": "The MARPOL category of the waste type."
        },
        "specificationRequired": {
          "type": "boolean",
          "description": "Indication whether a specification is required."
        }
      },
      "description": "The waste type in the Maritime Single Window."
    },
    "com.portbase.bezoekschip.common.api.dangerousgoods.common.CargoPackageType": {
      "title": "CargoPackageType",
      "required": [
        "bulk",
        "code",
        "name"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string"
        },
        "name": {
          "minLength": 1,
          "type": "string"
        },
        "bulk": {
          "type": "boolean"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.dangerousgoods.common.DischargedStowage": {
      "title": "DischargedStowage",
      "required": [
        "emptied",
        "stowageNumber",
        "type"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "stowageNumber": {
          "minLength": 1,
          "type": "string",
          "description": "Identifier of the tank, hold or container that is discharged at the berth"
        },
        "type": {
          "minLength": 1,
          "type": "string",
          "description": "Type of stowage to discharge, i.e. tank, hold, container or breakBulk"
        },
        "emptied": {
          "type": "boolean",
          "description": "Indication whether the tank or hold is completely emptied at the berth"
        },
        "amount": {
          "minimum": 0,
          "exclusiveMinimum": true,
          "type": [
            "number",
            "null"
          ],
          "description": "The amount that is discharged at the berth"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.common.ApiBezoekschipOrganisation": {
      "title": "BezoekschipOrganisation",
      "required": [
        "fullName"
      ],
      "type": "object",
      "properties": {
        "fullName": {
          "minLength": 1,
          "type": "string",
          "description": "The full name of the organisation"
        },
        "shortName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The short name of the organisation"
        },
        "iamConnectedId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The IAM Connected id of the organisation"
        },
        "portAuthorityId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The unique identifier of the organisation, issued by the port authority"
        },
        "creditNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The credit number of the organisation, issued by the port for harbour dues declarations"
        },
        "emailAddress": {
          "type": [
            "string",
            "null"
          ],
          "description": "The email address of the organisation"
        },
        "address": {
          "type": [
            "string",
            "null"
          ],
          "description": "The address of the organisation"
        },
        "city": {
          "type": [
            "string",
            "null"
          ],
          "description": "The city where the organisation is located"
        },
        "zipCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The zip code of the organisation"
        },
        "countryUnCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The UN code of the country where the organisation is located"
        },
        "countryName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the country where the organisation is located"
        },
        "phoneNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The phone number of the organisation"
        },
        "faxNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fax number of the organisation"
        },
        "contact": {
          "type": [
            "string",
            "null"
          ],
          "description": "The contact person of the organisation"
        },
        "customsEORINumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The EORI number of the organisation, issued by customs"
        },
        "ean": {
          "type": [
            "string",
            "null"
          ],
          "description": "The EAN number of the organisation"
        },
        "chamberOfCommerceNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The chamber of commerce number of the organisation"
        },
        "scacCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The SCAC code of the organisation"
        },
        "rtoNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The RTO code of the organisation (only available for terminals)"
        }
      },
      "description": "Owner: The organisation that is accountable for reporting the port visit\nDeclarant: The organisation that is responsible for reporting the port visit\nCargoDeclarant: The organisation that is responsible for reporting the cargo on board of the vessel\nFinancialDeclarant: The organisation that is responsible for reporting the harbour dues for a visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiBerth": {
      "title": "Berth",
      "required": [
        "buoy",
        "code",
        "harbourDuesArea",
        "name",
        "terminalCode"
      ],
      "type": "object",
      "properties": {
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the berth"
        },
        "shortName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The short name of the berth"
        },
        "code": {
          "minLength": 1,
          "type": "string",
          "description": "The code of the berth"
        },
        "terminalCode": {
          "minLength": 1,
          "type": "string",
          "description": "The code of the terminal that contains the berth"
        },
        "terminalName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the terminal that contains the berth"
        },
        "organisationShortName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The short name of the organisation that contains the berth"
        },
        "organisationName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the organisation that contains the terminal"
        },
        "berthGroupCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the berth group that contains the berth"
        },
        "buoy": {
          "type": "boolean",
          "description": "Indication whether the berth is a buoy"
        },
        "harbourDuesArea": {
          "type": "boolean",
          "description": "Indication whether the berth is part of the port's harbour dues area"
        },
        "partyToNotify": {
          "type": [
            "string",
            "null"
          ],
          "description": "The organisation that must be notified about the visit",
          "deprecated": true
        },
        "bollards": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiBollards"
        },
        "globalLocationNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The Global Location Number assigned to the quay by the port authority"
        }
      },
      "description": "The berth that is visited by the vessel"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiBerthVisit": {
      "title": "BerthVisit",
      "required": [
        "id",
        "visitPurposes"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "minLength": 1,
          "type": "string",
          "description": "The Universal Unique Identifier (UUID) of the berth visit"
        },
        "callId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the berth visit to the terminal"
        },
        "berth": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiBerth"
        },
        "terminal": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiTerminal"
        },
        "stevedore": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiStevedore"
        },
        "eta": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated time of arrival of the vessel at the berth, for Rotterdam this is 1st line secured",
          "format": "date-time"
        },
        "requestedEta": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated time of arrival of the vessel at the berth, requested by the declarant",
          "format": "date-time",
          "deprecated": true
        },
        "ata": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time of arrival of the vessel at the berth",
          "format": "date-time",
          "deprecated": true
        },
        "etd": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated time of departure of the vessel from the berth, for Rotterdam this is 1st line released",
          "format": "date-time"
        },
        "requestedEtd": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated time of departure of the vessel at the berth, requested by the declarant",
          "format": "date-time",
          "deprecated": true
        },
        "atd": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time of departure of the vessel from the berth",
          "format": "date-time",
          "deprecated": true
        },
        "mooring": {
          "type": [
            "string",
            "null"
          ],
          "description": "Indication of how the vessel must be moored",
          "enum": [
            "PORT_SIDE",
            "STARBOARD_SIDE",
            "ALONGSIDE_OTHER_SHIP",
            "NO_PREFERENCE"
          ]
        },
        "remarks": {
          "maxLength": 152,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The remarks about the berth visit"
        },
        "visitPurposes": {
          "uniqueItems": true,
          "type": "array",
          "description": "The purpose of the berth visit",
          "items": {
            "type": [
              "string",
              "null"
            ],
            "description": "The purpose of the berth visit",
            "enum": [
              "AWAITING_ORDERS",
              "BUNKERING",
              "CARGO_TANK_CLEANING",
              "CREW_MOVEMENT",
              "CRUISE_LEISURE_RECREATION",
              "CUSTOMS_CLEARANCE",
              "DE_GASSING",
              "DISCHARGE",
              "DISCHARGE_CRUDE_OIL",
              "DISPOSAL_OF_WASTE",
              "DRY_DOCK",
              "GOODWILL_VISIT",
              "LAID_UP",
              "LOADING",
              "PASSENGER_MOVEMENT",
              "QUARANTINE_INSPECTION",
              "REFUGE",
              "REPAIRS",
              "TAKING_SUPPLIES",
              "UNDER_GOVERNMENT_ORDER"
            ]
          }
        },
        "bollardFrom": {
          "minimum": 0,
          "type": [
            "number",
            "null"
          ],
          "description": "The bollard (from) where the vessel is moored"
        },
        "bollardTo": {
          "minimum": 0,
          "type": [
            "number",
            "null"
          ],
          "description": "The bollard (to) where the vessel is moored"
        },
        "startPosition": {
          "type": [
            "string",
            "null"
          ],
          "description": "The Global Location Number with extension indicating the start of where the vessel is (to be) moored"
        },
        "endPosition": {
          "type": [
            "string",
            "null"
          ],
          "description": "The Global Location Number with extension indicating the end of where the vessel is (to be) moored"
        },
        "position": {
          "type": [
            "string",
            "null"
          ],
          "description": "The Global Location Number with extension indicating where the vessel is (to be) moored"
        },
        "tugboatAtArrival": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiTugboatService"
        },
        "boatmenAtArrival": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiBoatmenService"
        },
        "helmsmenAtArrival": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiHelmsmenService"
        },
        "boatmenAtDeparture": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiBoatmenService"
        },
        "tugboatAtDeparture": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiTugboatService"
        },
        "helmsmenAtDeparture": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiHelmsmenService"
        },
        "nextMovement": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiLocalMovement"
        },
        "vesselServiceCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the vessel service linked to the organisation and carrier"
        },
        "vesselServiceName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the vessel service linked to the organisation and carrier"
        },
        "discharge": {
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "description": "The amount of containers that will be discharged",
          "format": "int32"
        },
        "load": {
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "description": "The amount of containers that will be loaded",
          "format": "int32"
        },
        "restow": {
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "description": "The amount of containers that will be restowed",
          "format": "int32"
        },
        "externalInfo": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiBerthVisitInfo"
        }
      },
      "description": "The berth visit. nextMovement = The local movement that starts from the berth. boatmenAtArrival = The boatmen service for arrival at the berth. boatmenAtDeparture = The boatmen service for departure from the berth."
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiBoatmenService": {
      "title": "BoatmenService",
      "required": [
        "required"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "required": {
          "type": "boolean",
          "description": "Indication whether the boatmen service is required"
        },
        "serviceProvider": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiServiceProvider"
        },
        "remarks": {
          "maxLength": 70,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The remarks about the boatmen service"
        }
      },
      "description": "The boatmen service for arrival at the berth or departure from the berth"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiBollards": {
      "title": "Bollards",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "start": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "end": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        }
      },
      "description": "The bollards linked to this berth visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiCarrier": {
      "title": "Carrier",
      "type": "object",
      "properties": {
        "customsId": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the carrier, issued by Customs (EORI or TCUIN)"
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the carrier"
        },
        "scacCode": {
          "maxLength": 4,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the carrier, issued by the US"
        },
        "smdgCode": {
          "maxLength": 3,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the carrier, issued by the SMDG"
        },
        "bicCode": {
          "maxLength": 3,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the carrier, issued by the BIC"
        },
        "cargoDeclarantShortName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The main cargo agent of the carrier"
        },
        "boxOperators": {
          "uniqueItems": true,
          "type": "array",
          "description": "All the cargo agents allowed to process cargo for this carrier",
          "items": {
            "type": [
              "string",
              "null"
            ],
            "description": "All the cargo agents allowed to process cargo for this carrier"
          }
        }
      },
      "description": "The organisation that arranges the transport of the goods and performs the port visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiCertifyingOrganisation": {
      "title": "CertifyingOrganisation",
      "required": [
        "code",
        "name"
      ],
      "type": "object",
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string",
          "description": "The IMO GISIS maritime security code of the certifying organisation"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The IMO GISIS maritime security name of the certifying organisation"
        }
      },
      "description": "The Recognised Security Organisation (RSO) that has issued the International Ship Security Certificate"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiCompanySecurityOfficer": {
      "title": "CompanySecurityOfficer",
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "maxLength": 70,
          "minLength": 0,
          "type": "string",
          "description": "The name of the company security officer"
        },
        "email": {
          "maxLength": 50,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The email address of the company security officer"
        },
        "phoneNumber": {
          "maxLength": 15,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The phone number of the company security officer"
        }
      },
      "description": "The company security officer for the vessel"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiCustomsOffice": {
      "title": "CustomsOffice",
      "required": [
        "name",
        "unCode"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "minLength": 1,
          "type": "string"
        },
        "unCode": {
          "minLength": 1,
          "type": "string"
        }
      },
      "description": "The customs office geographically competent for the place where the goods are brought into the customs territory"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiEntryDependency": {
      "title": "EntryDependency",
      "required": [
        "berthVisitId",
        "crn",
        "dependencyType",
        "vesselImoCode",
        "vesselName"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "vesselName": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the other vessel"
        },
        "vesselImoCode": {
          "minLength": 1,
          "type": "string",
          "description": "The imoCode of the other vessel"
        },
        "crn": {
          "minLength": 1,
          "type": "string"
        },
        "berthVisitId": {
          "minLength": 1,
          "type": "string"
        },
        "berthName": {
          "type": [
            "string",
            "null"
          ]
        },
        "berthCode": {
          "type": [
            "string",
            "null"
          ]
        },
        "autoOrder": {
          "type": "boolean",
          "description": "Indicator if the incoming movement may be ordered automatically when the movement of the other vessel is ordered"
        },
        "email": {
          "type": [
            "string",
            "null"
          ],
          "description": "Email where the agent wants to be notified on when the other vessel's order status changes"
        },
        "phoneNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "Phone number where the agent wants to be notified on when the other vessel's order status changes"
        },
        "estimatedTimeBerth": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated time of arrival or the estimated time of departure of the other vessel",
          "format": "date-time"
        },
        "actualTimeBerth": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time of arrival or the actual time of departure of the other vessel",
          "format": "date-time"
        },
        "orderStatus": {
          "type": [
            "string",
            "null"
          ],
          "description": "The order status of the other vessel",
          "enum": [
            "CONFIRMED",
            "REJECTED",
            "CONFIRMED_NEW_PROPOSAL",
            "ETA_CHANGED",
            "ETD_CHANGED",
            "ORDERED",
            "REEVALUATED",
            "CANCELLED"
          ]
        },
        "movementOnHold": {
          "type": "boolean",
          "description": "Indicator if the other vessel is on hold (halted by the PA)"
        },
        "dependencyType": {
          "type": "string",
          "enum": [
            "EXCHANGE",
            "ENTRY_AFTER"
          ]
        }
      },
      "description": "Dependence on other vessel when entering the port"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiEntryPoint": {
      "title": "EntryPoint",
      "required": [
        "code",
        "name"
      ],
      "type": "object",
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string",
          "description": "The code of the entry point"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the entry point"
        },
        "atSea": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indicator if the entry point is accessible from sea or hinterland"
        }
      },
      "description": "The location where the vessel enters the port of call"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiExitPoint": {
      "title": "ExitPoint",
      "required": [
        "code",
        "name"
      ],
      "type": "object",
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string",
          "description": "The code of the exit point"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the exit point"
        },
        "atSea": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indicator if the exit point is located on sea or in hinterland"
        }
      },
      "description": "The location where the vessel exits the port of call"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiHelmsmenService": {
      "title": "HelmsmenService",
      "required": [
        "required"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "required": {
          "type": "boolean",
          "description": "Indication whether the helmsmen service is required"
        },
        "serviceProvider": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiServiceProvider"
        },
        "remarks": {
          "maxLength": 70,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The remarks about the helmsmen service"
        }
      },
      "description": "The helmsmen service for arrival at the berth or departure from the berth"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiHinterlandEntry": {
      "title": "HinterlandEntry",
      "required": [
        "intention"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPortEntry"
        },
        {
          "type": "object",
          "properties": {
            "baseForPlanning": {
              "type": [
                "string",
                "null"
              ],
              "description": "Location indicated by the agent which should be used as basis for planning",
              "enum": [
                "PILOT_BOARDING_PLACE",
                "FIRST_BERTH"
              ]
            },
            "earliestTimeOfPortEntry": {
              "type": [
                "string",
                "null"
              ],
              "description": "The earliest time it is possible/allowed for the vessel to enter the port",
              "format": "date-time"
            },
            "etaPilotBoardingPlace": {
              "type": [
                "string",
                "null"
              ],
              "description": "The estimated time of arrival of the vessel at the pilot boarding place",
              "format": "date-time"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiIsscSecurityDocument": {
      "title": "IsscSecurityDocument",
      "required": [
        "availability",
        "expiryDate",
        "issuer"
      ],
      "type": "object",
      "properties": {
        "availability": {
          "type": "string",
          "description": "Indication whether the International Ship Security Certificate is available",
          "enum": [
            "YES",
            "NO",
            "INTERIM"
          ]
        },
        "expiryDate": {
          "type": "string",
          "description": "The expiry date of the International Ship Security Certificate",
          "format": "partial-date"
        },
        "reasonNoValidIsscOnBoard": {
          "maxLength": 512,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The reason why there is no (valid) International Ship Security Certificate on board"
        },
        "issuer": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiCertifyingOrganisation"
        }
      },
      "description": "The International Ship Security Certificate of the vessel"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiLocalMovement": {
      "title": "LocalMovement",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "vesselDraft": {
          "minimum": 0,
          "exclusiveMinimum": false,
          "type": [
            "number",
            "null"
          ],
          "description": "The draft of the vessel in meters"
        },
        "vesselMasterName": {
          "maxLength": 35,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the vessel master on board of the vessel"
        },
        "numberOfCrew": {
          "maximum": 9999,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "description": "The number of crew on board of the vessel",
          "format": "int32"
        },
        "numberOfPassengers": {
          "maximum": 9999,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "description": "The number of passengers on board of the vessel",
          "format": "int32"
        },
        "cargo": {
          "type": [
            "string",
            "null"
          ],
          "description": "The brief description of the cargo on board of the vessel",
          "enum": [
            "BALLAST_CONDITION",
            "BREAKBULK",
            "CASCO",
            "CONTAINERIZED",
            "ENVIRONMENTAL_POLLUTANT_CARGO",
            "FROZEN_CARGO",
            "GENERAL_CARGO",
            "HAZARDOUS_CARGO",
            "HEAVY_LOAD",
            "LIQUID_CARGO",
            "OUT_OF_GAUGE",
            "PALLETIZED",
            "ROLL_ON_ROLL_OFF",
            "TEMPERATURE_CONTROLLED_CARGO",
            "VEHICLES",
            "REFRIGERATED_CARGO",
            "BREAKBULK_GENERAL_CARGO",
            "BULK_DRY",
            "BULK_DRY_FUMIGATED",
            "BULK_LIQUID_GAS",
            "FROZEN_REFRIGERATED_CARGO",
            "PASSENGERS",
            "PROJECT_CARGO",
            "RORO_VEHICLES"
          ]
        },
        "orderEmail": {
          "type": [
            "string",
            "null"
          ],
          "description": "The email address to which order information will be sent to"
        },
        "orderSms": {
          "type": [
            "string",
            "null"
          ],
          "description": "The sms number to which order information will be sent to"
        },
        "pilotExemption": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPilotExemption"
        },
        "offStandardBeam": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiOffStandardBeam"
        },
        "pilotService": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPilotService"
        },
        "order": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indication whether the local movement is ordered by the declarant"
        },
        "orderCancellationReason": {
          "type": [
            "string",
            "null"
          ],
          "description": "        In case the order is cancelled by agent this contains the reason of the cancellation.\n        Possible values:\n        BUNKERING_NOT_READY Bunkering not ready\n        OTHER_CUSTOMER_ORDERS Other customer orders\n        PAPERWORK_NOT_READY Paperwork not ready\n        SURVEYOR_NOT_READY Surveyor not ready\n        TERMINAL_NOT_READY Terminal not ready\n        VESSEL_NOT_READY Vessel not ready\n"
        },
        "cancellationReason": {
          "type": [
            "string",
            "null"
          ],
          "description": "In case the order is cancelled automatically this contains the reason of the cancellation"
        },
        "stormPilotageInformation": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiStormPilotageInformation"
        },
        "clientReferenceNumber": {
          "maxLength": 35,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The unique identifier for movement, issued by the client"
        },
        "trajectory": {
          "type": "array",
          "description": "When the Port of call contains pilotTransferPoints this field can be populated with the traject the vessel will take",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.OrderablePilotTransferPoint"
          }
        }
      },
      "description": "The local movement in the port of call from entry point or berth to berth or exit point"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiNextPort": {
      "title": "NextPort",
      "required": [
        "id",
        "port"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "minLength": 1,
          "type": "string",
          "description": "The Universal Unique Identifier (UUID) of the next port"
        },
        "arrival": {
          "type": [
            "string",
            "null"
          ],
          "description": "The arrival of the vessel at the next port",
          "format": "date-time"
        },
        "departure": {
          "type": [
            "string",
            "null"
          ],
          "description": "The departure of the vessel from the next port",
          "format": "date-time"
        },
        "port": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "customsOffice": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiCustomsOffice"
        }
      },
      "description": "The port that will be visited by the vessel after the port visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiOffStandardBeam": {
      "title": "OffStandardBeam",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "value": {
          "minimum": 0,
          "type": [
            "number",
            "null"
          ],
          "description": "The off standard beam of the vessel in meters"
        },
        "remarks": {
          "maxLength": 512,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The remarks about the off standard beam of the vessel"
        }
      },
      "description": "The off standard beam of the vessel"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPaxDeclarationSummary": {
      "title": "PaxDeclarationSummary",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "numberOfCrew": {
          "type": "integer",
          "format": "int32"
        },
        "numberOfPassengers": {
          "type": "integer",
          "format": "int32"
        },
        "numberOfCrewOtherShip": {
          "type": "integer",
          "format": "int32"
        },
        "numberOfStowaways": {
          "type": "integer",
          "format": "int32"
        }
      },
      "description": "The summary of the declaration of the crew and passengers information of the port visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPilotExemption": {
      "title": "PilotExemption",
      "required": [
        "number"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "holderName": {
          "maxLength": 35,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the pilotage exemption holder"
        },
        "number": {
          "maxLength": 10,
          "minLength": 0,
          "type": "string",
          "description": "The number of the pilotage exemption"
        }
      },
      "description": "The exemption from the pilotage requirement"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPilotService": {
      "title": "PilotService",
      "required": [
        "required"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "required": {
          "type": "boolean",
          "description": "Indication whether the pilotage service is required"
        },
        "serviceProvider": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiServiceProvider"
        },
        "remarks": {
          "maxLength": 70,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The remarks about the pilotage service"
        }
      },
      "description": "The pilotage service for the local movement"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPilotStation": {
      "title": "PilotStation",
      "required": [
        "code",
        "name"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string",
          "description": "The code of the pilot boarding place"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the pilot boarding place"
        },
        "atSea": {
          "type": "boolean",
          "description": "Indicator if the pilot boarding place is located on sea or in hinterland"
        }
      },
      "description": "The location where the pilot boards the vessel"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPort": {
      "title": "Port",
      "required": [
        "countryUnCode",
        "locationUnCode",
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the port"
        },
        "locationUnCode": {
          "minLength": 1,
          "type": "string",
          "description": "The UN locode of the location where the port is located"
        },
        "countryUnCode": {
          "minLength": 1,
          "type": "string",
          "description": "The UN code of the country where the port is located"
        },
        "euPort": {
          "type": "boolean",
          "description": "Indication whether the port is located in the EU"
        }
      },
      "description": "The port where discharged goods were loaded or loaded goods will be discharged"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPortEntry": {
      "title": "PortEntry",
      "required": [
        "intention",
        "origin"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "baseForPlanning": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "PILOT_BOARDING_PLACE",
            "FIRST_BERTH"
          ]
        },
        "earliestTimeOfPortEntry": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "etaPilotBoardingPlace": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "intention": {
          "type": "string",
          "description": "Intention of the visit",
          "enum": [
            "WAITING_FOR_ORDERS",
            "REQUEST_FOR_ENTRY"
          ]
        },
        "requestedEtaPilotBoardingPlace": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated time of arrival of the vessel at the pilot boarding place, requested by the declarant",
          "format": "date-time",
          "deprecated": true
        },
        "origin": {
          "type": "string"
        }
      },
      "description": "The port entry of the port visit. A port entry is mandatory when declaring a visit that orders the incoming movement; it is optional when the visit is created or saved, and can be added later. Once a port entry has been set, its origin (SEA or HINTERLAND) can no longer be changed.",
      "oneOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiSeaEntry"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiHinterlandEntry"
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPortFacility": {
      "title": "PortFacility",
      "required": [
        "code",
        "name"
      ],
      "type": "object",
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string",
          "description": "The IMO GISIS maritime security code of the port facility"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The IMO GISIS maritime security name of the port facility,"
        }
      },
      "description": "The port facility that was visited by the vessel"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPortFacilityVisit": {
      "title": "PortFacilityVisit",
      "required": [
        "portFacility",
        "securityLevel"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "portFacility": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPortFacility"
        },
        "arrivalDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "The arrival date of the vessel at the port facility",
          "format": "partial-date"
        },
        "departureDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "The departure date of the vessel from the port facility",
          "format": "partial-date"
        },
        "securityLevel": {
          "type": "string",
          "description": "The security level of the vessel at the port facility",
          "enum": [
            "SL1",
            "SL2",
            "SL3"
          ]
        },
        "additionalSecurityMeasures": {
          "maxLength": 512,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The special or additional security measures (beyond the measures in the approved SSP) that have been taken at the port facility visit of the vessel"
        }
      },
      "description": "The visit of the vessel to the port facility"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPortOfCall": {
      "title": "PortOfCall",
      "required": [
        "port",
        "portAuthority"
      ],
      "type": "object",
      "properties": {
        "port": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "portAuthority": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.common.ApiBezoekschipOrganisation"
        },
        "customsOffice": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiCustomsOffice"
        },
        "ataReported": {
          "type": "boolean"
        },
        "atdReported": {
          "type": "boolean"
        },
        "atdPortReported": {
          "type": "boolean"
        },
        "paDeclarationRequired": {
          "type": "boolean"
        },
        "swDeclarationRequired": {
          "type": "boolean"
        },
        "wasteEnabled": {
          "type": "boolean"
        },
        "dangerousGoodsEnabled": {
          "type": "boolean"
        },
        "harbourDuesEnabled": {
          "type": "boolean"
        },
        "orderNauticalServicesEnabled": {
          "type": "boolean"
        },
        "enableNotificationsToPa": {
          "type": "boolean"
        },
        "authoriseOrganisationsDisabled": {
          "type": "boolean"
        },
        "tugBoatsRequired": {
          "type": "boolean"
        },
        "visitOrderOverdueWarningEnabled": {
          "type": "boolean"
        }
      },
      "description": "The port of call for the visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPortVisit": {
      "title": "PortVisit",
      "required": [
        "berthVisits",
        "dangerousGoodsDischarge",
        "dangerousGoodsLoading",
        "dangerousGoodsTransit",
        "defectTypes",
        "entryPoint",
        "etaPort",
        "etdPort",
        "exitPoint",
        "firstMovement",
        "vesselInspectionRequired"
      ],
      "type": "object",
      "properties": {
        "pilotStation": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPilotStation"
        },
        "entryPoint": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiEntryPoint"
        },
        "etaPort": {
          "type": "string",
          "description": "The estimated time of arrival of the vessel at the pilot station or entry point",
          "format": "date-time"
        },
        "portEntry": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPortEntry"
        },
        "firstMovement": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiLocalMovement"
        },
        "passingThroughTugboats": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiTugboatService"
        },
        "defectTypes": {
          "uniqueItems": true,
          "type": "array",
          "description": "The defects of the vessel at arrival at the port of call",
          "items": {
            "type": [
              "string",
              "null"
            ],
            "description": "The defects of the vessel at arrival at the port of call",
            "enum": [
              "DAI",
              "DCA",
              "DCO",
              "DEN",
              "DFI",
              "DNA",
              "DSA",
              "DSM",
              "DST",
              "DWA",
              "DWE",
              "GAS",
              "LIP",
              "LIS",
              "OHC",
              "QUA",
              "TOW",
              "DEFECT_TO_STERN_THRUSTER",
              "DEFECT_TO_BOW_THRUSTER"
            ]
          }
        },
        "defectTypeRemarks": {
          "maxLength": 512,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The remarks about the off defects of the vessel"
        },
        "berthVisits": {
          "type": "array",
          "description": "The berth visit of the vessel",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiBerthVisit"
          }
        },
        "dangerousGoodsLoading": {
          "type": "boolean",
          "description": "Indication whether dangerous goods will be loaded on board of the vessel at the port visit"
        },
        "dangerousGoodsDischarge": {
          "type": "boolean",
          "description": "Indication whether dangerous goods will be discharged from the vessel at the port visit"
        },
        "dangerousGoodsTransit": {
          "type": "boolean",
          "description": "Indication whether dangerous goods will be in transit on board of the vessel at the port visit"
        },
        "vesselInspectionRequired": {
          "type": "boolean",
          "description": "Indication whether vessel inspection is required at the port visit"
        },
        "fumigatedCargoInBulk": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indication whether cargo in bulk is fumigated"
        },
        "shipConfiguration": {
          "type": [
            "string",
            "null"
          ],
          "description": "The configuration of the vessel",
          "enum": [
            "SINGLE_HULL_TANKER",
            "DOUBLE_HULL_TANKER",
            "SINGLE_HULL_WITH_SEGREGATED_BALLAST_TANKS"
          ]
        },
        "exitPoint": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiExitPoint"
        },
        "etdPort": {
          "type": "string",
          "description": "The estimated time of departure of the vessel from the exit point",
          "format": "date-time"
        },
        "atdPort": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time of departure of the vessel from the exit point",
          "format": "date-time"
        },
        "ataPort": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time of arrival of the vessel at the port",
          "format": "date-time"
        },
        "externalInfo": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiPortVisitInfo"
        }
      },
      "description": "The port visit of the vessel to the port of call"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiPreviousPort": {
      "title": "PreviousPort",
      "required": [
        "id",
        "port",
        "portFacilityVisits"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "minLength": 1,
          "type": "string",
          "description": "The Universal Unique Identifier (UUID) of the previous port"
        },
        "arrival": {
          "type": [
            "string",
            "null"
          ],
          "description": "The arrival of the vessel at the previous port",
          "format": "date-time"
        },
        "departure": {
          "type": [
            "string",
            "null"
          ],
          "description": "The departure of the vessel from the previous port",
          "format": "date-time"
        },
        "port": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "portFacilityVisits": {
          "type": "array",
          "description": "The visit of the vessel to the port facility",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPortFacilityVisit"
          }
        }
      },
      "description": "The port that was visited by the vessel before the port visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiSeaEntry": {
      "title": "SeaEntry",
      "required": [
        "etaSeaBuoy",
        "intention"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPortEntry"
        },
        {
          "type": "object",
          "properties": {
            "baseForPlanning": {
              "type": [
                "string",
                "null"
              ],
              "description": "Location indicated by the agent which should be used as basis for planning",
              "enum": [
                "PILOT_BOARDING_PLACE",
                "FIRST_BERTH"
              ]
            },
            "earliestTimeOfPortEntry": {
              "type": [
                "string",
                "null"
              ],
              "description": "The earliest time it is possible/allowed for the vessel to enter the port",
              "format": "date-time"
            },
            "entryDependency": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiEntryDependency"
            },
            "etaPilotBoardingPlace": {
              "type": [
                "string",
                "null"
              ],
              "description": "The estimated time of arrival of the vessel at the pilot boarding place",
              "format": "date-time"
            },
            "etaSeaBuoy": {
              "type": "string",
              "description": "The estimated time of arrival of the vessel at the sea buoy",
              "format": "date-time"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiSecurityDeclaration": {
      "title": "SecurityDeclaration",
      "required": [
        "approvedSspDocumentOnBoard",
        "companySecurityOfficer",
        "currentSecurityLevel",
        "isscSecurityDocument",
        "securityReportRequired",
        "shipToShipActivities"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "securityReportRequired": {
          "type": "string",
          "description": "Indication whether security must be reported",
          "enum": [
            "YES",
            "NO",
            "EXEMPTION"
          ]
        },
        "companySecurityOfficer": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiCompanySecurityOfficer"
        },
        "currentSecurityLevel": {
          "type": "string",
          "description": "The security level at which the vessel is operating at the time of the security declaration",
          "enum": [
            "SL1",
            "SL2",
            "SL3"
          ]
        },
        "approvedSspDocumentOnBoard": {
          "type": "boolean",
          "description": "Indication whether there is an approved Ship Security Plan on board of the vessel"
        },
        "isscSecurityDocument": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiIsscSecurityDocument"
        },
        "shipToShipActivities": {
          "type": "array",
          "description": "The activity taking place between vessels whether at sea, in inshore waters or within harbour limits while not berthed",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiShipToShipActivity"
          }
        },
        "securityRelatedMatter": {
          "maxLength": 512,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The remarks about any other security related matter"
        },
        "reasonLessPortFacilities": {
          "maxLength": 512,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The reason why less than the required number of port facilities have been mentioned"
        }
      },
      "description": "The declaration of the security information of the port visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiServiceProvider": {
      "title": "ServiceProvider",
      "required": [
        "name",
        "portAuthorityId"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the service provider"
        },
        "portAuthorityId": {
          "minLength": 1,
          "type": "string",
          "description": "The identifier of the service provider, issued by the port authority"
        }
      },
      "description": "The organisation that provides the service"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiShipStoresDeclaration": {
      "title": "ShipStoresDeclaration",
      "required": [
        "items"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "items": {
          "type": "object",
          "additionalProperties": {
            "type": [
              "number",
              "null"
            ],
            "x-additionalPropertiesName": "article"
          },
          "description": "The articles on board of the vessel at arrival at the port of call.<br>Contains a map from article to weight, e.g. {\"SPIRITS\": 10.3, \"BEER\": 5.25}. The weight unit is kilogram.<br>Enum:  `\"SPIRITS\"` `\"BEER\"` `\"WINE\"` `\"OTHER\"` `\"CIGARETTES\"` `\"CIGARS\"` `\"TOBACCO\"` `\"FUEL_OIL\"` `\"LUBRICATING_OIL\"` `\"MEAT\"` `\"NARCOTICS\"` `\"FIRE_ARMS\"`",
          "x-additionalPropertiesName": "article"
        }
      },
      "description": "The declaration of shipstores information of the port visit."
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiShipToShipActivity": {
      "title": "ShipToShipActivity",
      "required": [
        "compliantWithSsp",
        "location",
        "type"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "location": {
          "maxLength": 256,
          "minLength": 0,
          "type": "string",
          "description": "The location where the ship-to-ship activity is executed by the vessel"
        },
        "type": {
          "type": "string",
          "description": "The type of ship-to-ship activity that is executed by the vessel",
          "enum": [
            "PASSENGER_MOVEMENT",
            "TAKING_BUNKERS",
            "CHANGING_CREW",
            "TAKING_SUPPLIES",
            "REPAIR",
            "MISCELLANEOUS",
            "CREW_MOVEMENT",
            "QUARANTINE_INSPECTION",
            "UNLOADING_CARGO",
            "LOADING_CARGO",
            "CARGO_TANK_CLEANING",
            "DE_GASSING",
            "WASTE_DISPOSAL",
            "UNKNOWN"
          ]
        },
        "startDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "The start date of the ship-to-ship activity",
          "format": "partial-date"
        },
        "endDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "The end date of the ship-to-ship activity",
          "format": "partial-date"
        },
        "compliantWithSsp": {
          "type": "boolean",
          "description": "Indication whether the ship-to-ship activity has been executed in compliance with the Ship Security Plan"
        },
        "securityMeasures": {
          "maxLength": 512,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The security measures applied in lieu"
        }
      },
      "description": "The activity taking place between vessels whether at sea, in inshore waters or within harbour limits while not berthed"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiStevedore": {
      "title": "Stevedore",
      "required": [
        "fullName",
        "shortName"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "shortName": {
          "minLength": 1,
          "type": "string",
          "description": "Code issued by Portbase to identify the terminal organisation."
        },
        "fullName": {
          "minLength": 1,
          "type": "string",
          "description": "Full name of the organisation."
        }
      },
      "description": "The stevedore used to contact for automatic terminal planning."
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiStormPilotageInformation": {
      "title": "StormPilotageInformation",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "heliSuitable": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indicator if a pilot can be boarded/unboarded by a helicopter from the vessel"
        },
        "hoisting": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indicator for incoming movement if the pilot is boarded by hoisting or landing"
        },
        "remotePilotage": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indicator if captain agrees with remote pilotage"
        },
        "imoLoaRegistered": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indicator if the captain is imo-loa registered"
        },
        "lowFreeboard": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indicator if the vessel has a low freeboard"
        },
        "remarks": {
          "type": [
            "string",
            "null"
          ],
          "description": "Remarks about boarding"
        }
      },
      "description": "Information required by Port Authority of Rotterdam when weather conditions do not allow normal pilotage"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiTerminal": {
      "title": "Terminal",
      "required": [
        "terminalCode",
        "terminalName"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "terminalName": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the terminal"
        },
        "terminalCode": {
          "minLength": 1,
          "type": "string",
          "description": "The code of the terminal"
        },
        "organisationShortName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The short name of the organisation that contains the terminal"
        },
        "organisationName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the organisation that contains the terminal"
        },
        "deprecatedSwLocationCode": {
          "type": "boolean",
          "description": "True when the terminal will be phased out (but still valid) in the customs N24 location code table"
        }
      },
      "description": "The terminal that is visited by the vessel"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiTugboatService": {
      "title": "TugboatService",
      "required": [
        "required"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "required": {
          "type": "boolean",
          "description": "Indication whether the tugboat service is required"
        },
        "serviceProvider": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiServiceProvider"
        },
        "requiredQuantity": {
          "type": [
            "string",
            "null"
          ],
          "description": "The required quantity of tugboats",
          "enum": [
            "PILOT_DETERMINES",
            "ONE",
            "TWO",
            "THREE",
            "FOUR",
            "FIVE",
            "SIX",
            "SEVEN",
            "EIGHT",
            "NINE"
          ]
        },
        "remarks": {
          "maxLength": 70,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The remarks about the tugboat service"
        }
      },
      "description": "The tugboat service for arrival at the berth or departure from the berth"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiVessel": {
      "title": "Vessel",
      "required": [
        "imoCode",
        "name"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "imoCode": {
          "minLength": 1,
          "type": "string",
          "description": "The unique identification of a vessel according to Lloyds register"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the vessel"
        },
        "radioCallSign": {
          "type": [
            "string",
            "null"
          ],
          "description": "The communication id of the vessel that is used to communicate with the vessel by radio"
        },
        "motUnCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The UN code of the means of transport"
        },
        "motName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the means of transport"
        },
        "summerDeadWeight": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The weight that can be carried by the vessel",
          "format": "int64"
        },
        "maxWidth": {
          "type": [
            "number",
            "null"
          ],
          "description": "The maximum width of the vessel"
        },
        "flagCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the flag that defines the nationality of a vessel as reported to port and/or customs authorities"
        },
        "flagCountryUnCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The UN code of the country that is related to the flag that defines the nationality of a vessel as reported to port and/or customs authorities"
        },
        "netTonnage": {
          "type": [
            "number",
            "null"
          ],
          "description": "The net loading capacity of the vessel, expressed in tons"
        },
        "grossTonnage": {
          "type": [
            "number",
            "null"
          ],
          "description": "The gross loading capacity of the vessel, expressed in tons"
        },
        "registrationPlaceUnloCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The UN locode of the location that is the registration place of the vessel"
        },
        "registrationPlaceName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the location that is the registration place of the vessel"
        },
        "registrationDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "The date the vessel was registered",
          "format": "partial-date"
        },
        "mmsiNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The MMSI number of the vessel"
        },
        "fullLength": {
          "type": [
            "number",
            "null"
          ],
          "description": "The full length of the vessel"
        },
        "emailAddress": {
          "type": [
            "string",
            "null"
          ],
          "description": "The email address of the vessel",
          "format": "email"
        },
        "statCode5": {
          "type": [
            "string",
            "null"
          ],
          "description": "Stat code level 5 of the vessel"
        }
      },
      "description": "The vessel that visits the port of call"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiVisitDeclaration": {
      "title": "VisitDeclaration",
      "required": [
        "arrivalVoyage",
        "departureVoyage",
        "nextPorts",
        "portVisit",
        "previousPorts"
      ],
      "type": "object",
      "properties": {
        "clientReferenceNumber": {
          "maxLength": 35,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The unique identifier for the port visit, issued by the client"
        },
        "vesselEmailAddress": {
          "type": [
            "string",
            "null"
          ],
          "description": "The email address of the vessel",
          "format": "email"
        },
        "vesselPhoneNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The phone number of the vessel"
        },
        "etaFirstEntryEu": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated time of arrival in EU as reported in ENS declaration",
          "format": "date-time"
        },
        "arrivalVoyage": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiVoyage"
        },
        "relatedCrn": {
          "type": [
            "string",
            "null"
          ],
          "description": "CRN of the previous port within the same region where the underlying software sees it as one Port of Call"
        },
        "previousPorts": {
          "maxItems": 2147483647,
          "minItems": 1,
          "type": "array",
          "description": "The port that was visited by the vessel before the port visit",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPreviousPort"
          }
        },
        "portVisit": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPortVisit"
        },
        "departureVoyage": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiVoyage"
        },
        "nextPorts": {
          "maxItems": 2147483647,
          "minItems": 1,
          "type": "array",
          "description": "The port that will be visited by the vessel after the port visit",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiNextPort"
          }
        }
      },
      "description": "The declaration of the port visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiVisit_ApiImportDeclaration": {
      "title": "ImportDeclaration",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "bulkDischarges": {
          "type": "array",
          "description": "Discharged bulk goods reported by terminals",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.BulkDischargeResult"
          }
        },
        "cargoDeclarant": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.authentication.BezoekschipOrganisation"
        },
        "clearedManifestIds": {
          "type": "array",
          "description": "IDs of manifests cleared by customs. ID = port of loading",
          "items": {
            "type": [
              "string",
              "null"
            ],
            "description": "IDs of manifests cleared by customs. ID = port of loading"
          }
        },
        "consignmentDifferences": {
          "type": "array",
          "description": "Consignment differences according to customs",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.ConsignmentDifference"
          }
        },
        "consignments": {
          "type": "array",
          "readOnly": true,
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiVisit_ApiImportDeclaration_ApiConsignment"
          }
        },
        "containers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.ImportContainer"
          }
        },
        "discharges": {
          "type": "array",
          "description": "Discharged containers reported by terminals",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.DischargeResult"
          }
        },
        "fixedConsignments": {
          "type": "array",
          "writeOnly": true,
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.Consignment"
          }
        },
        "inspectionUpdates": {
          "type": "array",
          "description": "Inspection events logged per consignment.",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.inspection.InspectionUpdate"
          }
        },
        "timestamp": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        }
      },
      "description": "List of import declarations by the visit's cargo declarants"
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiVisit_ApiImportDeclaration_ApiConsignment": {
      "title": "Consignment",
      "required": [
        "actualDeparture",
        "consignmentNumber",
        "consignor",
        "goodsItems",
        "portOfDischarge",
        "portOfLoading"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "actualDeparture": {
          "type": "string",
          "format": "date-time"
        },
        "agentVoyageNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        },
        "bulkAuthorisations": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.authentication.BezoekschipOrganisation"
          }
        },
        "consignee": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.Party"
        },
        "consignmentNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": "string"
        },
        "consignor": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.Party"
        },
        "customsProcess": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "SEA_IN_SEA_OUT",
            "MILITARY",
            "EMPTY_RETURN_PACKAGING"
          ]
        },
        "customsStatus": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "EU_COMMUNITY_GOODS",
            "EU_COMMUNITY_GOODS_IN_TRANSHIPMENT",
            "EU_EMPTY_RETURN_PACKAGING",
            "EU_PROCEDURE_T",
            "EU_PROCEDURE_T1",
            "EU_PROCEDURE_T2",
            "EU_PROCEDURE_T2F",
            "GOODS_FROM_EVA_COUNTRIES"
          ]
        },
        "exchangeRate": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.ExchangeRate"
        },
        "goodsItems": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.GoodsItem"
          }
        },
        "movementReferenceNumbers": {
          "uniqueItems": true,
          "type": "array",
          "items": {
            "maxLength": 21,
            "minLength": 0,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "movementType": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "DOOR_TO_DOOR",
            "DOOR_TO_PIER",
            "PIER_TO_DOOR",
            "PIER_TO_PIER"
          ]
        },
        "onCarriageDetails": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.OnCarriageDetails"
        },
        "partShipment": {
          "type": "boolean"
        },
        "partiesToNotify": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.Party"
          }
        },
        "placeOfDelivery": {
          "type": [
            "string",
            "null"
          ]
        },
        "placeOfDestination": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Location"
        },
        "placeOfOrigin": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Location"
        },
        "portOfDischarge": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Port"
        },
        "portOfLoading": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Port"
        },
        "terminal": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.Terminal"
        },
        "warehouseLicense": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.cargo.common.WarehouseLicense"
        },
        "beenAccepted": {
          "type": "boolean",
          "description": "Flag to indicate whether the import manifest containing this consignment has been accepted at some point in time"
        },
        "bulk": {
          "type": "boolean"
        },
        "declarationStatus": {
          "type": [
            "string",
            "null"
          ],
          "description": "Current declaration status of the import manifest containing this consignment",
          "enum": [
            "DECLARED",
            "ACCEPTED",
            "REJECTED"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.ApiVoyage": {
      "title": "Voyage",
      "type": "object",
      "properties": {
        "voyageNumber": {
          "maxLength": 17,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The number of the voyage"
        },
        "carrier": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiCarrier"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.bunkering.ApiBunkerItem": {
      "title": "BunkerItem",
      "required": [
        "product",
        "quantity"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "product": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.bunkering.ApiBunkerProduct"
        },
        "quantity": {
          "minimum": 0,
          "exclusiveMinimum": true,
          "type": "number"
        }
      },
      "description": "A bunker item that contains the product and the quantity"
    },
    "com.portbase.bezoekschip.common.api.external.visit.bunkering.ApiBunkerOperatorInfo": {
      "title": "BunkerOperatorInfo",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "bunkeringId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The id of the bunkering"
        },
        "declarationId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The id of the bunker declaration"
        },
        "cancelled": {
          "type": "boolean",
          "description": "Indicates that the bunker declaration has been cancelled"
        },
        "harbourMasterDeclarationStatus": {
          "type": [
            "string",
            "null"
          ],
          "description": "The status of the bunker declaration as communicated with the harbour master",
          "enum": [
            "DECLARED",
            "ACCEPTED",
            "REJECTED"
          ]
        },
        "customsDeclarationStatus": {
          "type": [
            "string",
            "null"
          ],
          "description": "The status of the bunker declaration as communicated with customs",
          "enum": [
            "DECLARED",
            "ACCEPTED",
            "REJECTED"
          ]
        },
        "operator": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.authentication.BezoekschipOrganisation"
        },
        "serviceVessel": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.bunkering.BunkerVessel"
        },
        "supplier": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.bunkering.ApiBunkerProductSupplier"
        },
        "ets": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated start time of the bunkering",
          "format": "date-time"
        },
        "etc": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated completion time of the bunkering",
          "format": "date-time"
        },
        "atc": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual completion time of the bunkering",
          "format": "date-time"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.bunkering.ApiBunkerItem"
          }
        },
        "sendProToCustoms": {
          "type": "boolean"
        }
      },
      "description": "Information object retrieved from the bunker operator about the bunkering"
    },
    "com.portbase.bezoekschip.common.api.external.visit.bunkering.ApiBunkerProduct": {
      "title": "BunkerProduct",
      "required": [
        "provisionType",
        "type",
        "unitOfMeasure"
      ],
      "type": "object",
      "properties": {
        "type": {
          "minLength": 1,
          "type": "string"
        },
        "provisionType": {
          "type": "string",
          "enum": [
            "fuel",
            "lubricant",
            "other"
          ]
        },
        "unitOfMeasure": {
          "type": "string",
          "enum": [
            "MT",
            "m3",
            "ltr"
          ]
        },
        "density": {
          "type": "integer",
          "format": "int32"
        }
      },
      "description": "A bunker product"
    },
    "com.portbase.bezoekschip.common.api.external.visit.bunkering.ApiBunkerProductSupplier": {
      "title": "BunkerProductSupplier",
      "required": [
        "name"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "minLength": 1,
          "type": "string"
        }
      },
      "description": "A supplier of a bunker product"
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiBlending": {
      "title": "Blending",
      "required": [
        "addedGoodName",
        "berthVisitId",
        "shipToShip",
        "stowages",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHandling"
        },
        {
          "type": "object",
          "properties": {
            "addedGoodName": {
              "minLength": 1,
              "type": "string"
            },
            "keepInert": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "Indication whether this handling will be performed while keeping the tanks inert"
            },
            "shipToShip": {
              "type": "boolean",
              "description": "Indication whether the loading is performed from ship to ship. Only applicable for gas, oil and chemical"
            },
            "stowages": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiStowage"
              }
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiBreakBulk": {
      "title": "BreakBulk",
      "required": [
        "numberOfOuterPackages",
        "position",
        "stowageNumber",
        "transportInLimitedQuantity",
        "type",
        "weight"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiStowage"
        },
        {
          "type": "object",
          "properties": {
            "goodId": {
              "type": [
                "string",
                "null"
              ]
            },
            "innerPackageType": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiPackageType"
            },
            "netExplosiveMass": {
              "type": [
                "number",
                "null"
              ],
              "description": "The net explosive mass of the cargo (kg)"
            },
            "netWeight": {
              "type": [
                "number",
                "null"
              ],
              "description": "The net weight of the break bulk cargo (kg)"
            },
            "numberOfInnerPackages": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32"
            },
            "numberOfOuterPackages": {
              "type": "integer",
              "format": "int32"
            },
            "outerPackageType": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiPackageType"
            },
            "position": {
              "minLength": 1,
              "type": "string"
            },
            "transportInLimitedQuantity": {
              "type": "boolean"
            },
            "weight": {
              "type": "number",
              "description": "The gross weight of the break bulk cargo (kg)"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiChemical": {
      "title": "Chemical",
      "required": [
        "goodData",
        "id",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGood"
        },
        {
          "type": "object",
          "properties": {
            "criticalTemperature": {
              "type": [
                "number",
                "null"
              ],
              "description": "The temperature at which the chemical has a viscosity of 50 mPa/s"
            },
            "flashPoint": {
              "type": [
                "number",
                "null"
              ]
            },
            "goodData": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiChemicalData"
            },
            "heatingOrder": {
              "type": [
                "number",
                "null"
              ],
              "description": "The temperature at which the chemical must be discharged"
            },
            "meltingPoint": {
              "type": [
                "number",
                "null"
              ],
              "description": "The melting point of the chemical"
            },
            "viscosity": {
              "type": [
                "number",
                "null"
              ],
              "description": "The viscosity of the chemical at 20˚C"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiChemicalData": {
      "title": "ChemicalData",
      "required": [
        "name",
        "prewashRequired",
        "stowageType",
        "type"
      ],
      "type": "object",
      "properties": {
        "gdsCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "(deprecated) The code of the dangerous good"
        },
        "goodCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the dangerous good"
        },
        "hazardClass": {
          "type": [
            "string",
            "null"
          ],
          "description": "The IMO hazard class of the chemical"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the chemical"
        },
        "pollutionCategory": {
          "type": [
            "string",
            "null"
          ],
          "description": "The pollution category of the chemical"
        },
        "prewashRequired": {
          "type": "boolean",
          "description": "Indication prewash is required for this chemical"
        },
        "specOpRequirements": {
          "type": [
            "string",
            "null"
          ],
          "description": "Additional information regarding the chemical. For example the indication whether viscosity is applicable and if the melting point must be reported in the shipping document"
        },
        "stowageType": {
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiContainer": {
      "title": "Container",
      "required": [
        "stowageNumber",
        "trailer",
        "transportInLimitedQuantity",
        "type",
        "uncleanTankContainer",
        "weight"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiStowage"
        },
        {
          "type": "object",
          "properties": {
            "goodId": {
              "type": [
                "string",
                "null"
              ]
            },
            "innerPackageType": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiPackageType"
            },
            "netExplosiveMass": {
              "type": [
                "number",
                "null"
              ],
              "description": "The net explosive mass of the cargo (kg)"
            },
            "netWeight": {
              "type": [
                "number",
                "null"
              ],
              "description": "The net weight of the cargo (kg)"
            },
            "numberOfInnerPackages": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32"
            },
            "numberOfOuterPackages": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32"
            },
            "outerPackageType": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiPackageType"
            },
            "position": {
              "type": [
                "string",
                "null"
              ]
            },
            "trailer": {
              "type": "boolean"
            },
            "transportInLimitedQuantity": {
              "type": "boolean"
            },
            "uncleanTankContainer": {
              "type": "boolean"
            },
            "weight": {
              "type": "number",
              "description": "The gross weight of the goods in the container (kg)"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiContainerGood": {
      "title": "ContainerGood",
      "required": [
        "goodData",
        "id",
        "radioactive",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGood"
        },
        {
          "type": "object",
          "properties": {
            "flashPoint": {
              "type": [
                "number",
                "null"
              ],
              "description": "The temperature in degrees Celsius at which a liquid will give off enough flammable vapour to be ignited. According IMDG Code DG Class 3 or subsidiary risk of Class 3"
            },
            "goodData": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiContainerGoodData"
            },
            "radioactive": {
              "type": "boolean"
            },
            "radioactivity": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiRadioactivity"
            },
            "segregationInformation": {
              "type": [
                "string",
                "null"
              ],
              "description": "Specified segregation information"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiContainerGoodData": {
      "title": "ContainerGoodData",
      "required": [
        "name",
        "stowageType",
        "type",
        "unCode"
      ],
      "type": "object",
      "properties": {
        "emsFireCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the emergency response procedure for vessels carrying dangerous goods in case of fire"
        },
        "emsSpillageCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the emergency response procedures for vessels carrying dangerous goods in case of spillage"
        },
        "gdsCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "(deprecated) The code of the dangerous good"
        },
        "goodCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the dangerous good"
        },
        "hazardClass": {
          "type": [
            "string",
            "null"
          ],
          "description": "The IMO hazard class of the container good"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the container good"
        },
        "packingGroup": {
          "type": [
            "string",
            "null"
          ],
          "description": "Indication of the level of danger",
          "enum": [
            "MINOR_DANGER",
            "MEDIUM_DANGER",
            "GREAT_DANGER"
          ]
        },
        "properties": {
          "type": [
            "string",
            "null"
          ],
          "description": "Extra information about the container good"
        },
        "segregationGroup": {
          "type": [
            "string",
            "null"
          ],
          "description": "The segregation group of the container good"
        },
        "subsidiaryRisk": {
          "type": [
            "string",
            "null"
          ],
          "description": "Any risks in addition to the class to which dangerous goods are assigned; and which is determined by a requirement to have a subsidiary risk."
        },
        "unCode": {
          "minLength": 1,
          "type": "string",
          "description": "The UN code of the container good"
        },
        "stowageType": {
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiDangerousGoods": {
      "title": "DangerousGoods",
      "required": [
        "goods",
        "handlings",
        "sender",
        "stowageAtArrival"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "goods": {
          "type": "array",
          "description": "Goods arriving or loaded on the vessel that visits the port of call",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGood"
          }
        },
        "stowageAtArrival": {
          "type": "array",
          "description": "The stowage of the vessel at arrival at the port of call",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiStowage"
          }
        },
        "handlings": {
          "type": "array",
          "description": "The handlings that are performed on the vessel during the port visit",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHandling"
          }
        },
        "sender": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.common.ApiBezoekschipOrganisation"
        }
      },
      "description": "The dangerous goods information of the port visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiDischarge": {
      "title": "Discharge",
      "required": [
        "berthVisitId",
        "shipToShip",
        "stowages",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHandling"
        },
        {
          "type": "object",
          "properties": {
            "keepInert": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "Indication whether this handling will be performed while keeping the tanks inert"
            },
            "shipToShip": {
              "type": "boolean",
              "description": "Indication whether the discharge is performed from ship to ship. Only applicable for gas, oil and chemical"
            },
            "stowages": {
              "minItems": 1,
              "type": "array",
              "items": {
                "$ref": "#/$defs/com.portbase.bezoekschip.common.api.dangerousgoods.common.DischargedStowage"
              }
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiFluidData": {
      "title": "FluidData",
      "required": [
        "name",
        "stowageType",
        "type"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "gdsCode": {
          "type": [
            "string",
            "null"
          ]
        },
        "goodCode": {
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "minLength": 1,
          "type": "string"
        },
        "stowageType": {
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiFumigation": {
      "title": "Fumigation",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "fumigant": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the fumigant",
          "enum": [
            "AMMONIA",
            "CO",
            "CO2",
            "CHLOROPICRIN",
            "FORMALDEHYDE",
            "METHYLBROMIDE",
            "PHOSPHINE",
            "SULFURYL_FLUORIDE",
            "N2",
            "ALUMINIUM_PHOSPHIDE",
            "MAGNESIUM_PHOSPHIDE",
            "HEAT_TREATMENT"
          ]
        },
        "fumigationTimestamp": {
          "type": [
            "string",
            "null"
          ],
          "description": "Date and time of fumigation of dangerous goods",
          "format": "date-time"
        },
        "locationOfFumigation": {
          "type": [
            "string",
            "null"
          ],
          "description": "The berth where the dangerous goods will be fumigated"
        },
        "fumigantApplication": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the fumigation method",
          "enum": [
            "SLEEVES",
            "TABLETS"
          ]
        },
        "sleevesUsed": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The number of the sleeves used",
          "format": "int32"
        },
        "sleevesRemoved": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The number of the sleeves removed",
          "format": "int32"
        },
        "defumigatorHiredBy": {
          "type": [
            "string",
            "null"
          ],
          "description": "Company or cargo owner/representative responsible for hiring defumigator company"
        },
        "defumigatorHirerPhone": {
          "type": [
            "string",
            "null"
          ],
          "description": "Phone number of the company or cargo owner/representative responsible for hiring the defumigator company"
        },
        "defumigatorCompany": {
          "type": [
            "string",
            "null"
          ],
          "description": "Company to apply the defumigation"
        },
        "defumigatorCompanyDetails": {
          "type": [
            "string",
            "null"
          ],
          "description": "Company name defumigator and contact details"
        },
        "fumigationStevedore": {
          "type": [
            "string",
            "null"
          ],
          "description": "The company appointed to carry out the unloading and mucking"
        },
        "stevedoreCompanyDetails": {
          "type": [
            "string",
            "null"
          ],
          "description": "Stevedore company details"
        },
        "measurementEquipment": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indication whether measuring equipment is available"
        },
        "placeOfFumigation": {
          "type": [
            "string",
            "null"
          ],
          "description": "The berth where the dangerous goods will be fumigated"
        },
        "amount": {
          "type": [
            "number",
            "null"
          ],
          "description": "The amount of fumigant in parts per million (PPM)"
        },
        "ventilated": {
          "type": [
            "boolean",
            "null"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGas": {
      "title": "Gas",
      "required": [
        "goodData",
        "id",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGood"
        },
        {
          "type": "object",
          "properties": {
            "flashPoint": {
              "type": [
                "number",
                "null"
              ]
            },
            "goodData": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGasData"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGasData": {
      "title": "GasData",
      "required": [
        "name",
        "stowageType",
        "type"
      ],
      "type": "object",
      "properties": {
        "gdsCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "(deprecated) The code of the dangerous good"
        },
        "goodCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the dangerous good"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the gas"
        },
        "unCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The UN code of the gas"
        },
        "stowageType": {
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGood": {
      "title": "Good",
      "required": [
        "goodData",
        "id",
        "type"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "goodData": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGoodData"
        },
        "id": {
          "minLength": 1,
          "type": "string"
        },
        "remarks": {
          "type": [
            "string",
            "null"
          ],
          "description": "Any remarks regarding the good"
        },
        "type": {
          "minLength": 1,
          "type": "string"
        }
      },
      "description": "Goods arriving or loaded on the vessel that visits the port of call",
      "oneOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiContainerGood"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiSolid"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiOil"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGas"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiChemical"
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGoodData": {
      "title": "GoodData",
      "required": [
        "name",
        "stowageType",
        "type"
      ],
      "type": "object",
      "properties": {
        "gdsCode": {
          "type": [
            "string",
            "null"
          ]
        },
        "goodCode": {
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "minLength": 1,
          "type": "string"
        },
        "stowageType": {
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "minLength": 1,
          "type": "string"
        }
      },
      "oneOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiContainerGoodData"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiSolidData"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiOilData"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGasData"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiChemicalData"
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHandling": {
      "title": "Handling",
      "required": [
        "berthVisitId",
        "type"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "berthVisitId": {
          "minLength": 1,
          "type": "string",
          "description": "The berth where the handling is performed"
        },
        "type": {
          "minLength": 1,
          "type": "string"
        }
      },
      "description": "The handlings that are performed on the vessel during the port visit",
      "oneOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiDischarge"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiWashing"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiVentilation"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiInerting"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiLoading"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiBlending"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiRestow"
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHold": {
      "title": "Hold",
      "required": [
        "fumigated",
        "stowageNumber",
        "type",
        "weight"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiStowage"
        },
        {
          "type": "object",
          "properties": {
            "fumigated": {
              "type": "boolean"
            },
            "fumigation": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiFumigation"
            },
            "goodId": {
              "type": [
                "string",
                "null"
              ]
            },
            "weight": {
              "type": "number",
              "description": "The gross weight of the solid bulk in the hold (TNE)"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiInerting": {
      "title": "Inerting",
      "required": [
        "berthVisitId",
        "tankNumbers",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHandling"
        },
        {
          "type": "object",
          "properties": {
            "tankNumbers": {
              "minItems": 1,
              "type": "array",
              "description": "The identifiers of tanks selected for inerting",
              "items": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The identifiers of tanks selected for inerting"
              }
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiLoading": {
      "title": "Loading",
      "required": [
        "berthVisitId",
        "shipToShip",
        "stowages",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHandling"
        },
        {
          "type": "object",
          "properties": {
            "keepInert": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "Indication whether this handling will be performed while keeping the tanks inert"
            },
            "shipToShip": {
              "type": "boolean",
              "description": "Indication whether the loading is performed from ship to ship. Only applicable for gas, oil and chemical"
            },
            "stowages": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiStowage"
              }
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiOil": {
      "title": "Oil",
      "required": [
        "goodData",
        "id",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGood"
        },
        {
          "type": "object",
          "properties": {
            "crudeOilWashing": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "flashPoint": {
              "type": [
                "number",
                "null"
              ]
            },
            "goodData": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiOilData"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiOilData": {
      "title": "OilData",
      "required": [
        "name",
        "stowageType",
        "type"
      ],
      "type": "object",
      "properties": {
        "gdsCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "(deprecated) The code of the dangerous good"
        },
        "goodCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The port authorities code of the dangerous good"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the dangerous good"
        },
        "stowageType": {
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiPackageType": {
      "title": "PackageType",
      "required": [
        "bulk",
        "code",
        "name"
      ],
      "type": "object",
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string"
        },
        "name": {
          "minLength": 1,
          "type": "string"
        },
        "bulk": {
          "type": "boolean"
        }
      },
      "description": "Type of packaging of the goods to be checked by customs"
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiRadioactivity": {
      "title": "Radioactivity",
      "required": [
        "radionuclide"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "radionuclide": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiRadionuclide"
        },
        "packageCategory": {
          "type": [
            "string",
            "null"
          ],
          "description": "Package category of radioactivity",
          "enum": [
            "CATEGORY_1",
            "CATEGORY_2",
            "CATEGORY_3"
          ]
        },
        "identification": {
          "type": [
            "string",
            "null"
          ],
          "description": "Radioactive identification"
        },
        "level": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Radioactivity level in Bq",
          "format": "int64"
        },
        "transportIndex": {
          "type": [
            "string",
            "null"
          ],
          "description": "Amount of radiation at the package",
          "enum": [
            "II",
            "III"
          ]
        },
        "criticalSafetyIndex": {
          "type": [
            "number",
            "null"
          ],
          "description": "Amount of radiation at 1 meter from the package"
        },
        "licenseNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "License number"
        },
        "remarks": {
          "type": [
            "string",
            "null"
          ],
          "description": "Additional information on the radioactive goods"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiRadionuclide": {
      "title": "Radionuclide",
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Class or division of radionuclide"
        }
      },
      "description": "Class or division of radionuclide"
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiRestow": {
      "title": "Restow",
      "required": [
        "berthVisitId",
        "restowedStowage",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHandling"
        },
        {
          "type": "object",
          "properties": {
            "restowedStowage": {
              "minItems": 1,
              "type": "array",
              "description": "The stowage numbers",
              "items": {
                "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiRestowedStowage"
              }
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiRestowedStowage": {
      "title": "RestowedStowage",
      "required": [
        "newPosition",
        "stowageNumber",
        "type"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "type": {
          "minLength": 1,
          "type": "string",
          "description": "Type of stowage to restow, i.e. tank, hold, container or breakBulk"
        },
        "stowageNumber": {
          "minLength": 1,
          "type": "string",
          "description": "Identifier of the stowage that is moved at the berth"
        },
        "newPosition": {
          "minLength": 1,
          "type": "string",
          "description": "The new position of the stowage that is moved at the berth"
        }
      },
      "description": "The stowage numbers"
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiSolid": {
      "title": "Solid",
      "required": [
        "goodData",
        "id",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiGood"
        },
        {
          "type": "object",
          "properties": {
            "goodData": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiSolidData"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiSolidData": {
      "title": "SolidData",
      "required": [
        "name",
        "stowageType",
        "type"
      ],
      "type": "object",
      "properties": {
        "gdsCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "(deprecated) The code of the dangerous good"
        },
        "goodCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the dangerous good"
        },
        "hazardClass": {
          "type": [
            "string",
            "null"
          ],
          "description": "The IMO hazard class of the dangerous good"
        },
        "name": {
          "minLength": 1,
          "type": "string",
          "description": "The name of the dangerous good"
        },
        "unCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The UN code of the dangerous good"
        },
        "stowageType": {
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiStowage": {
      "title": "Stowage",
      "required": [
        "stowageNumber",
        "type",
        "weight"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "portOfDischarge": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "portOfLoading": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "stowageNumber": {
          "minLength": 1,
          "type": "string",
          "description": "The unique identifier of the stowage. For tank and hold this is the stowage position. For container this is the container number."
        },
        "type": {
          "minLength": 1,
          "type": "string"
        },
        "weight": {
          "type": "number"
        }
      },
      "oneOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiTank"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHold"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiContainer"
        },
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiBreakBulk"
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiTank": {
      "title": "Tank",
      "required": [
        "stowageNumber",
        "tankStatus",
        "type",
        "weight"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiStowage"
        },
        {
          "type": "object",
          "properties": {
            "goodId": {
              "type": [
                "string",
                "null"
              ]
            },
            "previousGood": {
              "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiFluidData"
            },
            "tankStatus": {
              "type": "string",
              "enum": [
                "NOT_EMPTY",
                "RESIDUE",
                "EMPTY_NOT_GAS_FREE",
                "EMPTY",
                "NOT_EMPTY_INERT",
                "RESIDUE_INERT",
                "EMPTY_INERT_NOT_GAS_FREE",
                "EMPTY_INERT"
              ]
            },
            "weight": {
              "type": "number",
              "description": "The gross weight of the liquid in the tank (TNE)"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiVentilation": {
      "title": "Ventilation",
      "required": [
        "berthVisitId",
        "tankNumbers",
        "timestamp",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHandling"
        },
        {
          "type": "object",
          "properties": {
            "remarks": {
              "type": [
                "string",
                "null"
              ],
              "description": "The remarks about the ventilation of the tank at the berth"
            },
            "tankNumbers": {
              "type": "array",
              "description": "The identifiers of tanks selected for ventilation",
              "items": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The identifiers of tanks selected for ventilation"
              }
            },
            "timestamp": {
              "type": "string",
              "description": "The date and time when the ventilation of the tank is performed at the berth",
              "format": "date-time"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiWashing": {
      "title": "Washing",
      "required": [
        "berthVisitId",
        "mediumOrCommercialWash",
        "tankNumbers",
        "timestamp",
        "type"
      ],
      "type": "object",
      "allOf": [
        {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.dangerousgoods.ApiHandling"
        },
        {
          "type": "object",
          "properties": {
            "mediumOrCommercialWash": {
              "type": "boolean",
              "description": "Indicates whether or not the washing procedure was a medium/commercial wash or not. If true AND otherDestination is true, the washing is assumed to have concluded."
            },
            "otherCargoTank": {
              "type": [
                "string",
                "null"
              ],
              "description": "Indicates the tank to which has been pumped over to after a medium or commercial wash"
            },
            "otherDestination": {
              "type": [
                "string",
                "null"
              ],
              "description": "Indicates whether or not the contents of the tank have been removed from the tank to another destination after washing. If true AND mediumOrCommercialWash is true, the washing is assumed to have concluded.",
              "enum": [
                "SAME_CARGO_TANK",
                "OTHER_CARGO_TANK",
                "OFF_BOARD",
                "SLOP_TANK"
              ]
            },
            "remarks": {
              "type": [
                "string",
                "null"
              ],
              "description": "The remarks about the washing of the tank at the berth"
            },
            "tankNumbers": {
              "minItems": 1,
              "type": "array",
              "description": "The identifiers of tanks selected for washing",
              "items": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The identifiers of tanks selected for washing"
              }
            },
            "timestamp": {
              "type": "string",
              "description": "The date and time when the washing of the tank is performed at the berth",
              "format": "date-time"
            },
            "ventilated": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "Indicates whether or not the tank was ventilated after a medium or commercial wash"
            }
          }
        }
      ]
    },
    "com.portbase.bezoekschip.common.api.external.visit.health.ApiAdditionalInfo": {
      "title": "AdditionalInfo",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "date": {
          "type": [
            "string",
            "null"
          ],
          "format": "partial-date"
        },
        "type": {
          "type": [
            "string",
            "null"
          ]
        },
        "issuedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "port": {
          "type": [
            "string",
            "null"
          ]
        },
        "joinedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "place": {
          "type": [
            "string",
            "null"
          ]
        },
        "totalNumberOfDeaths": {
          "maximum": 9999,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "numberOfIllPeople": {
          "maximum": 9999,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.health.ApiGeneralQuestions": {
      "title": "GeneralQuestions",
      "required": [
        "hasSanitationCertificateOnBoard",
        "reinspectionRequired",
        "vesselVisitedAffectedArea"
      ],
      "type": "object",
      "properties": {
        "hasSanitationCertificateOnBoard": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "vesselVisitedAffectedArea": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "reinspectionRequired": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.health.ApiHealthDeclaration": {
      "title": "HealthDeclaration",
      "required": [
        "arrivingFrom",
        "generalQuestions",
        "healthQuestions",
        "sailingTo",
        "vesselMaster"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "vesselMaster": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiVesselContact"
        },
        "vesselSurgeon": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiVesselContact"
        },
        "additionalContact": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiVesselContact"
        },
        "arrivingFrom": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "sailingTo": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "portsFromCommencementOfVoyage": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiPortOfVoyage"
          }
        },
        "healthQuestions": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiHealthQuestions"
        },
        "generalQuestions": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiGeneralQuestions"
        },
        "numberOfCrew": {
          "maximum": 9999,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "numberOfPassengers": {
          "maximum": 99999,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "recoveredIllOrDeadPeople": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiRecoveredIllOrDeadPerson"
          }
        },
        "peopleJoinedVessel": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiPersonJoinedVessel"
          }
        },
        "remarks": {
          "maxLength": 1000,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        }
      },
      "description": "The summary of the Maritime Health Declaration information of the port visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.health.ApiHealthQuestions": {
      "title": "HealthQuestions",
      "required": [
        "awareOfConditionOnBoardWhichMayLeadToInfection",
        "caseOfInfectiousDiseaseOnBoard",
        "illPassengersOnBoardIsGreaterThanNormal",
        "illPersonOnBoardNow",
        "medicalPractitionerConsulted",
        "nonAccidentalDeathOfPersonOnBoard",
        "sanitaryMeasuresApplied",
        "sickAnimalsOnBoard",
        "stowawaysOnBoard"
      ],
      "type": "object",
      "properties": {
        "nonAccidentalDeathOfPersonOnBoard": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "caseOfInfectiousDiseaseOnBoard": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "illPassengersOnBoardIsGreaterThanNormal": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "illPersonOnBoardNow": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "awareOfConditionOnBoardWhichMayLeadToInfection": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "sanitaryMeasuresApplied": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "stowawaysOnBoard": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "sickAnimalsOnBoard": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        },
        "medicalPractitionerConsulted": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.health.ApiPersonJoinedVessel": {
      "title": "PersonJoinedVessel",
      "required": [
        "name"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "maxLength": 150,
          "minLength": 0,
          "type": "string"
        },
        "joinedVesselAtPorts": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
          }
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.health.ApiPortOfVoyage": {
      "title": "PortOfVoyage",
      "required": [
        "departureDate",
        "port"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "port": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "departureDate": {
          "type": "string",
          "format": "partial-date"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.health.ApiQuestion": {
      "title": "Question",
      "required": [
        "answer"
      ],
      "type": "object",
      "properties": {
        "answer": {
          "type": "boolean"
        },
        "additionalInfo": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.health.ApiAdditionalInfo"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.health.ApiRecoveredIllOrDeadPerson": {
      "title": "RecoveredIllOrDeadPerson",
      "required": [
        "dateOfBirth",
        "dateOnsetOfSymptoms",
        "disposalOfCase",
        "gender",
        "jobTitleOrRank",
        "joinedVesselAtDate",
        "joinedVesselAtPort",
        "name",
        "nationality",
        "natureOfIllness",
        "reportedToMedicalOfficer",
        "treatmentGiven"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "maxLength": 70,
          "minLength": 0,
          "type": "string"
        },
        "gender": {
          "type": "string",
          "enum": [
            "NOT_KNOWN",
            "MALE",
            "FEMALE"
          ]
        },
        "nationality": {
          "minLength": 1,
          "type": "string"
        },
        "dateOfBirth": {
          "type": "string",
          "format": "partial-date"
        },
        "jobTitleOrRank": {
          "minLength": 1,
          "type": "string"
        },
        "joinedVesselAtPort": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "joinedVesselAtDate": {
          "type": "string",
          "format": "partial-date"
        },
        "natureOfIllness": {
          "minLength": 1,
          "type": "string"
        },
        "dateOnsetOfSymptoms": {
          "type": "string",
          "format": "partial-date"
        },
        "reportedToMedicalOfficer": {
          "type": "boolean"
        },
        "disposalOfCase": {
          "minLength": 1,
          "type": "string"
        },
        "treatmentGiven": {
          "minLength": 1,
          "type": "string"
        },
        "comments": {
          "maxLength": 150,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.health.ApiVesselContact": {
      "title": "VesselContact",
      "required": [
        "date",
        "email",
        "name",
        "phoneNumber",
        "truthfullyDeclared"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "minLength": 1,
          "type": "string"
        },
        "email": {
          "minLength": 1,
          "type": "string"
        },
        "phoneNumber": {
          "minLength": 1,
          "type": "string"
        },
        "truthfullyDeclared": {
          "type": "boolean"
        },
        "date": {
          "type": "string",
          "format": "partial-date"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.info.ApiBerthVisitInfo": {
      "title": "BerthVisitInfo",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "carrierInfo": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiCarrierInfo"
        },
        "harbourMasterInfo": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiHarbourMasterInfo"
        },
        "pilotServiceInfo": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiPilotServiceInfo"
        },
        "terminalInfo": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.terminal.ApiTerminalInfo"
        },
        "bunkerOperatorInfos": {
          "type": "array",
          "description": "Information supplied by bunker operators terminal",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.bunkering.ApiBunkerOperatorInfo"
          }
        }
      },
      "description": "The external info of this berth visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.info.ApiCarrierInfo": {
      "title": "CarrierInfo",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "eta": {
          "type": [
            "string",
            "null"
          ],
          "description": "ETA as given by the carrier via cargo import declarations",
          "format": "date-time"
        }
      },
      "description": "Information supplied by the carrier"
    },
    "com.portbase.bezoekschip.common.api.external.visit.info.ApiHarbourMasterInfo": {
      "title": "HarbourMasterInfo",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "ata": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time of arrival of the vessel at the berth",
          "format": "date-time"
        },
        "atd": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time of departure of the vessel from the berth",
          "format": "date-time"
        },
        "orderStatus": {
          "type": [
            "string",
            "null"
          ],
          "description": "Status of the order of nautical service providers (if any)",
          "enum": [
            "CONFIRMED",
            "REJECTED",
            "CONFIRMED_NEW_PROPOSAL",
            "ETA_CHANGED",
            "ETD_CHANGED",
            "ORDERED",
            "REEVALUATED",
            "CANCELLED"
          ]
        },
        "rejectionReason": {
          "type": [
            "string",
            "null"
          ],
          "description": "In case the order for nautical service providers is rejected this contains the reason of the rejection"
        },
        "eta": {
          "type": [
            "string",
            "null"
          ],
          "description": "ETA as confirmed by the port authority and nautical service providers",
          "format": "date-time"
        },
        "etd": {
          "type": [
            "string",
            "null"
          ],
          "description": "ETD as confirmed by the port authority and nautical service providers",
          "format": "date-time"
        },
        "pilotOnBoard": {
          "type": [
            "string",
            "null"
          ],
          "description": "Timestamp at which the pilot boarded the vessel",
          "format": "date-time"
        },
        "remarks": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiHarbourMasterRemarks"
        },
        "movementOnHold": {
          "type": "boolean",
          "description": "Indicates if the movement has been put on hold"
        },
        "tidalWindowStatus": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiTidalWindowStatus"
        },
        "pilotFromDistance": {
          "type": [
            "string",
            "null"
          ],
          "description": "Shore based pilotage information for the movement",
          "enum": [
            "ACCEPTED",
            "NOT_ACCEPTED",
            "REQUESTED_BY_SHIP_OR_PILOT",
            "REQUESTED_BY_WATERCLERK"
          ]
        },
        "vesselDraught": {
          "minimum": 0,
          "exclusiveMinimum": false,
          "type": [
            "number",
            "null"
          ],
          "description": "The movement draught of the vessel in meters as reported by the port authority"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.info.ApiHarbourMasterRemarks": {
      "title": "HarbourMasterRemarks",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "text": {
          "type": [
            "string",
            "null"
          ],
          "description": "Textual representation of remarks given by the harbour master"
        },
        "timestamp": {
          "type": [
            "string",
            "null"
          ],
          "description": "Timestamp at which remarks were last updated",
          "format": "date-time"
        }
      },
      "description": "Remarks given by the harbour master relating to the movement"
    },
    "com.portbase.bezoekschip.common.api.external.visit.info.ApiPilotServiceInfo": {
      "title": "PilotServiceInfo",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "firstLineSecured": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time the first line was secured (not applicable to outgoing movements)",
          "format": "date-time"
        },
        "lastLineSecured": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time the last line was secured (not applicable to outgoing movements)",
          "format": "date-time"
        },
        "firstLineReleased": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time the first line was released (not applicable to incoming movements)",
          "format": "date-time"
        },
        "lastLineReleased": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time the last line was released (not applicable to incoming movements)",
          "format": "date-time"
        },
        "pilotEmbarkedActual": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time the pilot embarked",
          "format": "date-time"
        },
        "pilotDisembarkedActual": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time the pilot disembarked",
          "format": "date-time"
        },
        "estimatedgangwaydown": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated time at which the gangway is laid down (not applicable to outgoing movements)",
          "format": "date-time"
        }
      },
      "description": "Information supplied by the pilot service"
    },
    "com.portbase.bezoekschip.common.api.external.visit.info.ApiPortVisitInfo": {
      "title": "PortVisitInfo",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "previousPortHarbourMasterInfos": {
          "type": "array",
          "description": "Information supplied by the harbour masters of the previous ports",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiPreviousPortHarbourMasterInfo"
          }
        },
        "passages": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.portcalloptimization.ApiPassage"
          }
        },
        "incomingMovementHarbourMasterInfo": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiHarbourMasterInfo"
        },
        "incomingTidalWindowStatus": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiTidalWindowStatus"
        }
      },
      "description": "external info"
    },
    "com.portbase.bezoekschip.common.api.external.visit.info.ApiPreviousPortHarbourMasterInfo": {
      "title": "PreviousPortHarbourMasterInfo",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "etaPbp": {
          "type": [
            "string",
            "null"
          ],
          "description": "ETA of the vessel at the PBP",
          "format": "date-time"
        },
        "ptaPbp": {
          "type": [
            "string",
            "null"
          ],
          "description": "EPTA of the vessel at the PBP",
          "format": "date-time"
        },
        "ataPbp": {
          "type": [
            "string",
            "null"
          ],
          "description": "ATA of the vessel at the PBP",
          "format": "date-time"
        },
        "etdLastBerth": {
          "type": [
            "string",
            "null"
          ],
          "description": "ETD of the vessel from the Berth",
          "format": "date-time"
        },
        "ptdLastBerth": {
          "type": [
            "string",
            "null"
          ],
          "description": "PTD of the vessel from the Berth",
          "format": "date-time"
        },
        "atdLastBerth": {
          "type": [
            "string",
            "null"
          ],
          "description": "ATD of the vessel from the Berth",
          "format": "date-time"
        },
        "portUnloCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "For identification of which port the information is from."
        },
        "shipStayReferenceNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "Port call identifier of the vessel call at the previous vessel."
        },
        "vesselImoNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "IMO number of vessel"
        },
        "cancelled": {
          "type": "boolean",
          "description": "Has Previous Port Visit been cancelled"
        }
      },
      "description": "Information supplied by the harbour masters of the previous ports"
    },
    "com.portbase.bezoekschip.common.api.external.visit.info.ApiTidalWindow": {
      "title": "TidalWindow",
      "required": [
        "end",
        "start"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "start": {
          "type": "string",
          "format": "date-time"
        },
        "end": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.info.ApiTidalWindowStatus": {
      "title": "TidalWindowStatus",
      "required": [
        "tidalWindowType"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "tidalWindows": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.info.ApiTidalWindow"
          }
        },
        "tidalWindowType": {
          "type": "string",
          "enum": [
            "ASTRO",
            "ACTUAL"
          ]
        },
        "tidalShip": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "remarks": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.portcalloptimization.ApiPassage": {
      "title": "Passage",
      "required": [
        "ata",
        "code",
        "registrationTime",
        "source"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "source": {
          "minLength": 1,
          "type": "string"
        },
        "ata": {
          "type": "string",
          "format": "date-time"
        },
        "code": {
          "type": "string",
          "enum": [
            "PPA",
            "LEFT_PREVIOUS_PORT"
          ]
        },
        "registrationTime": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.terminal.ApiTerminalInfo": {
      "title": "TerminalInfo",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "rta": {
          "type": [
            "string",
            "null"
          ],
          "description": "The requested time of 1st line secured",
          "format": "date-time"
        },
        "etc": {
          "type": [
            "string",
            "null"
          ],
          "description": "The estimated time of 1st line released",
          "format": "date-time"
        },
        "ata": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time of arrival at the quay",
          "format": "date-time"
        },
        "atd": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time of departure at the quay",
          "format": "date-time"
        },
        "expectedFirstLift": {
          "type": [
            "string",
            "null"
          ],
          "description": "The expected time the first cargo handling is executed",
          "format": "date-time"
        },
        "firstLift": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time the first cargo handling is executed",
          "format": "date-time"
        },
        "expectedLastLift": {
          "type": [
            "string",
            "null"
          ],
          "description": "The expected time the last cargo handling is executed",
          "format": "date-time"
        },
        "lastLift": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual time the last cargo handling is executed",
          "format": "date-time"
        },
        "cargoOpeningTime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual starting time the cargo can be delivered at the terminal",
          "format": "date-time"
        },
        "cargoClosingTime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The actual ending time the cargo can be delivered at the terminal",
          "format": "date-time"
        },
        "mooringOrientation": {
          "type": [
            "string",
            "null"
          ],
          "description": "The mooring information of the vessel at the terminal",
          "enum": [
            "PORTSIDE",
            "STARBOARD"
          ]
        },
        "quay": {
          "type": [
            "string",
            "null"
          ],
          "description": "The quay at which the vessel will moor"
        },
        "bollardAft": {
          "minimum": 0,
          "type": [
            "number",
            "null"
          ],
          "description": "The bollard at the back side of the ship that will be moored on"
        },
        "bollardFore": {
          "minimum": 0,
          "type": [
            "number",
            "null"
          ],
          "description": "The bollard at the front side of the ship that will be moored on"
        },
        "expectedLoad": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The amount of cargo that is expected to be loaded on the vessel",
          "format": "int32"
        },
        "expectedDischarge": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The amount of cargo that is expected to be discharged from the vessel",
          "format": "int32"
        },
        "expectedRestow": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The amount of cargo that is expected to be restowed onto the vessel",
          "format": "int32"
        },
        "vessel": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.terminal.ApiTerminalVessel"
        },
        "phase": {
          "type": [
            "string",
            "null"
          ],
          "description": "The phase in which this terminal visit is",
          "enum": [
            "CREATED",
            "INBOUND",
            "ARRIVED",
            "WORKING",
            "COMPLETE",
            "DEPARTED",
            "CLOSED",
            "CANCELLED"
          ]
        },
        "carrier": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.terminal.ApiTerminalVisitCarrier"
        }
      },
      "description": "Information object retrieved from the terminal about a visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.terminal.ApiTerminalVessel": {
      "title": "TerminalVessel",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "imoCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The unique identification of a vessel according to Lloyds register"
        },
        "eniCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "European Number of Identification"
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the vessel"
        },
        "radioCallSign": {
          "type": [
            "string",
            "null"
          ],
          "description": "The communication id of the vessel that is used to communicate with the vessel by radio"
        },
        "vesselType": {
          "type": [
            "string",
            "null"
          ],
          "description": "The type of vessel",
          "enum": [
            "DEEP_SEA",
            "BARGE",
            "FEEDER"
          ]
        }
      },
      "description": "Vessel that visits a terminal"
    },
    "com.portbase.bezoekschip.common.api.external.visit.terminal.ApiTerminalVisitCarrier": {
      "title": "TerminalVisitCarrier",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "identification": {
          "type": [
            "string",
            "null"
          ],
          "description": "The identification of the carrier as known by the terminal"
        },
        "scacCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The SCAC code of the carrier"
        },
        "companyName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the carrier company"
        },
        "arrivalVoyageNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The number of the voyage to this terminal"
        },
        "departureVoyageNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The number of the voyage from this terminal"
        }
      },
      "description": "The carrier information available at the terminal"
    },
    "com.portbase.bezoekschip.common.api.external.visit.transhipment.ApiTranshipment": {
      "title": "Transhipment",
      "required": [
        "consignmentNumber",
        "renMrn"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "consignmentNumber": {
          "type": "string"
        },
        "renMrn": {
          "type": "string"
        },
        "cancelled": {
          "type": "boolean"
        }
      },
      "description": "Map of transhipments by consignment number"
    },
    "com.portbase.bezoekschip.common.api.external.visit.waste.ApiHaul": {
      "title": "Haul",
      "required": [
        "id",
        "locationName",
        "status",
        "wasteItems"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "declarationId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The id of the waste collection declaration"
        },
        "status": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.waste.ApiHaulStatus"
        },
        "sformNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "The number on the S-Form."
        },
        "remarks": {
          "type": [
            "string",
            "null"
          ]
        },
        "dateTimeStart": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "dateTimeEnd": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "locationName": {
          "type": "string"
        },
        "fixedFeeIndirect": {
          "type": [
            "number",
            "null"
          ]
        },
        "wasteItems": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteCollectedItem"
          }
        }
      },
      "description": "Haul is a single visit of a waste collector to collect waste."
    },
    "com.portbase.bezoekschip.common.api.external.visit.waste.ApiHaulStatus": {
      "title": "HaulStatusDates",
      "type": "object",
      "properties": {
        "eopmCreated": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "eovmCreated": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "eovmfCreated": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        }
      },
      "description": "Contains the status of the process of sending the eopm/eovm/eovmf by filling the time when an eopm, eovm or eovm has been processed."
    },
    "com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteCollectedItem": {
      "title": "CollectionWasteItem",
      "required": [
        "wasteMaterial"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "wasteMaterial": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.visit.WasteMaterial"
        },
        "specification": {
          "type": [
            "string",
            "null"
          ],
          "description": "The specific name in english of the material that has been entered by the collector."
        },
        "quantity": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteQuantity"
        },
        "receptionFacility": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of facility that receives the material."
        },
        "amountDirect": {
          "type": [
            "number",
            "null"
          ]
        },
        "amountIndirect": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteCollection": {
      "title": "WasteCollection",
      "required": [
        "collector",
        "hauls"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "collector": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteCollector"
        },
        "hauls": {
          "type": "array",
          "description": "A haul is a visit of a collector. A haul is equivalent to an eopm/eovm/eovmf set.",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.waste.ApiHaul"
          }
        }
      },
      "description": "The waste collections per waste collector."
    },
    "com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteCollector": {
      "title": "WasteCollector",
      "type": "object",
      "properties": {
        "organisation": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.common.authentication.BezoekschipOrganisation"
        },
        "vihbNumber": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteDeclaration": {
      "title": "WasteDeclaration",
      "required": [
        "wasteItems"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "declarationId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The id of the waste declaration"
        },
        "portOfLastDelivery": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "lastDeliveryDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "The last date when waste has been delivered",
          "format": "partial-date"
        },
        "portOfNextDelivery": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "wasteItems": {
          "type": "array",
          "description": "The waste which is on board of the  vessel  and  which  will  be either (partly) delivered or will (partly) remain on board during a port call",
          "items": {
            "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteItem"
          }
        }
      },
      "description": "The declaration of waste information of the port visit"
    },
    "com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteItem": {
      "title": "WasteItem",
      "required": [
        "quantityToBeDelivered",
        "quantityToBeRetained",
        "ssn"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "ssn": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteTypeSsn"
        },
        "berthIdForPickup": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code of the berth where the waste is delivered"
        },
        "collector": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.common.ApiBezoekschipOrganisation"
        },
        "specification": {
          "maxLength": 70,
          "minLength": 0,
          "type": [
            "string",
            "null"
          ],
          "description": "The specification of the waste type"
        },
        "quantityToBeDelivered": {
          "type": "number",
          "description": "The quantity to be delivered in the port of call"
        },
        "quantityToBeRetained": {
          "type": "number",
          "description": "The quantity that is retained on board of the vessel"
        },
        "maxDedicatedCapacity": {
          "type": [
            "number",
            "null"
          ],
          "description": "The maximum dedicated storage capacity for the waste type on board of the vessel"
        },
        "quantityToBeGenerated": {
          "type": [
            "number",
            "null"
          ],
          "description": "The quantity generated between departure from the port of call and the next port of call"
        },
        "portForRetainedWaste": {
          "$ref": "#/$defs/com.portbase.bezoekschip.common.api.external.visit.ApiPort"
        },
        "type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The type of waste",
          "enum": [
            "SLUDGE",
            "FUEL_REMNANTS",
            "BILGE_WATER",
            "USED_ENGINE_OIL",
            "DIRTY_BALLASTWATER",
            "WASHWATER_OIL",
            "OILY_WASTE_FROM_CLEANING",
            "OTHER_OILY_WASTE",
            "OTHER_SUBSTANCES",
            "CARGO_RESIDUES_OR_WASHWATER",
            "DIRTY_BALLASTWATER_CHEMICALS",
            "OTHER_CARGO_RESIDUES",
            "SEWAGE_WASTE_BLACK",
            "SEWAGE_WASTE_GREY",
            "FOOD_WASTE",
            "PLASTIC_ANY",
            "PLASTIC_CLEAN",
            "DOMESTIC_WASTES",
            "PLASTIC_CONTAMINATED",
            "SMALL_DANGEROUS_WASTE",
            "OTHER_DOMESTIC_WASTE",
            "INTERNATIONAL_CATERING_WASTE",
            "PAPER_OR_CARTON",
            "RAGS",
            "GLASS",
            "METAL_OR_STEELWIRES",
            "BOTTLES",
            "CROCKERY",
            "INCINERATOR_ASHES",
            "ANIMAL_CARCASSES",
            "EWASTE_WHOLE_DEVICES",
            "EWASTE_DEVICES",
            "PYROTECHNICS",
            "BATTERIES",
            "FIRE_EXTINGUISHERS",
            "CAR_TYRES_OR_RUBBER",
            "COOLING_LIQUIDS",
            "PROPELLER_SHAFT_GREASE",
            "FUMIGATION_PRODUCTS",
            "FILTER_OR_RAGS_BAGS",
            "WOOD",
            "OIL_CONTAMINATED_DRUMS",
            "FISHING_GEAR",
            "COOKING_OIL",
            "OPERATIONAL_WASTE",
            "WASHWATER_DRY_CARGO_HME",
            "WASHWATER_DRY_CARGO_NON_HME",
            "DRY_CARGO_RESIDUES_HME",
            "DRY_CARGO_RESIDUES_NON_HME",
            "OTHER_CARGO_RESIDUES_NON_TANKERS",
            "OZONE_DEPLETION",
            "EXHAUST_GAS_CLEANING",
            "PASSIVELY_FISHED_WASTE"
          ]
        }
      },
      "description": "The waste which is on board of the  vessel  and  which  will  be either (partly) delivered or will (partly) remain on board during a port call"
    },
    "com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteQuantity": {
      "title": "WasteQuantity",
      "required": [
        "value",
        "valueInCubicMeters"
      ],
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "value": {
          "type": "number",
          "description": "The value of the quantity in the units as defined in unitOfMeasure."
        },
        "valueInCubicMeters": {
          "type": "number",
          "description": "The value of the quantity in cubic meters."
        }
      }
    },
    "com.portbase.bezoekschip.common.api.external.visit.waste.ApiWasteTypeSsn": {
      "title": "WasteTypeSsn",
      "required": [
        "code",
        "description",
        "marpolCategory",
        "specificationRequired"
      ],
      "type": "object",
      "properties": {
        "code": {
          "minLength": 1,
          "type": "string",
          "description": "The code of the waste type in the Maritime Single Window."
        },
        "description": {
          "minLength": 1,
          "type": "string",
          "description": "The description of the waste type in the Maritime Single Window."
        },
        "marpolCategory": {
          "minLength": 1,
          "type": "string",
          "description": "The MARPOL category of the waste type."
        },
        "specificationRequired": {
          "type": "boolean",
          "description": "Indication whether a specification is required."
        }
      },
      "description": "The waste type in the Maritime Single Window."
    }
  }
}