SKLTP TAK - Export av takdata

Sedan TAK version 2.1.0 så innehåller källkoden skript för att Exportera TAK data från databasen till Cooperation (TAK-API).

Vad är Cooperation (TAK-API)?

TAK-API är ett REST API som gör det möjligt att komma åt TAK data från olika instanser av tjänsteplattformar. TAK-API driftas som en del av den Nationella Tjänsteplattformen (NTjP). Se även mer information på NTjP:s sidor.

En tjänsteplattformsinstans som vill exponera sin TAK data måste skapa en export av TAK:en och placera den på en FTP server.

Namnet på filen ska vara takdump_<site>_<env>.json.

Därifrån läser sedan TAK API:et alla .json filer på ftp servern. Inläsning sker varje natt kl 1.30. Detta innebär att om en ny region vill publicera TAK-data måste de beställa ett konto (per miljö) på en SFTP-server samt schemalägga uppladdning av sin data dit.

Exportskript

Det är viktigt att man tar exportskripten som motsvarar den version som man har av TAK då exportskripten kan ha förändrats när TAK har uppdaterats för att matcha databasen.

Skript för version 3.2.0 kan tex hittas här: https://github.com/skltp/tak/tree/v3.2.0/tak-integration/export

För andra versioner navigera till rätt TAG i koden för att hitta skripten för din version.

Godkända exportformat för import till Cooperation (TAK-API)

Senaste versionen av TAK-API är bakåtkompatibel så att alla gamla versioner av Exportskripten fungerar tillsammans med TAK-API:ets importskript.

Det är rekommenderat att alltid använda senaste versionen av TAK och dess exportskript.

De exportformat som för närvarande stöds är beskrivs nedan:


Tidsformat

Tid kan anges som YYYY-MM-DDThh:mm:ssZ, YYYY-MM-DDThh:mm:ss+nn:00 eller YYYY-MM-DDThh:mm:ss+nn00 där nn är tidszonen relativt UTC och hh är timme i 24-timmarsformat.


Format 1 (Nuvarande format)

{
    "formatVersion": "<version av detta format>",
    "version": "<int>",
    "tidpunkt_version": "<YYYY-MM-DDThh:mm:ssZ>",
    "tidpunkt": "<YYYY-MM-DDThh:mm:ssZ>",
    "utforare": "<Namn>",
    "kommentar": "<text som beskriver denna publicering>",
    "data": {
      "rivtaprofil": [
        {
          "id": <identitet>,
          "namn": "<text>",
          "beskrivning": "<text>",
          "pubversion": "<int>"
        }
      ],
      "tjanstekontrakt": [
        {
          "id": <identitet>,
          "namnrymd": "<text>",
          "beskrivning": "<text>",
          "majorVersion":<integer>,
          "minorVersion":<integer>,
          "pubversion": "<int>"
        }
      ],
      "logiskadress": [
        {
          "id": <identitet>,
          "hsaId": "<text>",
          "beskrivning": "<text>",
          "pubversion": "<int>"
        }
      ],
      "tjanstekomponent": [
        {
          "id": <identitet>
          "hsaId": "<text>",
          "beskrivning": "<text>",
          "pubversion": "<int>"
        }
      ],
      "anropsadress": [
        {
          "id": <identitet>,
          "adress": "<URL>",
          "pubversion": "<int>",
          "relationships": {
            "rivtaprofil": <identitet>,
            "tjanstekomponent":<identitet>
          }
        }
      ],
      "anropsbehorighet": [
        {
          "id": <identitet>,
          "integrationsavtal": "<text>",
          "fromTidpunkt": "<YYYY-MM-DDThh:mm:ss>",
          "tomTidpunkt":"<YYYY-MM-DDThh:mm:ss>"
          "pubversion": "<int>",
          "relationships": {
            "logiskAdress": <identitet>,
            "tjanstekonsument": <identitet>,
            "tjanstekontrakt": <identitet>
          },
        }
      ],
      "vagval": [
        {
          "id": <identitet>,
          "fromTidpunkt": "<YYYY-MM-DDThh:mm:ss+0200>",
          "tomTidpunkt": "<YYYY-MM-DDThh:mm:ss+0200>",
          "pubversion": "<int>",
          "relationships": {
            "anropsadress": <identitet>,
            "logiskadress": <identitet>,
            "tjanstekontrakt": <identitet>
          }
        }
      ],
      "filter": [
        {
          "id": <identitet>,
          "servicedomain":"<text>",
          "pubversion": "<int>",
          "relationships": {
            "anropsbehorighet": <identitet>
          }
        }
      ],
      "filtercategorization": [
        {
          "id": <identitet>,
          "category":"<text>",
          "pubversion": "<int>",
          "relationships": {
            "filter": <identitet>
          }
        }
      ]
    }
}


