From 718a8a2c3df6c93fceddc856a224529107efe855 Mon Sep 17 00:00:00 2001 From: Sondre Larsen Ovrid Date: Thu, 14 Nov 2024 10:43:20 +0100 Subject: [PATCH] Legg til meir Swagger-dokumentasjon NB: Nokre request/response felt er enno ikkje dokumenter. --- .../controller/BeslutterController.java | 144 +++++++++++++----- .../BeslutteroversiktController.java | 20 +++ .../controller/KodeverkController.java | 40 +++++ .../controller/MeldingController.java | 31 ++++ .../controller/Siste14aVedtakController.kt | 5 + .../controller/UtrullingController.java | 31 ++++ .../controller/VedtakController.java | 76 +++++++++ .../controller/dto/LagUtkastDTO.java | 2 +- .../v2/Siste14aVedtakV2Controller.kt | 26 +++- .../controller/v2/UtrullingV2Controller.kt | 20 +++ .../controller/v2/VedtakV2Controller.kt | 44 +++++- .../v2/dto/Siste14aVedtakRequest.kt | 2 + .../controller/v2/dto/UtkastRequest.kt | 2 +- .../controller/v2/dto/UtrullingRequest.kt | 2 + .../controller/v2/dto/VedtakRequest.kt | 2 + 15 files changed, 405 insertions(+), 42 deletions(-) diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/BeslutterController.java b/src/main/java/no/nav/veilarbvedtaksstotte/controller/BeslutterController.java index 8eaa660d2..9c5188881 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/BeslutterController.java +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/BeslutterController.java @@ -1,6 +1,9 @@ package no.nav.veilarbvedtaksstotte.controller; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; import no.nav.veilarbvedtaksstotte.service.BeslutterService; import org.springframework.beans.factory.annotation.Autowired; @@ -12,43 +15,112 @@ @RestController @RequestMapping("/api/beslutter") -@Tag(name = "Beslutter", description = "Funksjonalitet knyttet til besluttere og beslutterprosesser.") +@Tag(name = "Kvalitetssikring", description = "Funksjonalitet knyttet til kvalitetssikring og kvalitetssikrere.") public class BeslutterController { - private final BeslutterService beslutterService; - - @Autowired - public BeslutterController(BeslutterService beslutterService) { - this.beslutterService = beslutterService; - } - - @PostMapping("/start") - @Operation( - summary = "Start beslutterprosess", - description = "Starter en beslutterprosess for det spesifiserte vedtaksutkastet." - ) - public void startBeslutterProsess(@RequestParam("vedtakId") long vedtakId) { - beslutterService.startBeslutterProsess(vedtakId); - } - - @PostMapping("/avbryt") - public void avbrytBeslutterProsess(@RequestParam("vedtakId") long vedtakId) { - beslutterService.avbrytBeslutterProsess(vedtakId); - } - - @PostMapping("/bliBeslutter") - public void bliBeslutter(@RequestParam("vedtakId") long vedtakId) { - beslutterService.bliBeslutter(vedtakId); - } - - @PostMapping("/godkjenn") - public void godkjennVedtak(@RequestParam("vedtakId") long vedtakId) { - beslutterService.setGodkjentAvBeslutter(vedtakId); - } - - @PutMapping("/status") - public void oppdaterBeslutterProsessStatus(@RequestParam("vedtakId") long vedtakId) { - beslutterService.oppdaterBeslutterProsessStatus(vedtakId); - } + private final BeslutterService beslutterService; + + @Autowired + public BeslutterController(BeslutterService beslutterService) { + this.beslutterService = beslutterService; + } + + @PostMapping("/start") + @Operation( + summary = "Start kvalitetssikring", + description = "Starter kvalitetssikring for det spesifiserte vedtaksutkastet. " + + "Informasjon om brukeren som er knyttet til vedtaksutkastet samt øvrig informasjon fra vedtaksutkastet " + + "vil bli lagt til i kvalitetssikringsoversikten og en systemmelding om at kvalitetssikring er startet vil bli produsert" + + "og postet i meldingskanalen mellom ansvarlig veileder og kvalitetssikrer.", + responses = { + @ApiResponse(responseCode = "200", content = @Content()), + @ApiResponse(responseCode = "400", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))) + } + ) + public void startBeslutterProsess(@RequestParam("vedtakId") long vedtakId) { + beslutterService.startBeslutterProsess(vedtakId); + } + + @PostMapping("/avbryt") + @Operation( + summary = "Avbryt kvalitetssikring", + description = "Avbryter kvalitetssikring for det spesifiserte vedtaksutkastet. " + + "Informasjon om brukeren som er knyttet til vedtaksutkastet samt øvrig informasjon fra vedtaksutkastet " + + "vil bli fjernet fra kvalitetssikringsoversikten og en systemmelding om at kvalitetssikring er avbrutt vil bli produsert" + + "og postet i meldingskanalen mellom ansvarlig veileder og kvalitetssikrer.", + responses = { + @ApiResponse(responseCode = "200", content = @Content()), + @ApiResponse(responseCode = "400", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))) + } + ) + public void avbrytBeslutterProsess(@RequestParam("vedtakId") long vedtakId) { + beslutterService.avbrytBeslutterProsess(vedtakId); + } + + @PostMapping("/bliBeslutter") + @Operation( + summary = "Bli kvalitetssikrer", + description = "Innlogget/autentisert bruker (veileder) blir kvalitetssikrer for det spesifiserte vedtaksutkastet." + + "Kvalitetssikringsoversikten vil bli oppdatert med informasjon om kvalitetssikreren og en systemmelding om " + + "at vedtakutkastet har fått en kvalitetssikrer vil bli produsert og postet i meldingskanalen mellom ansvarlig " + + "veileder og kvalitetssikrer", + responses = { + @ApiResponse(responseCode = "200", content = @Content()), + @ApiResponse(responseCode = "400", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))) + } + ) + public void bliBeslutter(@RequestParam("vedtakId") long vedtakId) { + beslutterService.bliBeslutter(vedtakId); + } + + @PostMapping("/godkjenn") + @Operation( + summary = "Godkjenn vedtaksutkast", + description = "Godkjenn det spesifiserte vedtaksutkastet. Informasjon om brukeren som er knyttet til vedtaksutkastet " + + "samt øvrig informasjon fra vedtaksutkastet vil bli fjernet fra kvalitetssikringsoversikten og en systemmelding " + + "om at vedtaksutkastet er godkjent vil bli produsert og postet i meldingskanalen mellom ansvarlig veileder og kvalitetssikrer.", + responses = { + @ApiResponse(responseCode = "200", content = @Content()), + @ApiResponse(responseCode = "400", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))) + } + ) + public void godkjennVedtak(@RequestParam("vedtakId") long vedtakId) { + beslutterService.setGodkjentAvBeslutter(vedtakId); + } + + @PutMapping("/status") + @Operation( + summary = "Oppdater status på kvalitetssikringen", + description = """ + Oppdaterer og setter ny status for kvalitetssikringen: + + * dersom innlogget/autentisert bruker er ansvarlig veileder for vedtaksutkastet vil ny status bli "Klar til kvalitetssikrer" + * dersom innlogget/autentisert bruker er kvalitetssikrer for vedtaksutkastet vil ny status bli "Klar til ansvarlig veileder" + + Kvalitetssikringsoversikten vil bli oppdatert med informasjon om ny status og en systemmelding om at vedtakutkastet har fått en ny status bli produsert og postet i meldingskanalen mellom ansvarlig veileder og kvalitetssikrer. + """, + responses = { + @ApiResponse(responseCode = "200", content = @Content()), + @ApiResponse(responseCode = "400", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))) + } + ) + public void oppdaterBeslutterProsessStatus(@RequestParam("vedtakId") long vedtakId) { + beslutterService.oppdaterBeslutterProsessStatus(vedtakId); + } } diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/BeslutteroversiktController.java b/src/main/java/no/nav/veilarbvedtaksstotte/controller/BeslutteroversiktController.java index 8e359bc2e..05ac0f77a 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/BeslutteroversiktController.java +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/BeslutteroversiktController.java @@ -1,5 +1,10 @@ package no.nav.veilarbvedtaksstotte.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; import no.nav.veilarbvedtaksstotte.domain.beslutteroversikt.BeslutteroversiktSok; import no.nav.veilarbvedtaksstotte.domain.beslutteroversikt.BrukereMedAntall; import no.nav.veilarbvedtaksstotte.service.BeslutteroversiktService; @@ -11,6 +16,10 @@ @RestController @RequestMapping("/api/beslutteroversikt") +@Tag( + name = "Kvalitetssikringsoversikt", + description = "Funksjonalitet knyttet til kvalitetssikringsoversikten." +) public class BeslutteroversiktController { private final BeslutteroversiktService beslutteroversiktService; @@ -21,6 +30,17 @@ public BeslutteroversiktController(BeslutteroversiktService beslutteroversiktSer } @PostMapping("/sok") + @Operation( + summary = "Søk", + description = "Søker etter brukere og tilhørende vedtaksutkast som krever kvalitetssikring. Søket vil returnere brukere fra samtlige enheter som innlogget/autentisert bruker (veileder) er knyttet til og har tilgang til, med mindre en liste av enheter som det skal filtreres på oppgis i requesten.", + responses = { + @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = BrukereMedAntall.class))), + @ApiResponse(responseCode = "400", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))) + } + ) public BrukereMedAntall startBeslutterProsess(@RequestBody BeslutteroversiktSok sokData) { return beslutteroversiktService.sokEtterBruker(sokData); } diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/KodeverkController.java b/src/main/java/no/nav/veilarbvedtaksstotte/controller/KodeverkController.java index baed70433..e7a14afbd 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/KodeverkController.java +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/KodeverkController.java @@ -1,5 +1,11 @@ package no.nav.veilarbvedtaksstotte.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; import no.nav.veilarbvedtaksstotte.controller.dto.KodeverkDTO; import no.nav.veilarbvedtaksstotte.domain.vedtak.HovedmalDetaljert; import no.nav.veilarbvedtaksstotte.domain.vedtak.InnsatsgruppeDetaljert; @@ -10,20 +16,54 @@ @RestController @RequestMapping("/open/api/kodeverk") +@Tag( + name = "Kodeverk", + description = "Funksjonalitet knyttet til veilarbvedtaksstotte sitt kodeverk." +) public class KodeverkController { KodeverkDTO kodeverk = new KodeverkDTO(); @GetMapping("/innsatsgruppe") + @Operation( + summary = "Hent kodeverk for innsatsgruppe", + description = "Henter kodeverket for innsatsgruppe.", + responses = { + @ApiResponse( + responseCode = "200", + content = @Content(array = @ArraySchema(schema = @Schema(implementation = InnsatsgruppeDetaljert.class))) + ) + } + ) public InnsatsgruppeDetaljert[] getInnsatsgrupper() { return kodeverk.getInnsatsgrupper(); } @GetMapping("/hovedmal") + @Operation( + summary = "Hent kodeverk for hovedmål", + description = "Henter kodeverket for hovedmål.", + responses = { + @ApiResponse( + responseCode = "200", + content = @Content(array = @ArraySchema(schema = @Schema(implementation = HovedmalDetaljert.class))) + ) + } + ) public HovedmalDetaljert[] getHovedmal() { return kodeverk.getHovedmal(); } @GetMapping("/innsatsgruppeoghovedmal") + @Operation( + summary = "Hent kodeverk for innsatsgruppe og hovedmål", + description = "Henter kodeverket for både innsatsgruppe og hovedmål.", + responses = { + @ApiResponse( + responseCode = "200", + content = @Content(array = @ArraySchema(schema = @Schema(implementation = KodeverkDTO.class))) + ) + } + ) public KodeverkDTO getKodeverk() { return kodeverk; } diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/MeldingController.java b/src/main/java/no/nav/veilarbvedtaksstotte/controller/MeldingController.java index 054ee2fc9..b43a7c5fc 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/MeldingController.java +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/MeldingController.java @@ -1,5 +1,11 @@ package no.nav.veilarbvedtaksstotte.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; import no.nav.veilarbvedtaksstotte.controller.dto.MeldingDTO; import no.nav.veilarbvedtaksstotte.controller.dto.OpprettDialogMeldingDTO; import no.nav.veilarbvedtaksstotte.service.MeldingService; @@ -18,6 +24,12 @@ @RestController @RequestMapping("/api/meldinger") +@Tag( + name = "Meldinger", + description = "Funksjonalitet knyttet til meldinger/meldingskanal mellom ansvarlig veileder og kvalitetssikrer. " + + "Alle meldinger er knyttet til et gitt vedtaksutkast. Meldinger kan enten være produsert av systemet " + + "(f.eks. i forbindelse med endring av status på kvalitetssikring) eller skrevet av ansvarlig veileder/kvalitetssikrer." +) public class MeldingController { private final VedtakService vedtakService; @@ -31,6 +43,20 @@ public MeldingController(VedtakService vedtakService, MeldingService meldingServ } @GetMapping + @Operation( + summary = "Hent meldinger", + description = "Henter alle meldinger mellom ansvarlig veileder og kvalitetssikrer som er knyttet til det " + + "spesifiserte vedtaksutkastet.", + responses = { + @ApiResponse( + responseCode = "200", + content = @Content(array = @ArraySchema(schema = @Schema(implementation = MeldingDTO.class))) + ), + @ApiResponse(responseCode = "400", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true))) + } + ) public List hentDialogMeldinger(@RequestParam("vedtakId") long vedtakId) { if (vedtakService.erFattet(vedtakId)) { throw new ResponseStatusException(HttpStatus.BAD_REQUEST); @@ -40,6 +66,11 @@ public List hentDialogMeldinger(@RequestParam("vedtakId") long vedta } @PostMapping + @Operation( + summary = "Opprett melding", + description = "Opprettet en ny melding og knytter den til det spesifiserte vedtaksutkastet. Meldingen vil " + + "bli synlig i meldingskanalen mellom ansvarlig veileder og kvalitetssikrer." + ) public void opprettDialogMelding(@RequestParam("vedtakId") long vedtakId, @RequestBody OpprettDialogMeldingDTO opprettDialogMeldingDTO) { if (vedtakService.erFattet(vedtakId)) { throw new ResponseStatusException(HttpStatus.BAD_REQUEST); diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/Siste14aVedtakController.kt b/src/main/java/no/nav/veilarbvedtaksstotte/controller/Siste14aVedtakController.kt index 56381b0bf..a377c814a 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/Siste14aVedtakController.kt +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/Siste14aVedtakController.kt @@ -1,5 +1,6 @@ package no.nav.veilarbvedtaksstotte.controller +import io.swagger.v3.oas.annotations.tags.Tag import no.nav.common.types.identer.Fnr import no.nav.veilarbvedtaksstotte.controller.dto.Siste14aVedtakDTO import no.nav.veilarbvedtaksstotte.service.AuthService @@ -13,6 +14,10 @@ import org.springframework.web.server.ResponseStatusException @RestController @RequestMapping("/api") +@Tag( + name = "Siste § 14 a-vedtak", + description = "Funksjonalitet knyttet til siste § 14 a-vedtak." +) class Siste14aVedtakController( val authService: AuthService, val siste14aVedtakService: Siste14aVedtakService diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/UtrullingController.java b/src/main/java/no/nav/veilarbvedtaksstotte/controller/UtrullingController.java index 3b74287a2..83bc4e777 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/UtrullingController.java +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/UtrullingController.java @@ -1,5 +1,10 @@ package no.nav.veilarbvedtaksstotte.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; import no.nav.common.types.identer.EnhetId; import no.nav.common.types.identer.Fnr; import no.nav.veilarbvedtaksstotte.service.UtrullingService; @@ -11,6 +16,10 @@ @RestController @RequestMapping("/api/utrulling") +@Tag( + name = "Utrulling", + description = "Funksjonalitet knyttet til utrulling (hvilke kontorer som har tilgang til løsningen)." +) public class UtrullingController { private final UtrullingService utrullingService; @@ -27,11 +36,33 @@ public boolean tilhorerBrukerUtrulletKontor(@RequestParam Fnr fnr) { } @GetMapping("/tilhorerVeilederUtrulletKontor") + @Operation( + summary = "Tilhører veileder utrullet enhet", + description = "Sjekker om innlogget/autentisert bruker (veileder) tilhører (har tilgang til) minst en NAV-enhet hvor løsningen er rullet ut.", + responses = { + @ApiResponse( + responseCode = "200", + content = @Content(schema = @Schema(implementation = Boolean.class)) + ), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))), + } + ) public boolean tilhorerVeilederUtrulletKontor() { return utrullingService.tilhorerInnloggetVeilederUtrulletKontor(); } @GetMapping("/erUtrullet") + @Operation( + summary = "Er utrullet til enhet", + description = "Sjekker om løsningen er rullet ut til spesifisert NAV-enhet.", + responses = { + @ApiResponse( + responseCode = "200", + content = @Content(schema = @Schema(implementation = Boolean.class)) + ), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))), + } + ) public boolean erUtrullet(@RequestParam EnhetId enhetId) { return utrullingService.erUtrullet(enhetId); } diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/VedtakController.java b/src/main/java/no/nav/veilarbvedtaksstotte/controller/VedtakController.java index 3f13bf670..9edeb3214 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/VedtakController.java +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/VedtakController.java @@ -1,5 +1,10 @@ package no.nav.veilarbvedtaksstotte.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; import no.nav.common.types.identer.Fnr; import no.nav.veilarbvedtaksstotte.domain.arkiv.ArkivertVedtak; import no.nav.veilarbvedtaksstotte.domain.oyeblikksbilde.OyeblikksbildeArbeidssokerRegistretDto; @@ -24,6 +29,13 @@ @RestController @RequestMapping("/api/vedtak") +@Tag( + name = "Fattede vedtak", + description = """ + Funksjonalitet knyttet til fattede § 14 a-vedtak. + Kommentar om øyeblikksbilde: begrepet "øyeblikksbilde" blir her brukt om opplysninger fra tidspunktet når § 14 a-vedtaket ble fattet og som har blitt journalført/arkivert sammen med selve vedtaket. + """ +) public class VedtakController { private final VedtakService vedtakService; @@ -38,6 +50,16 @@ public VedtakController(VedtakService vedtakService, ArenaVedtakService arenaVed } @GetMapping(value = "{vedtakId}/pdf", produces = MediaType.APPLICATION_PDF_VALUE) + @Operation( + summary = "Hent fattet vedtak", + description = "Henter det spesifiserte fattede § 14 a-vedtaket i dokumentformat. Per dags dato støttes kun PDF-dokument (application/pdf).", + responses = { + @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(type = "string", format = "binary"))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))), + } + ) public ResponseEntity hentVedtakPdf(@PathVariable("vedtakId") long vedtakId) { byte[] vedtakPdf = vedtakService.hentVedtakPdf(vedtakId); return ResponseEntity.ok() @@ -46,6 +68,16 @@ public ResponseEntity hentVedtakPdf(@PathVariable("vedtakId") long vedta } @GetMapping(value = "{vedtakId}/{oyeblikksbildeType}/pdf", produces = MediaType.APPLICATION_PDF_VALUE) + @Operation( + summary = "Hent øyeblikksbilde", + description = "Henter en gitt type øyeblikksbilde knyttet til det spesifiserte § 14 a-vedtaket på dokumentformat. Per dags dato støttes kun PDF-dokument (application/pdf).", + responses = { + @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(type = "string", format = "binary"))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))), + } + ) public ResponseEntity hentVedtakOyeblikksCVPdf(@PathVariable("vedtakId") long vedtakId, @PathVariable("oyeblikksbildeType") String oyeblikksbildeInputType) { OyeblikksbildeType oyeblikksbildeType = OyeblikksbildeType.valueOf(oyeblikksbildeInputType); String dokumentId = oyeblikksbildeService.hentJournalfortDokumentId(vedtakId, oyeblikksbildeType); @@ -68,21 +100,57 @@ public List hentFattedeVedtak(@RequestParam("fnr") Fnr fnr) { @GetMapping("{vedtakId}/oyeblikksbilde-cv") + @Operation( + summary = "Hent CV-øyeblikksbilde", + description = "Henter CV-opplysninger som ble journalført/arkivert sammen med vedtaket på tidspunktet når " + + "det spesifiserte § 14 a-vedtaket ble fattet.", + responses = { + @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = OyeblikksbildeCvDto.class))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + } + ) public OyeblikksbildeCvDto hentCVOyeblikksbilde(@PathVariable("vedtakId") long vedtakId) { return oyeblikksbildeService.hentCVOyeblikksbildeForVedtak(vedtakId); } @GetMapping("{vedtakId}/oyeblikksbilde-registrering") + @Operation( + summary = "Hent arbeidssøkerregistrering-øyeblikksbilde (gammelt register)", + description = "Henter arbeidssøker-opplysninger (fra gammelt register) som ble journalført/arkivert sammen med vedtaket på tidspunktet når " + + "det spesifiserte § 14 a-vedtaket ble fattet.", + responses = { + @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = OyeblikksbildeRegistreringDto.class))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + } + ) public OyeblikksbildeRegistreringDto hentRegistreringOyeblikksbilde(@PathVariable("vedtakId") long vedtakId) { return oyeblikksbildeService.hentRegistreringOyeblikksbildeForVedtak(vedtakId); } @GetMapping("{vedtakId}/oyeblikksbilde-arbeidssokerRegistret") + @Operation( + summary = "Hent arbeidssøkerregistrering-øyeblikksbilde (nytt register)", + description = "Henter arbeidssøker-opplysninger (fra nytt register) som ble journalført/arkivert sammen med vedtaket på tidspunktet når " + + "det spesifiserte § 14 a-vedtaket ble fattet.", + responses = { + @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = OyeblikksbildeArbeidssokerRegistretDto.class))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + } + ) public OyeblikksbildeArbeidssokerRegistretDto hentArbeidssokerRegistretOyeblikksbilde(@PathVariable("vedtakId") long vedtakId) { return oyeblikksbildeService.hentArbeidssokerRegistretOyeblikksbildeForVedtak(vedtakId); } @GetMapping("{vedtakId}/oyeblikksbilde-egenvurdering") + @Operation( + summary = "Hent arbeidssøkerregistrering-øyeblikksbilde (nytt register)", + description = "Henter arbeidssøker-opplysninger (fra nytt register) som ble journalført/arkivert sammen med vedtaket på tidspunktet når " + + "det spesifiserte § 14 a-vedtaket ble fattet.", + responses = { + @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = OyeblikksbildeArbeidssokerRegistretDto.class))), + @ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))), + } + ) public OyeblikksbildeEgenvurderingDto hentEgenvurderingOyeblikksbilde(@PathVariable("vedtakId") long vedtakId) { return oyeblikksbildeService.hentEgenvurderingOyeblikksbildeForVedtak(vedtakId); } @@ -94,6 +162,14 @@ public List hentVedtakFraArena(@RequestParam("fnr") Fnr fnr) { } @GetMapping(value = "/arena/pdf", produces = MediaType.APPLICATION_PDF_VALUE) + @Operation( + summary = "Hent fattet § 14 a-vedtak (Arena)", + description = "Henter det spesifiserte fattede § 14 a-vedtaket i dokumentformat. Per dags dato støttes kun PDF-dokument (application/pdf).", + responses = { + @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(type = "string", format = "binary"))), + @ApiResponse(responseCode = "500", content = @Content(schema = @Schema(hidden = true))), + } + ) public ResponseEntity hentVedtakPdfFraArena( @RequestParam("dokumentInfoId") String dokumentInfoId, @RequestParam("journalpostId") String journalpostId) { diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/dto/LagUtkastDTO.java b/src/main/java/no/nav/veilarbvedtaksstotte/controller/dto/LagUtkastDTO.java index fc2b401e4..d8c3a8e2d 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/dto/LagUtkastDTO.java +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/dto/LagUtkastDTO.java @@ -7,6 +7,6 @@ @Data public class LagUtkastDTO { - @Schema(description = "Fødselsnummeret til brukeren vedtaksutkastet skal knyttes til") + @Schema(description = "Fødselsnummeret til en oppfølgingsbruker") Fnr fnr; } diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/Siste14aVedtakV2Controller.kt b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/Siste14aVedtakV2Controller.kt index 21f1b4fc4..103e56a18 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/Siste14aVedtakV2Controller.kt +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/Siste14aVedtakV2Controller.kt @@ -1,5 +1,10 @@ package no.nav.veilarbvedtaksstotte.controller.v2 +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.media.Content +import io.swagger.v3.oas.annotations.media.Schema +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.tags.Tag import no.nav.common.types.identer.Fnr import no.nav.veilarbvedtaksstotte.controller.dto.Siste14aVedtakDTO import no.nav.veilarbvedtaksstotte.controller.v2.dto.Siste14aVedtakRequest @@ -14,12 +19,30 @@ import org.springframework.web.server.ResponseStatusException @RestController @RequestMapping("/api/v2") +@Tag( + name = "Siste § 14 a-vedtak V2", + description = "Funksjonalitet knyttet til siste § 14 a-vedtak." +) class Siste14aVedtakV2Controller( val authService: AuthService, val siste14aVedtakService: Siste14aVedtakService ) { @PostMapping("/hent-siste-14a-vedtak") + @Operation( + summary = "Hent siste 14a vedtak", + description = "Henter det siste registrerte § 14 a-vedtaket for den spesifiserte brukeren.", + responses = [ + ApiResponse( + responseCode = "200", + content = [Content(schema = Schema(implementation = Siste14aVedtakDTO::class))] + ), + ApiResponse( + responseCode = "403", + content = [Content(schema = Schema(hidden = true))] + ) + ] + ) fun hentSiste14aVedtak(@RequestBody siste14aVedtakRequest: Siste14aVedtakRequest): Siste14aVedtakDTO? { sjekkTilgang(siste14aVedtakRequest.fnr) @@ -34,8 +57,7 @@ class Siste14aVedtakV2Controller( } } else if (authService.erEksternBruker()) { authService.sjekkEksternbrukerTilgangTilBruker(fnr) - } - else { + } else { authService.sjekkVeilederTilgangTilBruker(fnr) } } diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/UtrullingV2Controller.kt b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/UtrullingV2Controller.kt index 56a616324..22f3f856a 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/UtrullingV2Controller.kt +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/UtrullingV2Controller.kt @@ -1,5 +1,10 @@ package no.nav.veilarbvedtaksstotte.controller.v2 +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.media.Content +import io.swagger.v3.oas.annotations.media.Schema +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.tags.Tag import no.nav.veilarbvedtaksstotte.controller.v2.dto.UtrullingRequest import no.nav.veilarbvedtaksstotte.service.UtrullingService import org.springframework.web.bind.annotation.PostMapping @@ -9,10 +14,25 @@ import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/api/v2/utrulling") +@Tag( + name = "Utrulling V2", + description = "Funksjonalitet knyttet til utrulling (hvilke kontorer som har tilgang til løsningen)." +) class UtrullingV2Controller( val utrullingService: UtrullingService ) { + @PostMapping("/hent-tilhorerBrukerUtrulletKontor") + @Operation( + summary = "Tilhører bruker utrullet enhet", + description = "Sjekker om spesifisert bruker tilhører en NAV-enhet hvor løsningen er rullet ut.", + responses = [ + ApiResponse( + responseCode = "200", + content = [Content(schema = Schema(implementation = Boolean::class))] + ), + ] + ) fun tilhorerBrukerUtrulletKontor(@RequestBody utrullingRequest: UtrullingRequest): Boolean { return utrullingService.tilhorerBrukerUtrulletKontor(utrullingRequest.fnr) } diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/VedtakV2Controller.kt b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/VedtakV2Controller.kt index 2fcc966d6..d60dd353f 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/VedtakV2Controller.kt +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/VedtakV2Controller.kt @@ -1,5 +1,11 @@ package no.nav.veilarbvedtaksstotte.controller.v2 +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.media.ArraySchema +import io.swagger.v3.oas.annotations.media.Content +import io.swagger.v3.oas.annotations.media.Schema +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.tags.Tag import no.nav.veilarbvedtaksstotte.controller.v2.dto.VedtakRequest import no.nav.veilarbvedtaksstotte.domain.arkiv.ArkivertVedtak import no.nav.veilarbvedtaksstotte.domain.vedtak.Vedtak @@ -12,19 +18,53 @@ import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/api/v2/vedtak") +@Tag( + name = "Vedtak V2", + description = "Funksjonalitet knyttet til § 14 a-vedtak." +) class VedtakV2Controller( val vedtakService: VedtakService, val arenaVedtakService: ArenaVedtakService, ) { @PostMapping("/hent-fattet") + @Operation( + summary = "Hent fattede § 14 a-vedtak", + description = "Henter fattede § 14 a-vedtak for den spesifiserte brukeren.", + responses = [ + ApiResponse( + responseCode = "200", + content = [Content(array = ArraySchema(schema = Schema(implementation = Vedtak::class)))] + ), + ApiResponse( + responseCode = "403", + content = [Content(schema = Schema(hidden = true))] + ) + ] + ) fun hentFattedeVedtak(@RequestBody vedtakRequest: VedtakRequest): List { return vedtakService.hentFattedeVedtak(vedtakRequest.fnr) } @PostMapping("/hent-arena") + @Operation( + summary = "Hent § 14 a-vedtak fra Arena", + description = "Henter arkiverte § 14 a-vedtak fra Arena for den spesifiserte brukeren.", + responses = [ + ApiResponse( + responseCode = "200", + content = [Content(array = ArraySchema(schema = Schema(implementation = ArkivertVedtak::class)))] + ), + ApiResponse( + responseCode = "403", + content = [Content(schema = Schema(hidden = true))] + ), + ApiResponse( + responseCode = "500", + content = [Content(schema = Schema(hidden = true))] + ) + ] + ) fun hentVedtakFraArena(@RequestBody vedtakRequest: VedtakRequest): List { return arenaVedtakService.hentVedtakFraArena(vedtakRequest.fnr) } - } - diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/Siste14aVedtakRequest.kt b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/Siste14aVedtakRequest.kt index 0b8a17435..4c6f8c05a 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/Siste14aVedtakRequest.kt +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/Siste14aVedtakRequest.kt @@ -1,7 +1,9 @@ package no.nav.veilarbvedtaksstotte.controller.v2.dto +import io.swagger.v3.oas.annotations.media.Schema import no.nav.common.types.identer.Fnr data class Siste14aVedtakRequest( + @Schema(description = "Fødselsnummer til brukeren som man ønsker å hente det siste § 14 a-vedtaket til") val fnr: Fnr ) diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/UtkastRequest.kt b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/UtkastRequest.kt index 5fc1aae2e..4b1aa907c 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/UtkastRequest.kt +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/UtkastRequest.kt @@ -4,6 +4,6 @@ import io.swagger.v3.oas.annotations.media.Schema import no.nav.common.types.identer.Fnr data class UtkastRequest( - @Schema(description = "Fødselsnummeret til brukeren som vedtaksutkastet er knyttet til") + @Schema(description = "Fødselsnummeret til en oppfølgingsbruker") val fnr: Fnr ) diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/UtrullingRequest.kt b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/UtrullingRequest.kt index 39dbe04d3..c943c780e 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/UtrullingRequest.kt +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/UtrullingRequest.kt @@ -1,7 +1,9 @@ package no.nav.veilarbvedtaksstotte.controller.v2.dto +import io.swagger.v3.oas.annotations.media.Schema import no.nav.common.types.identer.Fnr data class UtrullingRequest( + @Schema(description = "Fødselsnummeret til en oppfølgingsbruker") val fnr: Fnr ) diff --git a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/VedtakRequest.kt b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/VedtakRequest.kt index dad88a049..171bb7690 100644 --- a/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/VedtakRequest.kt +++ b/src/main/java/no/nav/veilarbvedtaksstotte/controller/v2/dto/VedtakRequest.kt @@ -1,7 +1,9 @@ package no.nav.veilarbvedtaksstotte.controller.v2.dto +import io.swagger.v3.oas.annotations.media.Schema import no.nav.common.types.identer.Fnr data class VedtakRequest( + @Schema(description = "Fødselsnummeret til en oppfølgingsbruker") val fnr: Fnr )