Skip to content

Commit 12cd9eb

Browse files
committed
Remove re-usable parameters
causes OpenAPI validation failures
1 parent f6157c9 commit 12cd9eb

21 files changed

+46
-117
lines changed

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/config/OpenAPIConfig.kt

-35
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,10 @@ import io.swagger.v3.oas.annotations.security.SecurityScheme
1010
import io.swagger.v3.oas.annotations.servers.Server
1111
import io.swagger.v3.oas.models.OpenAPI
1212
import io.swagger.v3.oas.models.media.Schema
13-
import io.swagger.v3.oas.models.parameters.Parameter
1413
import org.springdoc.core.customizers.GlobalOpenApiCustomizer
1514
import org.springdoc.core.customizers.OpenApiCustomizer
1615
import org.springframework.context.annotation.Bean
1716
import org.springframework.context.annotation.Configuration
18-
import java.math.BigDecimal
1917

2018
@OpenAPIDefinition(
2119
info =
@@ -51,44 +49,11 @@ import java.math.BigDecimal
5149
)
5250
@Configuration
5351
class OpenAPIConfig {
54-
companion object {
55-
const val HMPPS_ID = "#components/parameters/hmppsId"
56-
const val PAGE = "#components/parameters/page"
57-
const val PER_PAGE = "#components/parameters/perPage"
58-
}
59-
6052
@Bean
6153
fun openApiCustomizer(): OpenApiCustomizer =
6254
object : GlobalOpenApiCustomizer {
6355
override fun customise(openApi: OpenAPI) {
6456
openApi.components
65-
.addParameters(
66-
"hmppsId",
67-
Parameter()
68-
.name("hmppsId")
69-
.description("A URL-encoded HMPPS identifier")
70-
.example("2008%2F0545166T")
71-
.schema(Schema<String>().type("string"))
72-
.`in`("path")
73-
.required(true),
74-
)
75-
.addParameters(
76-
"page",
77-
Parameter()
78-
.name("page")
79-
.description("The page number (starting from 1)")
80-
.schema(Schema<Int>().type("number").minimum(BigDecimal.ONE)._default(1))
81-
.`in`("query")
82-
.required(false),
83-
)
84-
.addParameters(
85-
"perPage",
86-
Parameter().name("perPage")
87-
.description("The maximum number of results for a page")
88-
.schema(Schema<Int>().type("number").minimum(BigDecimal.ONE)._default(10))
89-
.`in`("query")
90-
.required(false),
91-
)
9257
.addSchemas(
9358
"BadRequest",
9459
Schema<ErrorResponse>()

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/RiskManagementController.kt

+3-6
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
1313
import org.springframework.web.bind.annotation.RequestParam
1414
import org.springframework.web.bind.annotation.RestController
1515
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.AuthorisationConfig
16-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
17-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
18-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
1916
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
2017
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
2118
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.RiskManagementPlan
@@ -43,9 +40,9 @@ class RiskManagementController(
4340
],
4441
)
4542
fun getRiskManagementPlans(
46-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
47-
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
48-
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
43+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
44+
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
45+
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
4946
): PaginatedResponse<RiskManagementPlan> {
5047
val hmppsId = encodedHmppsId.decodeUrlCharacters()
5148
val response = getRiskManagementPlansForCrnService.execute(hmppsId)

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/AddressController.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping
1111
import org.springframework.web.bind.annotation.PathVariable
1212
import org.springframework.web.bind.annotation.RequestMapping
1313
import org.springframework.web.bind.annotation.RestController
14-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
1514
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
1615
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
1716
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Address
@@ -38,7 +37,7 @@ class AddressController(
3837
],
3938
)
4039
fun getPersonAddresses(
41-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
40+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
4241
): DataResponse<List<Address>> {
4342
val hmppsId = encodedHmppsId.decodeUrlCharacters()
4443
val response = getAddressesForPersonService.execute(hmppsId)

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/AdjudicationsController.kt

+3-6
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ import org.springframework.web.bind.annotation.PathVariable
1212
import org.springframework.web.bind.annotation.RequestMapping
1313
import org.springframework.web.bind.annotation.RequestParam
1414
import org.springframework.web.bind.annotation.RestController
15-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
16-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
17-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
1815
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
1916
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
2017
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Adjudication
@@ -41,9 +38,9 @@ class AdjudicationsController(
4138
],
4239
)
4340
fun getPersonAdjudications(
44-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
45-
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
46-
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "8", name = "perPage") perPage: Int,
41+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
42+
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
43+
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "8", name = "perPage") perPage: Int,
4744
): PaginatedResponse<Adjudication> {
4845
val hmppsId = encodedHmppsId.decodeUrlCharacters()
4946
val response = getAdjudicationsForPersonService.execute(hmppsId)

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/AlertsController.kt

+6-9
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
1313
import org.springframework.web.bind.annotation.RequestMapping
1414
import org.springframework.web.bind.annotation.RequestParam
1515
import org.springframework.web.bind.annotation.RestController
16-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
17-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
18-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
1916
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
2017
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
2118
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Alert
@@ -42,9 +39,9 @@ class AlertsController(
4239
],
4340
)
4441
fun getPersonAlerts(
45-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
46-
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
47-
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
42+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
43+
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
44+
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
4845
): PaginatedResponse<Alert> {
4946
val hmppsId = encodedHmppsId.decodeUrlCharacters()
5047
val response = getAlertsForPersonService.execute(hmppsId)
@@ -66,9 +63,9 @@ class AlertsController(
6663
],
6764
)
6865
fun getPersonAlertsPND(
69-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
70-
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
71-
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
66+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
67+
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
68+
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
7269
): PaginatedResponse<Alert> {
7370
val hmppsId = encodedHmppsId.decodeUrlCharacters()
7471
val response = getAlertsForPersonService.getAlertsForPnd(hmppsId)

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/CaseNotesController.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
1313
import org.springframework.web.bind.annotation.RequestMapping
1414
import org.springframework.web.bind.annotation.RequestParam
1515
import org.springframework.web.bind.annotation.RestController
16-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
1716
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
1817
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
1918
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.filters.CaseNoteFilter
@@ -43,7 +42,7 @@ class CaseNotesController(
4342
],
4443
)
4544
fun getCaseNotesForPerson(
46-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
45+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
4746
@Parameter(description = "Filter case notes from this date")
4847
@RequestParam(required = false, name = "startDate")
4948
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/CellLocationController.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import org.springframework.web.bind.annotation.GetMapping
77
import org.springframework.web.bind.annotation.PathVariable
88
import org.springframework.web.bind.annotation.RequestMapping
99
import org.springframework.web.bind.annotation.RestController
10-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
1110
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
1211
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
1312
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.CellLocation
@@ -25,7 +24,7 @@ class CellLocationController(
2524
) {
2625
@GetMapping("{encodedHmppsId}/cell-location")
2726
fun getPersonCellLocation(
28-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
27+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
2928
): DataResponse<CellLocation?> {
3029
val hmppsId = encodedHmppsId.decodeUrlCharacters()
3130

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/DynamicRisksController.kt

+3-6
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
1313
import org.springframework.web.bind.annotation.RequestMapping
1414
import org.springframework.web.bind.annotation.RequestParam
1515
import org.springframework.web.bind.annotation.RestController
16-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
17-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
18-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
1916
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
2017
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
2118
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DynamicRisk
@@ -42,9 +39,9 @@ class DynamicRisksController(
4239
],
4340
)
4441
fun getDynamicRisks(
45-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
46-
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
47-
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
42+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
43+
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
44+
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
4845
): PaginatedResponse<DynamicRisk> {
4946
val hmppsId = encodedHmppsId.decodeUrlCharacters()
5047
val response = getDynamicRisksForPersonService.execute(hmppsId)

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/LicenceConditionController.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping
1111
import org.springframework.web.bind.annotation.PathVariable
1212
import org.springframework.web.bind.annotation.RequestMapping
1313
import org.springframework.web.bind.annotation.RestController
14-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
1514
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
1615
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
1716
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DataResponse
@@ -37,7 +36,7 @@ class LicenceConditionController(
3736
],
3837
)
3938
fun getLicenceConditions(
40-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
39+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
4140
): DataResponse<PersonLicences?> {
4241
val hmppsId = encodedHmppsId.decodeUrlCharacters()
4342
val response = getLicenceConditionService.execute(hmppsId)

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/MappaDetailController.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping
1111
import org.springframework.web.bind.annotation.PathVariable
1212
import org.springframework.web.bind.annotation.RequestMapping
1313
import org.springframework.web.bind.annotation.RestController
14-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
1514
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
1615
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
1716
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DataResponse
@@ -37,7 +36,7 @@ class MappaDetailController(
3736
],
3837
)
3938
fun getMappaDetail(
40-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
39+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
4140
): DataResponse<MappaDetail?> {
4241
val hmppsId = encodedHmppsId.decodeUrlCharacters()
4342
val response = getMappaDetailForPersonService.execute(hmppsId)

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/NeedsController.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping
1111
import org.springframework.web.bind.annotation.PathVariable
1212
import org.springframework.web.bind.annotation.RequestMapping
1313
import org.springframework.web.bind.annotation.RestController
14-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
1514
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
1615
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
1716
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DataResponse
@@ -42,7 +41,7 @@ class NeedsController(
4241
],
4342
)
4443
fun getPersonNeeds(
45-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
44+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
4645
): DataResponse<Needs?> {
4746
val hmppsId = encodedHmppsId.decodeUrlCharacters()
4847
val response = getNeedsForPersonService.execute(hmppsId)

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/OffencesController.kt

+3-6
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.PathVariable
1313
import org.springframework.web.bind.annotation.RequestMapping
1414
import org.springframework.web.bind.annotation.RequestParam
1515
import org.springframework.web.bind.annotation.RestController
16-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.HMPPS_ID
17-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PAGE
18-
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.config.OpenAPIConfig.Companion.PER_PAGE
1916
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException
2017
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.decodeUrlCharacters
2118
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Offence
@@ -92,9 +89,9 @@ class OffencesController(
9289
],
9390
)
9491
fun getPersonOffences(
95-
@Parameter(ref = HMPPS_ID) @PathVariable encodedHmppsId: String,
96-
@Parameter(ref = PAGE) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
97-
@Parameter(ref = PER_PAGE) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
92+
@Parameter(description = "A URL-encoded HMPPS identifier", example = "2008%2F0545166T") @PathVariable encodedHmppsId: String,
93+
@Parameter(description = "The page number (starting from 1)", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "1", name = "page") page: Int,
94+
@Parameter(description = "The maximum number of results for a page", schema = Schema(minimum = "1")) @RequestParam(required = false, defaultValue = "10", name = "perPage") perPage: Int,
9895
): PaginatedResponse<Offence> {
9996
val hmppsId = encodedHmppsId.decodeUrlCharacters()
10097
val response = getOffencesForPersonService.execute(hmppsId)

0 commit comments

Comments
 (0)