2.1 Filhantering
Inledning
Om dokumentet
Denna beskrivning är ett tillägg av tjänstekontrakten i tjänstedomänen masterdata:citizen:citizen. Dokumentet beskriver hur tjänsten ”Hämta filer” är uppbyggd med hjälp av en SOAP-service för listning samt en REST-service hämtning. Valet att använda en SOAP+REST baseras på dokument ARK_0038 enligt Rivta standarden. Tjänsten för att lista tillgängliga filer är av typen SOAP (enligt Rivta2.1) och tjänsten för att hämta filer är av typen HTTP-REST. En REST-service tillåter olika typer av HTTP anrop GET, PUT, POST och DELETE. I ”hämta filer”-tjänsten är det endast GET som kommer att implementeras, då det bara är hämtning som kan utföras. Anrop mot tjänsterna sker med https(tvåvägs-SSL) och validering av certifikatet från tjänstekonsument utförs för att endast tillåta att tjänsten levererar data till tillåtna mottagare.
Konnektivitet
SOAP-tjänst för att lista tillgängliga filer är tillgängliga via Nationell Tjänsteplattform (NTjP), och är på så vis nåbar både via SJUNET och INTERNET. Dock saknar NTjP stöd för REST-baserade tjänster vilket medför att REST-tjänst för att hämta filer är enbart tillgänglig via SJUNET och med direktaccess mot tjänsteproducent.
Flöde
Flödet för att hämta filer börjar med anrop till SOAP-tjänsten GetFilesForOrderId (via NTjP). Specifikation finns i TKB för masterdata:citizen:citizen (www.rivta.se). En konsument anropar tjänsten med ett OrderId. PU-tjänsten returnerar ett svar innehållande 0..n referenser (unik URL för varje hämtbar fil) som konsumenten kan gå igenom för att hämta varje enskild fil via REST-tjänsten. Referensen som returneras användas i sin helhet för att hämta en fil.
GetFilesForOrderId
Se tjänstekontraktsbeskrivning https://bitbucket.org/rivta-domains/riv.masterdata.citizen.citizen
PuDownload
Tjänst för att hämta en fil. Tjänsten måste anropas för varje fil som ska hämtas. Således måste anrop föregås av anrop till tjänsten "lista tillgängliga filer" (GetFilersForOrderId) för att veta vilka filer som kan hämtas.
Konsumentens certifikat verifieras för att inga filer som inte tillhör konsumenten returneras.
Exempel
Exempel på anrop
Tjänsten anropas genom:
https://<host>:<port>/pudownload/file/<GUID>
GUID kan se ut enligt följande: 7fbbe720-ec37-460b-9edf-780ff570f4fc
Exempel på svar
Svar om efterfrågad fil laddas ner:
Statuskod: 200
Content-Type: application/zip
Content-Disposition: attachment; filename="<filnamn>"
Transfer-Encoding: chunked
Content: fil (zippat xmldata enligt SKV's navetavisering-schema)
Schema för innehåll i zippad XML-fil följer Skatteverkets XSD Navetavisering V1
Struktur för filnamn (både ZIP och XML): <orderId>_<datum>_<löpnummer>.zip (samt .xml)
Exempel: 11111-22222-3333-75_20161103_1.zip
Svar vid ogiltig förfrågan:
Statuskod: 400 BAD_REQUEST
* Ogiltig context path
* HSA-id för konsument saknas
* Certifikat för OrderId matchar inte certifikat som används vid hämtning av fil
* Filen har redan hämtats
Statuskod: 401 UNAUTHORIZED
* Konsumenten saknar behörighet till tjänsten
Statuskod: 404 NOT FOUND
* Begärd referens (GUID) existerar inte
Statuskod: 500 INTERNAL SERVER ERROR
* Internt oförutsätt fel