DNV

DNV Vessels API

Vessel classification status and information

OpenAPI Specification

dnv-vessels-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: DNV Class Status Certificates Vessels API
  description: DNV's Class Status API provides programmatic access to vessel classification data. Authentication uses OAuth 2.0 with Azure AD B2C as the identity provider. Access tokens are obtained from the Microsoft identity platform and are valid for approximately 20 minutes. Access requires a separate API contract with DNV. The API supports retry logic using exponential backoff for resilience.
  version: 1.0.0
  contact:
    name: DNV Support
    url: https://help-center.veracity.com/en/
  license:
    name: DNV Terms
    url: https://www.dnv.com/terms/
servers:
- url: https://maritime.dnv.com/api/cs-iacs-customer
  description: DNV Class Status API Production
security:
- oauth2: []
tags:
- name: Vessels
  description: Vessel classification status and information
paths:
  /vessels:
    get:
      operationId: searchVessels
      summary: Search vessels by classification criteria
      description: Searches for vessels in DNV's classification register. Supports filtering by vessel name, IMO number, flag state, ship type, and classification status. Returns vessel summaries including class notation and current status.
      tags:
      - Vessels
      parameters:
      - name: imoNumber
        in: query
        description: IMO vessel identification number (7 digits)
        schema:
          type: string
          pattern: ^[0-9]{7}$
      - name: vesselName
        in: query
        description: Vessel name (partial match supported)
        schema:
          type: string
      - name: flagState
        in: query
        description: ISO 3166-1 alpha-2 country code for flag state
        schema:
          type: string
          pattern: ^[A-Z]{2}$
      - name: shipType
        in: query
        description: DNV ship type classification code
        schema:
          type: string
      - name: classStatus
        in: query
        description: Current class status filter
        schema:
          type: string
          enum:
          - CLASSED
          - SUSPENDED
          - WITHDRAWN
          - DELETED
      - name: limit
        in: query
        schema:
          type: integer
          default: 50
          maximum: 200
      - name: offset
        in: query
        schema:
          type: integer
          default: 0
      responses:
        '200':
          description: List of vessels matching search criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VesselList'
            application/xml:
              schema:
                $ref: '#/components/schemas/VesselList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /vessels/{imoNumber}:
    get:
      operationId: getVessel
      summary: Get vessel classification details
      description: Returns detailed classification information for a specific vessel identified by IMO number, including class notation, survey status, and certificates.
      tags:
      - Vessels
      parameters:
      - name: imoNumber
        in: path
        required: true
        description: IMO vessel identification number (7 digits)
        schema:
          type: string
          pattern: ^[0-9]{7}$
      - name: Accept
        in: header
        description: Response format
        schema:
          type: string
          default: application/json
          enum:
          - application/json
          - application/xml
      responses:
        '200':
          description: Vessel classification details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Vessel'
            application/xml:
              schema:
                $ref: '#/components/schemas/Vessel'
        '404':
          $ref: '#/components/responses/NotFound'
  /fleets:
    get:
      operationId: getFleetStatus
      summary: Get fleet classification status
      description: Returns classification status for a fleet of vessels. Useful for fleet managers to monitor the overall compliance status of their vessels.
      tags:
      - Vessels
      parameters:
      - name: imoNumbers
        in: query
        description: Comma-separated list of IMO numbers (max 100)
        schema:
          type: string
      - name: includeExpiredCerts
        in: query
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Fleet status summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FleetStatus'
components:
  responses:
    Forbidden:
      description: No API contract with DNV for this resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication token missing or expired
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Vessel not found in DNV register
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    FleetStatus:
      type: object
      properties:
        requestedCount:
          type: integer
        foundCount:
          type: integer
        vessels:
          type: array
          items:
            type: object
            properties:
              imoNumber:
                type: string
              vesselName:
                type: string
              classStatus:
                type: string
              nextSurveyDue:
                type: string
                format: date
              certificatesExpiringSoon:
                type: integer
    Vessel:
      allOf:
      - $ref: '#/components/schemas/VesselSummary'
      - type: object
        properties:
          vesselOwner:
            type: string
          technicalManager:
            type: string
          buildYear:
            type: integer
          grossTonnage:
            type: number
          deadweightTonnage:
            type: number
          length:
            type: number
            description: Length overall in meters
          beam:
            type: number
            description: Breadth in meters
          draught:
            type: number
            description: Maximum draught in meters
          mainEngineType:
            type: string
          mainEnginePower:
            type: number
            description: Main engine output in kW
          hullMaterial:
            type: string
            enum:
            - STEEL
            - ALUMINUM
            - GRP
            - WOOD
          surveys:
            $ref: '#/components/schemas/SurveySummary'
          nextSurveyDue:
            type: string
            format: date
    SurveySummary:
      type: object
      properties:
        lastAnnualSurvey:
          type: string
          format: date
        nextAnnualSurveyDue:
          type: string
          format: date
        lastSpecialSurvey:
          type: string
          format: date
        nextSpecialSurveyDue:
          type: string
          format: date
    VesselSummary:
      type: object
      properties:
        imoNumber:
          type: string
          description: IMO vessel identification number
        vesselName:
          type: string
        flagState:
          type: string
          description: ISO 3166-1 alpha-2 flag state code
        shipType:
          type: string
        classStatus:
          type: string
          enum:
          - CLASSED
          - SUSPENDED
          - WITHDRAWN
          - DELETED
        classNotation:
          type: string
          description: Full DNV class notation string
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        requestId:
          type: string
    VesselList:
      type: object
      properties:
        total:
          type: integer
        offset:
          type: integer
        vessels:
          type: array
          items:
            $ref: '#/components/schemas/VesselSummary'
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 via Azure AD B2C. Tokens obtained from https://login.microsoftonline.com/dnvglb2cprod.onmicrosoft.com/oauth2/token using client credentials grant with resource ID c916a223-f3d4-4d43-b709-cfcd77ff4a05.
      flows:
        clientCredentials:
          tokenUrl: https://login.microsoftonline.com/dnvglb2cprod.onmicrosoft.com/oauth2/token
          scopes:
            class_status:read: Read vessel classification status