Format 2 (tidigare version)

{
    "formatVersion": "<version av detta format>",
    "version": "<int>",
    "tidpunkt": "<YYYY-MM-DDThh:mm:ssZ>",
    "utforare": "<Namn>",
    "kommentar": "<text som beskriver denna publicering>",
    "data": {
      "rivtaprofil": [
        {
          "id": <identitet>,
          "namn": "<text>",
          "beskrivning": "<text>"
        }
      ],
      "tjanstekontrakt": [
        {
          "id": <identitet>,
          "namnrymd": "<text>",
          "beskrivning": "<text>",
          "majorVersion":<integer>,
          "minorVersion":<integer>
        }
      ],
      "logiskadress": [
        {
          "id": <identitet>,
          "hsaId": "<text>",
          "beskrivning": "<text>"
        }
      ],
      "tjanstekomponent": [
        {
          "id": <identitet>
          "hsaId": "<text>",
          "beskrivning": "<text>",
        }
      ],
      "anropsadress": [
        {
          "id": <identitet>,
          "adress": "<URL>",
          "relationships": {
            "rivtaprofil": <identitet>,
            "tjanstekomponent":<identitet>
          }
        }
      ],
      "anropsbehorighet": [
        {
          "id": <identitet>,
          "integrationsavtal": "<text>",
          "fromTidpunkt": "<YYYY-MM-DD>",
          "tomTidpunkt":"<YYYY-MM-DD>"
          "relationships": {
            "logiskAdress": <identitet>,
            "tjanstekomponent": <identitet>,
            "tjanstekontrakt": <identitet>
          },
        }
      ],
      "vagval": [
        {
          "id": <identitet>,
          "fromTidpunkt": "<YYYY-MM-DD>",
          "tomTidpunkt": "<YYYY-MM-DD>",
          "relationships": {
            "anropsadress": <identitet>,
            "logiskadress": <identitet>,
            "tjanstekontrakt": <identitet>
          }
        }
      ],
      "filter": [
        {
          "id": <identitet>,
          "servicedomain":"<text>",
          "relationships": {
            "anropsbehorighet": <identitet>
          }
        }
      ],
      "filtercategorization": [
        {
          "id": <identitet>,
          "category":"<text>",
          "relationships": {
            "filter": <identitet>
          }
        }
      ]
    }
}


Format 3 (version innan detta lades in i TAK koden)

{
    "formatVersion": "<version av detta format>",
    "tidpunkt": "<YYYY-MM-DDThh:mm:ssZ>",
    "beskrivning": "<text som beskriver denna publicering>",
    "data": {
      "rivtaprofil": [
        {
          "id": <identitet>,
          "namn": "<text>",
          "beskrivning": "<text>"
        }
      ],
      "tjanstekontrakt": [
        {
          "id": <identitet>,
          "namnrymd": "<text>",
          "beskrivning": "<text>",
          "majorVersion":<integer>,
          "minorVersion":<integer>
        }
      ],
      "logiskadress": [
        {
          "id": <identitet>,
          "hsaId": "<text>",
          "beskrivning": "<text>"
        }
      ],
      "tjanstekomponent": [
        {
          "id": <identitet>
          "hsaId": "<text>",
          "beskrivning": "<text>",
        }
      ],
      "anropsadress": [
        {
          "id": <identitet>,
          "adress": "<URL>",
          "relationships": {
            "rivtaprofil": <text>,
            "tjanstekomponent":<text>
          }
        }
      ],
      "anropsbehorighet": [
        {
          "id": <identitet>,
          "integrationsavtal": "<text>",
          "fromTidpunkt": "<YYYY-MM-DD>",
          "tomTidpunkt":"<YYYY-MM-DD>"
          "relationships": {
            "logiskAdress": <text>,
            "tjanstekonsument": <text>,
            "tjanstekontrakt": <text>
          },
        }
      ],
      "vagval": [
        {
          "id": <identitet>,
          "fromTidpunkt": "<YYYY-MM-DD>",
          "tomTidpunkt": "<YYYY-MM-DD>",
          "relationships": {
            "anropsadress": <text>,
            "logiskadress": <text>,
            "tjansteproducent": <text>,
            "rivtaProfil": <text>,
            "tjanstekontrakt": <text>
          }
        }
      ]
    }
}