From 3e17cb045221fa5769376d535411858958711823 Mon Sep 17 00:00:00 2001 From: Sophie Tauchert Date: Fri, 10 Nov 2023 14:16:04 +0100 Subject: [PATCH] Add correct annotation for 204 responses to POST methods returning void Closes #24960 Signed-off-by: Sophie Tauchert --- .../resources/admin/AuthenticationManagementResource.java | 6 ++++++ .../keycloak/services/resources/admin/ClientResource.java | 2 ++ .../resources/admin/ClientRoleMappingsResource.java | 2 ++ .../services/resources/admin/ProtocolMappersResource.java | 2 ++ .../services/resources/admin/RealmLocalizationResource.java | 3 +++ .../keycloak/services/resources/admin/RoleByIdResource.java | 2 ++ .../services/resources/admin/RoleContainerResource.java | 2 ++ .../services/resources/admin/RoleMapperResource.java | 2 ++ .../services/resources/admin/ScopeMappedClientResource.java | 2 ++ .../services/resources/admin/ScopeMappedResource.java | 2 ++ .../org/keycloak/services/resources/admin/UserResource.java | 4 ++++ 11 files changed, 29 insertions(+) diff --git a/services/src/main/java/org/keycloak/services/resources/admin/AuthenticationManagementResource.java b/services/src/main/java/org/keycloak/services/resources/admin/AuthenticationManagementResource.java index 223c4d0b6a..7ddaead88a 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/AuthenticationManagementResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/AuthenticationManagementResource.java @@ -19,6 +19,7 @@ package org.keycloak.services.resources.admin; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.logging.Logger; import org.jboss.resteasy.annotations.cache.NoCache; @@ -840,6 +841,7 @@ public class AuthenticationManagementResource { @NoCache @Tag(name = KeycloakOpenAPI.Admin.Tags.AUTHENTICATION_MANAGEMENT) @Operation( summary = "Raise execution's priority") + @APIResponse(responseCode = "204", description = "No Content") public void raisePriority(@Parameter(description = "Execution id") @PathParam("executionId") String execution) { auth.realm().requireManageRealm(); @@ -882,6 +884,7 @@ public class AuthenticationManagementResource { @NoCache @Tag(name = KeycloakOpenAPI.Admin.Tags.AUTHENTICATION_MANAGEMENT) @Operation( summary = "Lower execution's priority") + @APIResponse(responseCode = "204", description = "No Content") public void lowerPriority(@Parameter( description = "Execution id") @PathParam("executionId") String execution) { auth.realm().requireManageRealm(); @@ -1049,6 +1052,7 @@ public class AuthenticationManagementResource { @NoCache @Tag(name = KeycloakOpenAPI.Admin.Tags.AUTHENTICATION_MANAGEMENT) @Operation( summary = "Register a new required actions") + @APIResponse(responseCode = "204", description = "No Content") public void registerRequiredAction(@Parameter(description = "JSON containing 'providerId', and 'name' attributes.") Map data) { auth.realm().requireManageRealm(); @@ -1185,6 +1189,7 @@ public class AuthenticationManagementResource { @NoCache @Tag(name = KeycloakOpenAPI.Admin.Tags.AUTHENTICATION_MANAGEMENT) @Operation( summary = "Raise required action's priority") + @APIResponse(responseCode = "204", description = "No Content") public void raiseRequiredActionPriority(@Parameter(description = "Alias of required action") @PathParam("alias") String alias) { auth.realm().requireManageRealm(); @@ -1220,6 +1225,7 @@ public class AuthenticationManagementResource { @NoCache @Tag(name = KeycloakOpenAPI.Admin.Tags.AUTHENTICATION_MANAGEMENT) @Operation( summary = "Lower required action's priority") + @APIResponse(responseCode = "204", description = "No Content") public void lowerRequiredActionPriority(@Parameter(description = "Alias of required action") @PathParam("alias") String alias) { auth.realm().requireManageRealm(); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ClientResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ClientResource.java index c3513a8279..e1781b23ad 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/ClientResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/ClientResource.java @@ -19,6 +19,7 @@ package org.keycloak.services.resources.admin; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import jakarta.ws.rs.core.Response.Status; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.logging.Logger; @@ -621,6 +622,7 @@ public class ClientResource { @Consumes(MediaType.APPLICATION_JSON) @Tag(name = KeycloakOpenAPI.Admin.Tags.CLIENTS) @Operation( summary = "Register a cluster node with the client Manually register cluster node to this client - usually it’s not needed to call this directly as adapter should handle by sending registration request to Keycloak") + @APIResponse(responseCode = "204", description = "No Content") public void registerNode(Map formParams) { auth.clients().requireConfigure(client); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ClientRoleMappingsResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ClientRoleMappingsResource.java index dd6f5fa2ed..446282862f 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/ClientRoleMappingsResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/ClientRoleMappingsResource.java @@ -19,6 +19,7 @@ package org.keycloak.services.resources.admin; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.logging.Logger; import org.jboss.resteasy.annotations.cache.NoCache; @@ -159,6 +160,7 @@ public class ClientRoleMappingsResource { @Consumes(MediaType.APPLICATION_JSON) @Tag(name = KeycloakOpenAPI.Admin.Tags.CLIENT_ROLE_MAPPINGS) @Operation( summary = "Add client-level roles to the user role mapping") + @APIResponse(responseCode = "204", description = "No Content") public void addClientRoleMapping(List roles) { managePermission.require(); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ProtocolMappersResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ProtocolMappersResource.java index 390e5ecb52..4d82f8d067 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/ProtocolMappersResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/ProtocolMappersResource.java @@ -21,6 +21,7 @@ import static org.keycloak.protocol.ProtocolMapperUtils.isEnabled; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.logging.Logger; import org.jboss.resteasy.annotations.cache.NoCache; @@ -152,6 +153,7 @@ public class ProtocolMappersResource { @Consumes(MediaType.APPLICATION_JSON) @Tag(name = KeycloakOpenAPI.Admin.Tags.PROTOCOL_MAPPERS) @Operation(summary = "Create multiple mappers") + @APIResponse(responseCode = "204", description = "No Content") public void createMapper(List reps) { managePermission.require(); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RealmLocalizationResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RealmLocalizationResource.java index bde81b0958..cb6bf2f86a 100644 --- a/services/src/main/java/org/keycloak/services/resources/admin/RealmLocalizationResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/RealmLocalizationResource.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.keycloak.http.FormPartValue; import org.keycloak.models.KeycloakSession; @@ -92,6 +93,7 @@ public class RealmLocalizationResource { @Consumes(MediaType.MULTIPART_FORM_DATA) @Tag(name = KeycloakOpenAPI.Admin.Tags.REALMS_ADMIN) @Operation( summary = "Import localization from uploaded JSON file") + @APIResponse(responseCode = "204", description = "No Content") public void createOrUpdateRealmLocalizationTextsFromFile(@PathParam("locale") String locale) { this.auth.realm().requireManageRealm(); @@ -114,6 +116,7 @@ public class RealmLocalizationResource { @Consumes(MediaType.APPLICATION_JSON) @Tag(name = KeycloakOpenAPI.Admin.Tags.REALMS_ADMIN) @Operation() + @APIResponse(responseCode = "204", description = "No Content") public void createOrUpdateRealmLocalizationTexts(@PathParam("locale") String locale, Map localizationTexts) { this.auth.realm().requireManageRealm(); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RoleByIdResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RoleByIdResource.java index f120a4b1fb..9b90e9de56 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/RoleByIdResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/RoleByIdResource.java @@ -19,6 +19,7 @@ package org.keycloak.services.resources.admin; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.logging.Logger; import org.jboss.resteasy.annotations.cache.NoCache; @@ -171,6 +172,7 @@ public class RoleByIdResource extends RoleResource { @Consumes(MediaType.APPLICATION_JSON) @Tag(name = KeycloakOpenAPI.Admin.Tags.ROLES_BY_ID) @Operation( summary = "Make the role a composite role by associating some child roles") + @APIResponse(responseCode = "204", description = "No Content") public void addComposites(final @PathParam("role-id") String id, List roles) { RoleModel role = getRoleModel(id); auth.roles().requireManage(role); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RoleContainerResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RoleContainerResource.java index 4be73ab514..8e842d9789 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/RoleContainerResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/RoleContainerResource.java @@ -20,6 +20,7 @@ package org.keycloak.services.resources.admin; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.resteasy.annotations.cache.NoCache; import jakarta.ws.rs.NotFoundException; @@ -312,6 +313,7 @@ public class RoleContainerResource extends RoleResource { @Consumes(MediaType.APPLICATION_JSON) @Tag(name = KeycloakOpenAPI.Admin.Tags.ROLES) @Operation( summary = "Add a composite to the role") + @APIResponse(responseCode = "204", description = "No Content") public void addComposites(final @Parameter(description = "role's name (not id!)") @PathParam("role-name") String roleName, List roles) { auth.roles().requireManage(roleContainer); RoleModel role = roleContainer.getRole(roleName); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RoleMapperResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RoleMapperResource.java index 6d2c9ffa2a..41dd82784e 100644 --- a/services/src/main/java/org/keycloak/services/resources/admin/RoleMapperResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/RoleMapperResource.java @@ -19,6 +19,7 @@ package org.keycloak.services.resources.admin; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.logging.Logger; import org.jboss.resteasy.annotations.cache.NoCache; @@ -227,6 +228,7 @@ public class RoleMapperResource { @Consumes(MediaType.APPLICATION_JSON) @Tag(name = KeycloakOpenAPI.Admin.Tags.ROLE_MAPPER) @Operation( summary = "Add realm-level role mappings to the user") + @APIResponse(responseCode = "204", description = "No Content") public void addRealmRoleMappings(@Parameter(description = "Roles to add") List roles) { managePermission.require(); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ScopeMappedClientResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ScopeMappedClientResource.java index 91a4fe01d8..ad302ebd0a 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/ScopeMappedClientResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/ScopeMappedClientResource.java @@ -20,6 +20,7 @@ package org.keycloak.services.resources.admin; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.resteasy.annotations.cache.NoCache; import jakarta.ws.rs.NotFoundException; @@ -155,6 +156,7 @@ public class ScopeMappedClientResource { @Consumes(MediaType.APPLICATION_JSON) @Tag(name = KeycloakOpenAPI.Admin.Tags.SCOPE_MAPPINGS) @Operation(summary = "Add client-level roles to the client's scope") + @APIResponse(responseCode = "204", description = "No Content") public void addClientScopeMapping(List roles) { managePermission.require(); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ScopeMappedResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ScopeMappedResource.java index 5d7e948ad9..6dae624992 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/ScopeMappedResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/ScopeMappedResource.java @@ -20,6 +20,7 @@ package org.keycloak.services.resources.admin; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.resteasy.annotations.cache.NoCache; import jakarta.ws.rs.NotFoundException; @@ -214,6 +215,7 @@ public class ScopeMappedResource { @Consumes(MediaType.APPLICATION_JSON) @Tag(name = KeycloakOpenAPI.Admin.Tags.SCOPE_MAPPINGS) @Operation(summary = "Add a set of realm-level roles to the client's scope") + @APIResponse(responseCode = "204", description = "No Content") public void addRealmScopeMappings(List roles) { managePermission.require(); diff --git a/services/src/main/java/org/keycloak/services/resources/admin/UserResource.java b/services/src/main/java/org/keycloak/services/resources/admin/UserResource.java index 5ca04445c0..1dd3f83566 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/UserResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/UserResource.java @@ -19,6 +19,7 @@ package org.keycloak.services.resources.admin; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.extensions.Extension; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.logging.Logger; import org.jboss.resteasy.annotations.cache.NoCache; @@ -605,6 +606,7 @@ public class UserResource { @POST @Tag(name = KeycloakOpenAPI.Admin.Tags.USERS) @Operation( summary = "Remove all user sessions associated with the user Also send notification to all clients that have an admin URL to invalidate the sessions for the particular user.") + @APIResponse(responseCode = "204", description = "No Content") public void logout() { auth.users().requireManage(user); @@ -787,6 +789,7 @@ public class UserResource { @POST @Tag(name = KeycloakOpenAPI.Admin.Tags.USERS) @Operation( summary = "Move a credential to a first position in the credentials list of the user") + @APIResponse(responseCode = "204", description = "No Content") public void moveCredentialToFirst(final @Parameter(description = "The credential to move") @PathParam("credentialId") String credentialId){ moveCredentialAfter(credentialId, null); } @@ -800,6 +803,7 @@ public class UserResource { @POST @Tag(name = KeycloakOpenAPI.Admin.Tags.USERS) @Operation( summary = "Move a credential to a position behind another credential") + @APIResponse(responseCode = "204", description = "No Content") public void moveCredentialAfter(final @Parameter(description = "The credential to move") @PathParam("credentialId") String credentialId, final @Parameter(description = "The credential that will be the previous element in the list. If set to null, the moved credential will be the first element in the list.") @PathParam("newPreviousCredentialId") String newPreviousCredentialId){ auth.users().requireManage(user);