openapi: 3.1.0 info: title: Portbase Port Community System CargoManifests VesselCalls API description: Portbase is the Dutch Port Community System providing APIs for customs declarations, cargo manifests, vessel call notifications, berth planning, and port logistics coordination at the Port of Rotterdam and Amsterdam, connecting shipping lines, freight forwarders, customs authorities, and terminal operators. version: 1.0.0 contact: name: Portbase Support url: https://www.portbase.com/en/contact/ license: name: Portbase Terms of Service url: https://www.portbase.com/en/about-portbase/terms-and-conditions/ servers: - url: https://api.portbase.com/v1 description: Portbase Production API security: - oauth2: [] tags: - name: VesselCalls description: Vessel arrival and departure notifications paths: /vessel-calls: get: operationId: listVesselCalls summary: List vessel calls description: Returns vessel call notifications for upcoming arrivals and departures at Dutch ports. tags: - VesselCalls parameters: - name: portCode in: query description: UN/LOCODE of the port (e.g., NLRTM for Rotterdam) schema: type: string example: NLRTM - name: status in: query description: Filter by vessel call status schema: type: string enum: - EXPECTED - ARRIVED - BERTHED - DEPARTED - CANCELLED - name: fromDate in: query description: Earliest expected arrival date schema: type: string format: date-time - name: toDate in: query schema: type: string format: date-time - name: offset in: query schema: type: integer default: 0 - name: limit in: query schema: type: integer default: 100 maximum: 500 responses: '200': description: Vessel call list content: application/json: schema: type: object properties: vesselCalls: type: array items: $ref: '#/components/schemas/VesselCall' totalCount: type: integer '401': $ref: '#/components/responses/Unauthorized' post: operationId: createVesselCall summary: Submit vessel call notification description: Submits a pre-arrival vessel call notification (PARN) to the port authority. tags: - VesselCalls requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VesselCallCreate' responses: '201': description: Vessel call submitted content: application/json: schema: $ref: '#/components/schemas/VesselCall' '400': $ref: '#/components/responses/BadRequest' /vessel-calls/{vesselCallId}: get: operationId: getVesselCall summary: Get vessel call description: Returns details for a specific vessel call including berth allocation and status. tags: - VesselCalls parameters: - $ref: '#/components/parameters/VesselCallId' responses: '200': description: Vessel call details content: application/json: schema: $ref: '#/components/schemas/VesselCallDetail' '404': $ref: '#/components/responses/NotFound' put: operationId: updateVesselCall summary: Update vessel call description: Updates a vessel call notification with revised arrival times or cargo information. tags: - VesselCalls parameters: - $ref: '#/components/parameters/VesselCallId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VesselCallUpdate' responses: '200': description: Vessel call updated content: application/json: schema: $ref: '#/components/schemas/VesselCall' components: schemas: BerthPlan: type: object properties: berthId: type: string berthName: type: string plannedArrival: type: string format: date-time plannedDeparture: type: string format: date-time bollardFrom: type: integer bollardTo: type: integer VesselCall: type: object description: A vessel arrival/departure call at a Dutch port properties: vesselCallId: type: string imoNumber: type: string description: IMO vessel identification number (7 digits) pattern: ^\d{7}$ mmsi: type: string description: Maritime Mobile Service Identity vesselName: type: string callSign: type: string flag: type: string maxLength: 3 description: ISO 3166-1 alpha-3 flag state portCode: type: string description: UN/LOCODE terminalCode: type: string status: type: string enum: - EXPECTED - ARRIVED - BERTHED - DEPARTED - CANCELLED eta: type: string format: date-time description: Estimated time of arrival etd: type: string format: date-time description: Estimated time of departure ata: type: string format: date-time nullable: true description: Actual time of arrival atd: type: string format: date-time nullable: true description: Actual time of departure shippingAgent: type: string pilotageRequired: type: boolean tugAssistance: type: boolean VesselCallCreate: type: object required: - imoNumber - vesselName - portCode - eta - etd properties: imoNumber: type: string pattern: ^\d{7}$ vesselName: type: string callSign: type: string portCode: type: string terminalCode: type: string eta: type: string format: date-time etd: type: string format: date-time shippingAgent: type: string pilotageRequired: type: boolean default: true VesselCallUpdate: type: object properties: eta: type: string format: date-time etd: type: string format: date-time terminalCode: type: string status: type: string enum: - EXPECTED - ARRIVED - DEPARTED - CANCELLED VesselCallDetail: allOf: - $ref: '#/components/schemas/VesselCall' - type: object properties: berthPlan: $ref: '#/components/schemas/BerthPlan' cargoManifestIds: type: array items: type: string Error: type: object properties: code: type: string message: type: string details: type: array items: type: string responses: Unauthorized: description: Authentication required content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Invalid request content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: VesselCallId: name: vesselCallId in: path required: true description: Portbase vessel call identifier schema: type: string securitySchemes: oauth2: type: oauth2 flows: clientCredentials: tokenUrl: https://auth.portbase.com/oauth2/token scopes: vessel-calls.read: Read vessel call data vessel-calls.write: Submit and update vessel calls manifests.write: Submit cargo manifests customs.write: Submit customs declarations