Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PI-2374 Migrate OpenAPI yaml to annotations #466

Merged
merged 4 commits into from
Aug 19, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Remove re-usable parameters
causes OpenAPI validation failures
  • Loading branch information
marcus-bcl committed Aug 16, 2024
commit 12cd9ebb24610ec6097e2697d6a948e0e84583e5
Original file line number Diff line number Diff line change
@@ -10,12 +10,10 @@ import io.swagger.v3.oas.annotations.security.SecurityScheme
import io.swagger.v3.oas.annotations.servers.Server
import io.swagger.v3.oas.models.OpenAPI
import io.swagger.v3.oas.models.media.Schema
import io.swagger.v3.oas.models.parameters.Parameter
import org.springdoc.core.customizers.GlobalOpenApiCustomizer
import org.springdoc.core.customizers.OpenApiCustomizer
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import java.math.BigDecimal

@OpenAPIDefinition(
info =
@@ -51,44 +49,11 @@ import java.math.BigDecimal
)
@Configuration
class OpenAPIConfig {
companion object {
const val HMPPS_ID = "#components/parameters/hmppsId"
const val PAGE = "#components/parameters/page"
const val PER_PAGE = "#components/parameters/perPage"
}

@Bean
fun openApiCustomizer(): OpenApiCustomizer =
object : GlobalOpenApiCustomizer {
override fun customise(openApi: OpenAPI) {
openApi.components
.addParameters(
"hmppsId",
Parameter()
.name("hmppsId")
.description("A URL-encoded HMPPS identifier")
.example("2008%2F0545166T")
.schema(Schema<String>().type("string"))
.`in`("path")
.required(true),
)
.addParameters(
"page",
Parameter()
.name("page")
.description("The page number (starting from 1)")
.schema(Schema<Int>().type("number").minimum(BigDecimal.ONE)._default(1))
.`in`("query")
.required(false),
)
.addParameters(
"perPage",
Parameter().name("perPage")
.description("The maximum number of results for a page")
.schema(Schema<Int>().type("number").minimum(BigDecimal.ONE)._default(10))
.`in`("query")
.required(false),
)
.addSchemas(
"BadRequest",
Schema<ErrorResponse>()
Original file line number Diff line number Diff line change
@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.AuthorisationConfig
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.RiskManagementPlan
@@ -43,9 +40,9 @@ class RiskManagementController(
],
)
fun getRiskManagementPlans(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
): PaginatedResponse<RiskManagementPlan> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getRiskManagementPlansForCrnService.execute(hmppsId)
Original file line number Diff line number Diff line change
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Address
@@ -38,7 +37,7 @@ class AddressController(
],
)
fun getPersonAddresses(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
): DataResponse<List<Address>> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getAddressesForPersonService.execute(hmppsId)
Original file line number Diff line number Diff line change
@@ -12,9 +12,6 @@ import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Adjudication
@@ -41,9 +38,9 @@ class AdjudicationsController(
],
)
fun getPersonAdjudications(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "8", name = "perPage") perPage: Int,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "8", name = "perPage") perPage: Int,
): PaginatedResponse<Adjudication> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getAdjudicationsForPersonService.execute(hmppsId)
Original file line number Diff line number Diff line change
@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Alert
@@ -42,9 +39,9 @@ class AlertsController(
],
)
fun getPersonAlerts(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
): PaginatedResponse<Alert> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getAlertsForPersonService.execute(hmppsId)
@@ -66,9 +63,9 @@ class AlertsController(
],
)
fun getPersonAlertsPND(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
): PaginatedResponse<Alert> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getAlertsForPersonService.getAlertsForPnd(hmppsId)
Original file line number Diff line number Diff line change
@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.filters.CaseNoteFilter
@@ -43,7 +42,7 @@ class CaseNotesController(
],
)
fun getCaseNotesForPerson(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
@Parameter(description = "Filter case notes from this date")
@RequestParam(required = false, name = "startDate")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
Original file line number Diff line number Diff line change
@@ -7,7 +7,6 @@ import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.CellLocation
@@ -25,7 +24,7 @@ class CellLocationController(
) {
@GetMapping("{encodedHmppsId}/cell-location")
fun getPersonCellLocation(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
): DataResponse<CellLocation?> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()

Original file line number Diff line number Diff line change
@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DynamicRisk
@@ -42,9 +39,9 @@ class DynamicRisksController(
],
)
fun getDynamicRisks(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
): PaginatedResponse<DynamicRisk> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getDynamicRisksForPersonService.execute(hmppsId)
Original file line number Diff line number Diff line change
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DataResponse
@@ -37,7 +36,7 @@ class LicenceConditionController(
],
)
fun getLicenceConditions(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
): DataResponse<PersonLicences?> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getLicenceConditionService.execute(hmppsId)
Original file line number Diff line number Diff line change
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DataResponse
@@ -37,7 +36,7 @@ class MappaDetailController(
],
)
fun getMappaDetail(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
): DataResponse<MappaDetail?> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getMappaDetailForPersonService.execute(hmppsId)
Original file line number Diff line number Diff line change
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DataResponse
@@ -42,7 +41,7 @@ class NeedsController(
],
)
fun getPersonNeeds(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
): DataResponse<Needs?> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getNeedsForPersonService.execute(hmppsId)
Original file line number Diff line number Diff line change
@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Offence
@@ -92,9 +89,9 @@ class OffencesController(
],
)
fun getPersonOffences(
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
): PaginatedResponse<Offence> {
val hmppsId = encodedHmppsId.decodeUrlCharacters()
val response = getOffencesForPersonService.execute(hmppsId)
Loading