Reputation: 91
I am using SptringBoot 3.3.4 I am building and enpoint with OpenAPI (Swagger) io.swagger.core.v3 and openapi generator 7.9.0. Here is the definition in api.yaml:
paths:
/verify:
post:
tags:
- Verification
summary: Verifies Verifiable Presenttion
description: Accepts a Verifiable Presentation JWT string for verification.
operationId: verifyVerPresentation
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
vp_token:
type: array
items:
type: string
description: array of VP JWT token strings
presentation_submission:
type: string
description: URL encoded JSON
state:
type: string
format: uuid
description: "Optional state parameter."
example: "31283ee9-c49c-415c-b5d5-055aa380eb63"
required:
- vp_token
- presentation_submission
responses:
"200":
description: VP successfully verified
content:
application/json:
schema:
$ref: '#/components/schemas/VerificationResponse'
"400":
description: Invalid request
"500":
description: Server error
This generates the following VerificationAPI:
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.9.0")
@Validated
@Tag(name = "Verification", description = "Endpoints defined by the OpenID for Verifiable Presentation Verifier spec")
public interface VerificationApi {
/**
* POST /verify : Verify VP
* Accepts a JWT VP for verification.
*
* @param vpToken array of VP JWT token strings (required)
* @param presentationSubmission URL encoded JSON string (required)
* @param state Optional state parameter. (optional)
* @return VP successfully verified (status code 200)
* or Invalid request (status code 400)
* or Server error (status code 500)
*/
@Operation(
operationId = "verifyVerPresentation",
summary = "Verify VP",
description = "Accepts a JWT VP for verification.",
tags = { "Verification" },
responses = {
@ApiResponse(responseCode = "200", description = "VP successfully verified", content = {
@Content(mediaType = "application/json", schema = @Schema(implementation = VerificationResponseResource.class))
}),
@ApiResponse(responseCode = "400", description = "Invalid request"),
@ApiResponse(responseCode = "500", description = "Server error")
}
)
@RequestMapping(
method = RequestMethod.POST,
value = "/verify",
produces = { "application/json" },
consumes = "application/x-www-form-urlencoded"
)
ResponseEntity<VerificationResponseResource> verifyVerPresentation (
@Parameter(name = "vp_token", description = "array of VP JWT token strings", required = true) @Valid @RequestPart(value = "vp_token", required = true) List<String> vpToken,
@Parameter(name = "presentation_submission", description = "URL encoded JSON string", required = true) @Valid @RequestParam(value = "presentation_submission", required = true) String presentationSubmission,
@Parameter(name = "state", description = "Optional state parameter.") @Valid @RequestParam(value = "state", required = false) UUID state);
}
Respectively my controller is:
@RestController
@RequiredArgsConstructor
public class VerificationController implements VerificationApi {
private final VPValidationService vpValidationService;
private final ValidationResponseMapper validationResponseMapper;
private final ObjectMapper objectMapper;
@Override
public ResponseEntity<ValidationResponseDTO> verifyVerPresentation(
@RequestParam(name = "vp_token") List<String> vpTokens,
@RequestParam(name="presentation_submission") String presentationSubmission,
@RequestParam(required = false) UUID state) {
PresentationSubmission presSubmissionEntity = parsePresentationSubmissionEntity(presentationSubmission);
ValidationResponse responseBody = vpValidationService.verifyVerPresentation(vpTokens, presSubmissionEntity);
return ResponseEntity.ok(verificationResponseMapper.toResource(responseBody));
}
}
So, although I have defined: content: application/x-www-form-urlencoded in api.yaml, I get:
415 Unsupported Media Type
when I run the endpoint with appropriate params: vp_token: list of JWT strings, presentation_submission: url encoded Json string, state: UUID-formatted string.
The request returns this error only in Swagger, if I test it in Postman, it works. The reason is that in Postman I send this curl request:
Postman request works( code 200)
curl \
--location \
--request POST \
'http://localhost:8082/verify \
?vp_token=eyJraWQiOiJkaWQ6a2V5Ono2TWtyeUdKTXdOS1g4aXlZcGdWVmp2ckNBdmthVzlzbkw5cHFQN0JQWEdmM3FMUSIsInR5cCI6IkpXVCIsImFsZyI6IkVkRFNBIn0.eyJpc3MiOiJkaWQ6a2V5Ono2TWtyeUdKTXdOS1g4aXlZcGdWVmp2ckNBdmthVzlzbkw5cHFQN0JQWEdmM3FMUSIsInZwIjp7InByZXNlbnRhdGlvbkRlZmluaXRpb25JZCI6IjI5MTEzMTBkLTNlNDUtNGFhNS1iYTYzLWQ5M2QxM2Q1YzVhNSIsImlzc3VhbmNlRGF0ZSI6IjIwMjUtMDItMjVUMDc6NDQ6MTguMzMyODY4NjAwWiIsImhvbGRlciI6ImRpZDprZXk6ejZNa3J5R0pNd05LWDhpeVlwZ1ZWanZyQ0F2a2FXOXNuTDlwcVA3QlBYR2YzcUxRIiwidHlwZSI6WyJWZXJpZmlhYmxlUHJlc2VudGF0aW9uIl0sIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInZlcmlmaWFibGVDcmVkZW50aWFsIjpbImV5SnJhV1FpT2lKa2FXUTZhbmRyT21WNVNuSmtTR3RwVDJsS1JsRjVTWE5KYlU1NVpHbEpOa2xzUVhSTmFsVXlTV2wzYVdFeWJHdEphbTlwVFRGc1QxcEViRWRpYm1jMVUyMTROVlZHV2xwa01tUllVbXRWZWs0d1ZYcFNNMlJLVFVkV1NHSkZUa3hQU0dSSFlrWmtORkl5V25kVVUwbHpTVzVuYVU5cFNrZGlNMXBhVFdwR1RWRlZSbEJXUjNodVRGY3dkRlJ0Vmt4V01taGhVbFYzTVZsVldubGliRWwzWkZkT1MyRnJVVEZXUlhSM1VqTldia2xwZDJsbFUwazJTV3RPZVZKcmNHMVNNVkpyVlVSSk5WTnJjR3BaTTBKU1YwaFdOVlJWT0hwaU1tZ3daVzVLVldOV1FqWlJiRUpEVTFaU1dtRnFRblphTUVWcFpsRWlMQ0owZVhBaU9pSktWMVFpTENKaGJHY2lPaUpGVXpJMU5pSjkuZXlKcGMzTWlPaUprYVdRNmFuZHJPbVY1U25Ka1NHdHBUMmxLUmxGNVNYTkpiVTU1WkdsSk5rbHNRWFJOYWxVeVNXbDNhV0V5Ykd0SmFtOXBUVEZzVDFwRWJFZGlibWMxVTIxNE5WVkdXbHBrTW1SWVVtdFZlazR3VlhwU00yUktUVWRXU0dKRlRreFBTR1JIWWtaa05GSXlXbmRVVTBselNXNW5hVTlwU2tkaU0xcGFUV3BHVFZGVlJsQldSM2h1VEZjd2RGUnRWa3hXTW1oaFVsVjNNVmxWV25saWJFbDNaRmRPUzJGclVURldSWFIzVWpOV2JrbHBkMmxsVTBrMlNXdE9lVkpyY0cxU01WSnJWVVJKTlZOcmNHcFpNMEpTVjBoV05WUlZPSHBpTW1nd1pXNUtWV05XUWpaUmJFSkRVMVpTV21GcVFuWmFNRVZwWmxFaUxDSnpkV0lpT2lKa2FXUTZhbmRyT21WNVNuSmtTR3RwVDJsS1VGTXhRV2xNUTBwcVkyNVphVTlwU2taYVJFa3hUbFJGTlVscGQybGhNbXhyU1dwdmFXRlZhRWRSVm1oSFUxaHNTRkpHYUhWUk0xcDVVMWhXU2xaVlZtaGtTRnB6V2xkV1JXVkhkRk5hTUZaTVZESlNObHBHWkdGaE0yUkRVVk5KYzBsdVoybFBhVXBaVDBkNFUyRXdhSFZSVmxKS1lXdHZNVmxVVWtoWGJFcENaV3M1U0dWcWJHbGlNa1V6V0hwSmRGSkhNVlZWVmpsSFpVaEtSbE5WV2xaSmJqQWlMQ0oyWXlJNmV5SkFZMjl1ZEdWNGRDSTZXeUpvZEhSd2N6b3ZMM2QzZHk1M015NXZjbWN2TWpBeE9DOWpjbVZrWlc1MGFXRnNjeTkyTVNKZExDSjBlWEJsSWpwYklsWmxjbWxtYVdGaWJHVkRjbVZrWlc1MGFXRnNJaXdpU1dSbGJuUnBkSGxEY21Wa1pXNTBhV0ZzSWwwc0ltbGtJam9pZFhKdU9uVjFhV1E2WVRVNE5qSTVaVEl0TURnM1ppMDBZak0wTFRrMll6TXRaRFppTWpkaVlXVTFORFk0SWl3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2laMmwyWlc1ZmJtRnRaU0k2SWtwdmFHNGlMQ0ptWVcxcGJIbGZibUZ0WlNJNklrUnZaU0lzSW1WdFlXbHNJam9pYW05b2JtUnZaVUJsZUdGdGNHeGxMbU52YlNJc0luQm9iMjVsWDI1MWJXSmxjaUk2SWlzeExUSXdNaTAxTlRVdE1ERXdNU0lzSW1Ga1pISmxjM01pT25zaWMzUnlaV1YwWDJGa1pISmxjM01pT2lJeE1qTWdUV0ZwYmlCVGRDSXNJbXh2WTJGc2FYUjVJam9pUVc1NWRHOTNiaUlzSW5KbFoybHZiaUk2SWtGdWVYTjBZWFJsSWl3aVkyOTFiblJ5ZVNJNklsVlRJbjBzSW1KcGNuUm9aR0YwWlNJNklqRTVOREF0TURFdE1ERWlMQ0pwYzE5dmRtVnlYekU0SWpwMGNuVmxMQ0pwYzE5dmRtVnlYekl4SWpwMGNuVmxMQ0pwYzE5dmRtVnlYelkxSWpwMGNuVmxMQ0pwWkNJNkltUnBaRHBxZDJzNlpYbEtjbVJJYTJsUGFVcFFVekZCYVV4RFNtcGpibGxwVDJsS1JscEVTVEZPVkVVMVNXbDNhV0V5Ykd0SmFtOXBZVlZvUjFGV2FFZFRXR3hJVWtab2RWRXpXbmxUV0ZaS1ZsVldhR1JJV25OYVYxWkZaVWQwVTFvd1ZreFVNbEkyV2taa1lXRXpaRU5SVTBselNXNW5hVTlwU2xsUFIzaFRZVEJvZFZGV1VrcGhhMjh4V1ZSU1NGZHNTa0psYXpsSVpXcHNhV0l5UlROWWVrbDBVa2N4VlZWV09VZGxTRXBHVTFWYVZrbHVNQ0o5TENKcGMzTjFaWElpT25zaWFXUWlPaUprYVdRNmFuZHJPbVY1U25Ka1NHdHBUMmxLUmxGNVNYTkpiVTU1WkdsSk5rbHNRWFJOYWxVeVNXbDNhV0V5Ykd0SmFtOXBUVEZzVDFwRWJFZGlibWMxVTIxNE5WVkdXbHBrTW1SWVVtdFZlazR3VlhwU00yUktUVWRXU0dKRlRreFBTR1JIWWtaa05GSXlXbmRVVTBselNXNW5hVTlwU2tkaU0xcGFUV3BHVFZGVlJsQldSM2h1VEZjd2RGUnRWa3hXTW1oaFVsVjNNVmxWV25saWJFbDNaRmRPUzJGclVURldSWFIzVWpOV2JrbHBkMmxsVTBrMlNXdE9lVkpyY0cxU01WSnJWVVJKTlZOcmNHcFpNMEpTVjBoV05WUlZPSHBpTW1nd1pXNUtWV05XUWpaUmJFSkRVMVpTV21GcVFuWmFNRVZwWmxFaUxDSnVZVzFsSWpvaVIyOTJaWEp1YldWdWRDQnZaaUJCYm5sMGIzZHVJbjBzSW1semMzVmhibU5sUkdGMFpTSTZJakl3TWpRdE1URXRNVGxVTVRNNk1qQTZOVEV1TlRVd01EUXhOVGsyV2lJc0luWmhiR2xrUm5KdmJTSTZJakl3TWpRdE1URXRNVGxVTVRNNk1qQTZOVEV1TlRVd01URTFPVE0yV2lJc0ltVjRjR2x5WVhScGIyNUVZWFJsSWpvaU1qQXlOUzB4TVMweE9WUXhNem95TURvMU1TNDFOVEF4TkRVNU1qWmFJbjBzSW1wMGFTSTZJblZ5YmpwMWRXbGtPbUUxT0RZeU9XVXlMVEE0TjJZdE5HSXpOQzA1Tm1NekxXUTJZakkzWW1GbE5UUTJPQ0lzSW1WNGNDSTZNVGMyTXpVMU9EUTFNU3dpYVdGMElqb3hOek15TURJeU5EVXhMQ0p1WW1ZaU9qRTNNekl3TWpJME5URjkubk5qbVptZjVRNFFZLWQyR2pVdjZmMDIzakZWb0tmNll0cS1sUlloWnNkWGZ0V2xialBQd1dLTW5zUGY5WXk5b2NLTkU0QmowcU43SmwtbVgyYmJOekEiXX0sImV4cCI6MTc0MDQ3MzA1OCwiaWF0IjoxNzQwNDY5NDU4fQ.XjUpm9zJbVjKB8NplJ9nHKHG3Z3McgJj46Paul4R9zYQihVTAR18RjUbX18FbMJ4KH8n-lAzD-MmfJ0SaNWlDw \
&presentation_submission=%7B%0A%20%20%22id%22%20%3A%20%22sVWoJj7Aj6HD%22%2C%0A%20%20%22definition_id%22%20%3A%20%222911310d-3e45-4aa5-ba63-d93d13d5c5a5%22%2C%0A%20%20%22descriptor_map%22%20%3A%20%5B%7B%0A%20%20%20%20%22id%22%20%3A%20%22IdentityCredential%22%2C%0A%20%20%20%20%22format%22%20%3A%20%22jwt_vp%22%2C%0A%20%20%20%20%22path%22%20%3A%20%22%24%22%2C%0A%20%20%20%20%22path_nested%22%20%3A%20%7B%0A%20%20%20%20%20%20%22id%22%20%3A%20%22IdentityCredential%22%2C%0A%20%20%20%20%20%20%22format%22%20%3A%20%22jwt_vc_json%22%2C%0A%20%20%20%20%20%20%22path%22%20%3A%20%22%24.verifiableCredential%5B0%5D%22%0A%20%20%20%20%7D%0A%20%20%7D%5D%0A%7D%20&state=bc2e852c-4991-47e0-9677-45faf8d51ded' \
--header 'Content-Type: application/x-www-form-urlencoded'
with --header 'Content-Type: application/x-www-form-urlencoded' included.
In Swagger, however, this curl request is generated:
Swagger request in the browser (code 415 "Unsupported Media Type",)
curl -X 'POST' \
'http://localhost:8082/verify \
?vp_token=eyJraWQiOiJkaWQ6a2V5Ono2TWtyeUdKTXdOS1g4aXlZcGdWVmp2ckNBdmthVzlzbkw5cHFQN0JQWEdmM3FMUSIsInR5cCI6IkpXVCIsImFsZyI6IkVkRFNBIn0.eyJpc3MiOiJkaWQ6a2V5Ono2TWtyeUdKTXdOS1g4aXlZcGdWVmp2ckNBdmthVzlzbkw5cHFQN0JQWEdmM3FMUSIsInZwIjp7InByZXNlbnRhdGlvbkRlZmluaXRpb25JZCI6IjI5MTEzMTBkLTNlNDUtNGFhNS1iYTYzLWQ5M2QxM2Q1YzVhNSIsImlzc3VhbmNlRGF0ZSI6IjIwMjUtMDItMjVUMDc6NDQ6MTguMzMyODY4NjAwWiIsImhvbGRlciI6ImRpZDprZXk6ejZNa3J5R0pNd05LWDhpeVlwZ1ZWanZyQ0F2a2FXOXNuTDlwcVA3QlBYR2YzcUxRIiwidHlwZSI6WyJWZXJpZmlhYmxlUHJlc2VudGF0aW9uIl0sIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInZlcmlmaWFibGVDcmVkZW50aWFsIjpbImV5SnJhV1FpT2lKa2FXUTZhbmRyT21WNVNuSmtTR3RwVDJsS1JsRjVTWE5KYlU1NVpHbEpOa2xzUVhSTmFsVXlTV2wzYVdFeWJHdEphbTlwVFRGc1QxcEViRWRpYm1jMVUyMTROVlZHV2xwa01tUllVbXRWZWs0d1ZYcFNNMlJLVFVkV1NHSkZUa3hQU0dSSFlrWmtORkl5V25kVVUwbHpTVzVuYVU5cFNrZGlNMXBhVFdwR1RWRlZSbEJXUjNodVRGY3dkRlJ0Vmt4V01taGhVbFYzTVZsVldubGliRWwzWkZkT1MyRnJVVEZXUlhSM1VqTldia2xwZDJsbFUwazJTV3RPZVZKcmNHMVNNVkpyVlVSSk5WTnJjR3BaTTBKU1YwaFdOVlJWT0hwaU1tZ3daVzVLVldOV1FqWlJiRUpEVTFaU1dtRnFRblphTUVWcFpsRWlMQ0owZVhBaU9pSktWMVFpTENKaGJHY2lPaUpGVXpJMU5pSjkuZXlKcGMzTWlPaUprYVdRNmFuZHJPbVY1U25Ka1NHdHBUMmxLUmxGNVNYTkpiVTU1WkdsSk5rbHNRWFJOYWxVeVNXbDNhV0V5Ykd0SmFtOXBUVEZzVDFwRWJFZGlibWMxVTIxNE5WVkdXbHBrTW1SWVVtdFZlazR3VlhwU00yUktUVWRXU0dKRlRreFBTR1JIWWtaa05GSXlXbmRVVTBselNXNW5hVTlwU2tkaU0xcGFUV3BHVFZGVlJsQldSM2h1VEZjd2RGUnRWa3hXTW1oaFVsVjNNVmxWV25saWJFbDNaRmRPUzJGclVURldSWFIzVWpOV2JrbHBkMmxsVTBrMlNXdE9lVkpyY0cxU01WSnJWVVJKTlZOcmNHcFpNMEpTVjBoV05WUlZPSHBpTW1nd1pXNUtWV05XUWpaUmJFSkRVMVpTV21GcVFuWmFNRVZwWmxFaUxDSnpkV0lpT2lKa2FXUTZhbmRyT21WNVNuSmtTR3RwVDJsS1VGTXhRV2xNUTBwcVkyNVphVTlwU2taYVJFa3hUbFJGTlVscGQybGhNbXhyU1dwdmFXRlZhRWRSVm1oSFUxaHNTRkpHYUhWUk0xcDVVMWhXU2xaVlZtaGtTRnB6V2xkV1JXVkhkRk5hTUZaTVZESlNObHBHWkdGaE0yUkRVVk5KYzBsdVoybFBhVXBaVDBkNFUyRXdhSFZSVmxKS1lXdHZNVmxVVWtoWGJFcENaV3M1U0dWcWJHbGlNa1V6V0hwSmRGSkhNVlZWVmpsSFpVaEtSbE5WV2xaSmJqQWlMQ0oyWXlJNmV5SkFZMjl1ZEdWNGRDSTZXeUpvZEhSd2N6b3ZMM2QzZHk1M015NXZjbWN2TWpBeE9DOWpjbVZrWlc1MGFXRnNjeTkyTVNKZExDSjBlWEJsSWpwYklsWmxjbWxtYVdGaWJHVkRjbVZrWlc1MGFXRnNJaXdpU1dSbGJuUnBkSGxEY21Wa1pXNTBhV0ZzSWwwc0ltbGtJam9pZFhKdU9uVjFhV1E2WVRVNE5qSTVaVEl0TURnM1ppMDBZak0wTFRrMll6TXRaRFppTWpkaVlXVTFORFk0SWl3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2laMmwyWlc1ZmJtRnRaU0k2SWtwdmFHNGlMQ0ptWVcxcGJIbGZibUZ0WlNJNklrUnZaU0lzSW1WdFlXbHNJam9pYW05b2JtUnZaVUJsZUdGdGNHeGxMbU52YlNJc0luQm9iMjVsWDI1MWJXSmxjaUk2SWlzeExUSXdNaTAxTlRVdE1ERXdNU0lzSW1Ga1pISmxjM01pT25zaWMzUnlaV1YwWDJGa1pISmxjM01pT2lJeE1qTWdUV0ZwYmlCVGRDSXNJbXh2WTJGc2FYUjVJam9pUVc1NWRHOTNiaUlzSW5KbFoybHZiaUk2SWtGdWVYTjBZWFJsSWl3aVkyOTFiblJ5ZVNJNklsVlRJbjBzSW1KcGNuUm9aR0YwWlNJNklqRTVOREF0TURFdE1ERWlMQ0pwYzE5dmRtVnlYekU0SWpwMGNuVmxMQ0pwYzE5dmRtVnlYekl4SWpwMGNuVmxMQ0pwYzE5dmRtVnlYelkxSWpwMGNuVmxMQ0pwWkNJNkltUnBaRHBxZDJzNlpYbEtjbVJJYTJsUGFVcFFVekZCYVV4RFNtcGpibGxwVDJsS1JscEVTVEZPVkVVMVNXbDNhV0V5Ykd0SmFtOXBZVlZvUjFGV2FFZFRXR3hJVWtab2RWRXpXbmxUV0ZaS1ZsVldhR1JJV25OYVYxWkZaVWQwVTFvd1ZreFVNbEkyV2taa1lXRXpaRU5SVTBselNXNW5hVTlwU2xsUFIzaFRZVEJvZFZGV1VrcGhhMjh4V1ZSU1NGZHNTa0psYXpsSVpXcHNhV0l5UlROWWVrbDBVa2N4VlZWV09VZGxTRXBHVTFWYVZrbHVNQ0o5TENKcGMzTjFaWElpT25zaWFXUWlPaUprYVdRNmFuZHJPbVY1U25Ka1NHdHBUMmxLUmxGNVNYTkpiVTU1WkdsSk5rbHNRWFJOYWxVeVNXbDNhV0V5Ykd0SmFtOXBUVEZzVDFwRWJFZGlibWMxVTIxNE5WVkdXbHBrTW1SWVVtdFZlazR3VlhwU00yUktUVWRXU0dKRlRreFBTR1JIWWtaa05GSXlXbmRVVTBselNXNW5hVTlwU2tkaU0xcGFUV3BHVFZGVlJsQldSM2h1VEZjd2RGUnRWa3hXTW1oaFVsVjNNVmxWV25saWJFbDNaRmRPUzJGclVURldSWFIzVWpOV2JrbHBkMmxsVTBrMlNXdE9lVkpyY0cxU01WSnJWVVJKTlZOcmNHcFpNMEpTVjBoV05WUlZPSHBpTW1nd1pXNUtWV05XUWpaUmJFSkRVMVpTV21GcVFuWmFNRVZwWmxFaUxDSnVZVzFsSWpvaVIyOTJaWEp1YldWdWRDQnZaaUJCYm5sMGIzZHVJbjBzSW1semMzVmhibU5sUkdGMFpTSTZJakl3TWpRdE1URXRNVGxVTVRNNk1qQTZOVEV1TlRVd01EUXhOVGsyV2lJc0luWmhiR2xrUm5KdmJTSTZJakl3TWpRdE1URXRNVGxVTVRNNk1qQTZOVEV1TlRVd01URTFPVE0yV2lJc0ltVjRjR2x5WVhScGIyNUVZWFJsSWpvaU1qQXlOUzB4TVMweE9WUXhNem95TURvMU1TNDFOVEF4TkRVNU1qWmFJbjBzSW1wMGFTSTZJblZ5YmpwMWRXbGtPbUUxT0RZeU9XVXlMVEE0TjJZdE5HSXpOQzA1Tm1NekxXUTJZakkzWW1GbE5UUTJPQ0lzSW1WNGNDSTZNVGMyTXpVMU9EUTFNU3dpYVdGMElqb3hOek15TURJeU5EVXhMQ0p1WW1ZaU9qRTNNekl3TWpJME5URjkubk5qbVptZjVRNFFZLWQyR2pVdjZmMDIzakZWb0tmNll0cS1sUlloWnNkWGZ0V2xialBQd1dLTW5zUGY5WXk5b2NLTkU0QmowcU43SmwtbVgyYmJOekEiXX0sImV4cCI6MTc0MDQ3MzA1OCwiaWF0IjoxNzQwNDY5NDU4fQ.XjUpm9zJbVjKB8NplJ9nHKHG3Z3McgJj46Paul4R9zYQihVTAR18RjUbX18FbMJ4KH8n-lAzD-MmfJ0SaNWlDw \
&presentation_submission=%257B%250A%2520%2520%2522id%2522%2520%253A%2520%2522sVWoJj7Aj6HD%2522%252C%250A%2520%2520%2522definition_id%2522%2520%253A%2520%25222911310d-3e45-4aa5-ba63-d93d13d5c5a5%2522%252C%250A%2520%2520%2522descriptor_map%2522%2520%253A%2520%255B%257B%250A%2520%2520%2520%2520%2522id%2522%2520%253A%2520%2522IdentityCredential%2522%252C%250A%2520%2520%2520%2520%2522format%2522%2520%253A%2520%2522jwt_vp%2522%252C%250A%2520%2520%2520%2520%2522path%2522%2520%253A%2520%2522%2524%2522%252C%250A%2520%2520%2520%2520%2522path_nested%2522%2520%253A%2520%257B%250A%2520%2520%2520%2520%2520%2520%2522id%2522%2520%253A%2520%2522IdentityCredential%2522%252C%250A%2520%2520%2520%2520%2520%2520%2522format%2522%2520%253A%2520%2522jwt_vc_json%2522%252C%250A%2520%2520%2520%2520%2520%2520%2522path%2522%2520%253A%2520%2522%2524.verifiableCredential%255B0%255D%2522%250A%2520%2520%2520%2520%257D%250A%2520%2520%257D%255D%250A%257D%2520&state=2911310d-3e45-4aa5-ba63-d93d13d5c5a5' \
-H 'accept: application/json' \
-d ''
with -H 'accept: application/json' header
The difference is that in Postman I use --header 'Content-Type: application/x-www-form-urlencoded'
Swagger, however uses -H 'accept: application/json'
When I remove the header --header 'Content-Type: application/x-www-form-urlencoded' from Postman, it fails with 415 too.
So, how can I make Swagger generate curl request with this header --header 'Content-Type: application/x-www-form-urlencoded' to make it work properly? It seems 'content: application/x-www-form-urlencoded' in api.yaml is not enough. I am missing something. Am I?
I see that in the generated VerificationApi method vp_token is annotated with @RequestPart:
@RequestPart(value = "vp_token", required = true) List<String> vpToken
in the overriden method in the controller I have put @RequestParam.
Also, in the pom.xml in the config for openapi generator, I have put:
<useRequestParamForFormData>true</useRequestParamForFormData>
Anyway, it still generates it with @RequestPart annotation.
Could you help, please?
Upvotes: 0
Views: 38