---
openapi: 3.0.3
info:
  title: Fartøyregisteret
  description: Et åpent API for uthenting av fartøy- og eieropplysninger.
  termsOfService: https://data.norge.no/nlod/no/
  contact:
    name: Fdir Dev Team
    email: tfr@fiskeridir.no
  license:
    name: FDIR-lisens for databruk
    url: https://www.fiskeridir.no/Tall-og-analyse/Lisens-for-bruk-av-Fiskeridirektoratets-data
  version: 1.0.0
servers:
- url: https://api.fiskeridir.no
tags:
- name: Vessels
paths:
  /vessel-api/api/v1/vessels:
    get:
      tags:
      - Vessels
      summary: Lister aktive fartøy
      description: Henter en liste over alle aktive fartøy med mulighet for filtrering
        basert på ulike kriterier.
      parameters:
      - name: length_gte
        in: query
        description: Filtrer etter fartøyets lengde større enn eller lik
        schema:
          format: double
          minimum: 0
          type: number
      - name: length_lte
        in: query
        description: Filtrer etter fartøyets lengde mindre enn eller lik
        schema:
          format: double
          type: number
      - name: municipality_code
        in: query
        description: Filtrer etter fartøyets kommunekode
        schema:
          type: string
      - name: name
        in: query
        description: Filtrer etter fartøyets navn
        schema:
          type: string
      - name: page
        in: query
        description: Sidenummer for resultatene som skal hentes
        schema:
          format: int32
          minimum: 1
          type: integer
      - name: per_page
        in: query
        description: Antall fartøy per side (maks 200)
        schema:
          format: int32
          default: "30"
          maximum: 200
          minimum: 1
          type: integer
      - name: query
        in: query
        description: Søk på tvers av flere felter
        schema:
          type: string
      - name: radio_call_sign
        in: query
        description: Filtrer etter fartøyets radiokallesignal
        schema:
          type: string
      - name: registration_mark
        in: query
        description: Filtrer etter fartøyets registreringsmerke
        schema:
          type: string
      - name: sort_asc
        in: query
        schema:
          default: false
          type: boolean
      - name: sort_by
        in: query
        schema:
          allOf:
          - $ref: "#/components/schemas/VesselSortField"
          - default: ID
      responses:
        "200":
          description: OK
          headers:
            x-totalcount:
              description: Totalt antall fartøy
              style: simple
              schema:
                type: number
            link:
              description: "Få URL-en for den første, forrige, neste og siste siden\
                \ med fartøy"
              style: simple
              schema:
                type: string
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Vessel"
  /vessel-api/api/v1/vessels/{id}:
    get:
      tags:
      - Vessels
      summary: Returnerer et spesifikt fartøy
      description: Henter detaljert informasjon om et spesifikt fartøy basert på dets
        unike ID.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Vessel"
components:
  schemas:
    EntityType:
      enum:
      - COMPANY
      - PERSON
      type: string
    Owner:
      description: "Dette objektet representerer en båteier, inkludert identifikasjonsdetaljer\
        \ og kontaktinformasjon."
      type: object
      properties:
        id:
          description: Unik identifikator for båteieren
          type: string
        entityType:
          description: "Typen enhet båteieren representerer, f.eks. individ eller\
            \ selskap"
          type: string
          allOf:
          - $ref: "#/components/schemas/EntityType"
        name:
          description: Navnet på båteieren
          type: string
        postalCode:
          description: Postnummeret til båteierens adresse
          type: string
        city:
          description: Byen båteieren er lokalisert i
          type: string
    Vessel:
      description: "Dette objektet representerer et fartøy, inkludert detaljer om\
        \ størrelse, eierskap og identifikasjonsmerker."
      type: object
      properties:
        id:
          description: Unik identifikator for fartøyet
          type: string
        name:
          description: Navnet på fartøyet
          type: string
        registrationMark:
          description: Fartøyets registreringsmerke
          type: string
        radioCallSign:
          description: Fartøyets radiokallesignal
          type: string
        imoNumber:
          description: Fartøyets IMO-nummer
          type: string
        municipalityCode:
          description: Kommunekoden der fartøyet er registrert
          type: string
        width:
          description: Fartøyets bredde i meter
          type: number
        length:
          description: Fartøyets lengde i meter
          type: number
        enginePower:
          format: int32
          description: Fartøyets motorstyrke i hestekrefter
          type: integer
        owners:
          description: Liste over fartøyets eiere
          type: array
          items:
            $ref: "#/components/schemas/Owner"
    VesselSearchCriteria:
      type: object
      properties:
        query:
          type: string
        registrationMark:
          type: string
        radioCallSign:
          type: string
        name:
          type: string
        municipalityCode:
          type: string
        lengthGte:
          format: double
          minimum: 0
          type: number
        lengthLte:
          format: double
          type: number
        sortBy:
          $ref: "#/components/schemas/VesselSortField"
        sortAsc:
          type: boolean
    VesselSortField:
      enum:
      - ID
      - NAME
      - REGISTRATIONMARK
      - RADIOCALLSIGN
      type: string
