Formål

Nærværende dokument indgår i den samlede dokumentationspakke for stamdataregistret på NSP. Dokumentationspakken giver tilsammen det fulde overblik over dokumentationen.

”Guide til anvendere - Yderinformation” er målrettet udviklere og arkitekter hos leverandører, som ønsker at anvende funktionaliteten udstillet af servicen "Yderinformation" i stamdataservicen.

Yderinformation

Stamdataservicen udstiller en REST-service der, i sin nuværende form, kan anvendes til at hente det CVR-nummer der er tilknyttet et ydernummer.

Servicen udstiller følgende snitflader:

  1. Enkeltopslag - returnerer CVR-nummeret for ét ydernummer på en given dato.

  2. Batchopslag – modtager en liste af ydernumre grupperet efter dato og returnerer CVR-numre for dem alle i ét kald. Denne snitflade er særligt velegnet ved større mængder af opslag, hvor enkeltopslag ville medføre markant forsinkelse.

Bemærk: Denne service kan kun anvendes internt på NSP. Derfor har servicen heller ikke nogen sikkerhedsprotokol.

Herunder gengives de aktuelle snitflader som de ser ud. Den mest aktuelle specifikation kan findes i sourcekoden (som pt. hostes her https://git.nspop.dk/projects/COM/repos/stamdatamodul/browse).

openapi: 3.0.0
info:
  title: Yder Information REST Service
  description: Intern NSP service, der kan anvendes til at slå informationer om en Yder op.
  version: "1.0.0"

servers:
  - url: '%endpoint%'

paths:
  /stamdata-yderinformation/20241003/yder/{ydernummer}/cvr:
    get:
      summary: Hent CVR nummer for en Yder.
      description: Returnerer CVR nummeret for en Yder givet et ydernummer og en dato.
      parameters:
        - in: path
          name: ydernummer
          schema:
            type: string
            pattern: '^\d{6}$'  # Ydernummer er præcis 6 cifre.
          required: true
          description: Ydernummer, der skal søges efter.
          example: "010101"
        - in: query
          name: dato
          schema:
            type: string
            format: date
          required: false
          description: Dato for CVR opslag. Sættes til dags dato hvis ikke angivet.
          example: "2021-01-30"
      responses:
        200:
          description: OK - CVR nummer fundet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cvr'
        400:
          description: Ugyldig forespørgsel (fx ugyldigt datoformat).
        404:
          description: Ydernummeret blev ikke fundet.
        500:
          description: Intern serverfejl.

  /stamdata-yderinformation/20260326/yder/cvr/batch:
    post:
      summary: Hent CVR numre for flere Ydere på tværs af datoer i ét kald.
      description: >
        Modtager en liste af operationer, hver med en dato og et eller flere ydernumre,
        og returnerer CVR-værdier for samtlige ydernumre i ét svar.
        Ydernumre der ikke findes returneres med cvr sat til null.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/batchCvrRequest'
            example:
              op: "BatchedOperations"
              operations:
                - op: "YderCvr"
                  dato: "2024-10-03"
                  ydernumre: ["010101", "020202"]
                - op: "YderCvr"
                  dato: "2024-11-01"
                  ydernumre: ["030303"]
      responses:
        200:
          description: OK - CVR numre returneret. Ydernumre der ikke findes har cvr sat til null.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/batchCvrResponse'
        400:
          description: Ugyldig forespørgsel (fx ugyldigt datoformat eller forkert op-værdi).
        500:
          description: Intern serverfejl.

components:
  schemas:
    cvr:
      type: object
      required:
        - cvr
      properties:
        cvr:
          type: string
          description: CVR nummeret for Yderen.
          pattern: '^\d{8}$'  # CVR er præcis 8 cifre.
          example: "12345678"

    batchCvrRequest:
      type: object
      required:
        - op
        - operations
      properties:
        op:
          type: string
          enum: ["BatchedOperations"]
          description: Angiver at dette er en batch-forespørgsel.
        operations:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/yderCvrOperation'

    yderCvrOperation:
      type: object
      required:
        - op
        - ydernumre
      properties:
        op:
          type: string
          enum: ["YderCvr"]
          description: Operationstype.
        dato:
          type: string
          description: Dato for CVR opslag (ISO-8601, fx "2024-10-03"). Sættes til dags dato hvis ikke angivet.
          example: "2024-10-03"
        ydernumre:
          type: array
          minItems: 1
          items:
            type: string
            pattern: '^\d{6}$'  # Ydernummer er præcis 6 cifre.
          description: Liste af ydernumre der skal slås op.
          example: ["010101", "020202"]

    batchCvrResponse:
      type: object
      required:
        - op
        - results
      properties:
        op:
          type: string
          enum: ["BatchedOperations"]
        results:
          type: array
          items:
            $ref: '#/components/schemas/yderCvrResult'

    yderCvrResult:
      type: object
      required:
        - op
        - dato
        - ydernummer
      properties:
        op:
          type: string
          enum: ["YderCvr"]
        dato:
          type: string
          description: Den dato opslaget blev foretaget for (ISO-8601, fx "2024-10-03").
          example: "2024-10-03"
        ydernummer:
          type: string
          pattern: '^\d{6}$'
          description: Det ydernummer resultatet vedrører.
          example: "010101"
        cvr:
          type: string
          pattern: '^\d{8}$'
          nullable: true
          description: CVR nummeret for Yderen, eller null hvis ydernummeret ikke blev fundet.
          example: "12345678"

Endpoints

Servicen kan tilgås på nedenstående endpoints, hvor `stamdatahost` skal tilrettes til den aktuelle host.

VersionUrl
"20241003" med enkeltopslaghttp://stamdatahost/stamdata-yderinformation/20241003/yder/
"20260326" med batchopslag.http://stamdatahost/stamdata-yderinformation/20260326/yder/cvr/batch

Eksempler

Eksempel 1: Find CVR for ydernummer

I dette eksempel kaldes servicen med et ydernummer og en dato. Se i øvrigt API-specifikationen længere oppe.

Request

Request i form af et curl-udtryk.

curl --location 'http://stamdatahost/stamdata-yderinformation/20241003/yder/44733/cvr?dato=2024-10-21'

Response

Der svares med HTTP statuskode 200 og følgende JSON.

{"cvr":"33257872"}

Find CVR for flere ydernumre i ét kald

I dette eksempel kaldes batchsnitfladen med to operationer, der hver indeholder en dato og et eller flere ydernumre. Se i øvrigt API-specifikationen længere oppe.

Request

Request i form af et curl-udtryk.

curl --location 'http://stamdatahost/stamdata-yderinformation/20260326/yder/cvr/batch' \
  --header 'Content-Type: application/json' \
  --data '{
    "op": "BatchedOperations",
    "operations": [
      {
        "op": "YderCvr",
        "dato": "2024-10-21",
        "ydernumre": ["44733", "12345"]
      },
      {
        "op": "YderCvr",
        "dato": "2024-11-01",
        "ydernumre": ["67890"]
      }
    ]
  }'

Response

Der svares med HTTP statuskode 200 og følgende JSON. Ydernumre der ikke findes returneres med `cvr` sat til `null`.

{
  "op": "BatchedOperations",
  "results": [
    { "op": "YderCvr", "dato": "2024-10-21", "ydernummer": "44733", "cvr": "33257872" },
    { "op": "YderCvr", "dato": "2024-10-21", "ydernummer": "12345", "cvr": "00000003" },
    { "op": "YderCvr", "dato": "2024-11-01", "ydernummer": "67890", "cvr": null }
  ]
}