diff --git a/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/gen/java/org/wso2/carbon/identity/api/server/userstore/v1/UserstoresApi.java b/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/gen/java/org/wso2/carbon/identity/api/server/userstore/v1/UserstoresApi.java index 94cff1b19a..e590a792f6 100644 --- a/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/gen/java/org/wso2/carbon/identity/api/server/userstore/v1/UserstoresApi.java +++ b/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/gen/java/org/wso2/carbon/identity/api/server/userstore/v1/UserstoresApi.java @@ -190,9 +190,9 @@ public Response getPrimaryUserStore() { @ApiResponse(code = 500, message = "Internal Server Error.", response = Error.class), @ApiResponse(code = 501, message = "Not Implemented.", response = Error.class) }) - public Response getSecondaryUserStores( @Valid@ApiParam(value = "maximum number of records to return") @QueryParam("limit") Integer limit, @Valid@ApiParam(value = "number of records to skip for pagination") @QueryParam("offset") Integer offset, @Valid@ApiParam(value = "Condition to filter the retrieval of records.") @QueryParam("filter") String filter, @Valid@ApiParam(value = "Define the order of how the retrieved records should be sorted.") @QueryParam("sort") String sort, @Valid@ApiParam(value = "Define set of user store attributes (as comma separated) to be returned.") @QueryParam("requiredAttributes") String requiredAttributes) { + public Response getSecondaryUserStores( @Valid@ApiParam(value = "maximum number of records to return") @QueryParam("limit") Integer limit, @Valid@ApiParam(value = "number of records to skip for pagination") @QueryParam("offset") Integer offset, @Valid@ApiParam(value = "Condition to filter the retrieval of records.") @QueryParam("filter") String filter, @Valid@ApiParam(value = "Define the order of how the retrieved records should be sorted.") @QueryParam("sort") String sort, @Valid@ApiParam(value = "Define set of user store attributes (as comma separated) to be returned.") @QueryParam("requiredAttributes") String requiredAttributes, @Valid@ApiParam(value = "Whether to exclude AGENT userstore.") @QueryParam("excludeAgentUserstore") Boolean excludeAgentUserstore) { - return delegate.getSecondaryUserStores(limit, offset, filter, sort, requiredAttributes ); + return delegate.getSecondaryUserStores(limit, offset, filter, sort, requiredAttributes, excludeAgentUserstore ); } @Valid diff --git a/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/gen/java/org/wso2/carbon/identity/api/server/userstore/v1/UserstoresApiService.java b/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/gen/java/org/wso2/carbon/identity/api/server/userstore/v1/UserstoresApiService.java index f5e80f668a..86ed2a31fa 100644 --- a/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/gen/java/org/wso2/carbon/identity/api/server/userstore/v1/UserstoresApiService.java +++ b/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/gen/java/org/wso2/carbon/identity/api/server/userstore/v1/UserstoresApiService.java @@ -51,8 +51,7 @@ public interface UserstoresApiService { public Response getPrimaryUserStore(); - public Response getSecondaryUserStores(Integer limit, Integer offset, String filter, String sort, String requiredAttributes); - + public Response getSecondaryUserStores(Integer limit, Integer offset, String filter, String sort, String requiredAttributes, Boolean excludeAgentUserstore); public Response getUserStoreAttributeMappings(String typeId, Boolean includeIdentityClaimMappings); public Response getUserStoreByDomainId(String userstoreDomainId); diff --git a/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/main/java/org/wso2/carbon/identity/api/server/userstore/v1/impl/UserstoresApiServiceImpl.java b/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/main/java/org/wso2/carbon/identity/api/server/userstore/v1/impl/UserstoresApiServiceImpl.java index 992e110148..220a703506 100644 --- a/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/main/java/org/wso2/carbon/identity/api/server/userstore/v1/impl/UserstoresApiServiceImpl.java +++ b/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/main/java/org/wso2/carbon/identity/api/server/userstore/v1/impl/UserstoresApiServiceImpl.java @@ -28,6 +28,7 @@ import org.wso2.carbon.identity.api.server.userstore.v1.model.ClaimAttributeMapping; import org.wso2.carbon.identity.api.server.userstore.v1.model.PatchDocument; import org.wso2.carbon.identity.api.server.userstore.v1.model.RDBMSConnectionReq; +import org.wso2.carbon.identity.api.server.userstore.v1.model.UserStoreListResponse; import org.wso2.carbon.identity.api.server.userstore.v1.model.UserStoreReq; import org.wso2.carbon.identity.api.server.userstore.v1.model.UserStoreResponse; @@ -35,6 +36,7 @@ import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.stream.Collectors; import javax.ws.rs.core.Response; import static org.wso2.carbon.identity.api.server.common.Constants.V1_API_PATH_COMPONENT; @@ -42,7 +44,7 @@ import static org.wso2.carbon.identity.api.server.userstore.common.UserStoreConstants.USER_STORE_PATH_COMPONENT; /** - * User Store API Service Implementation + * User Store API Service Implementation. */ public class UserstoresApiServiceImpl implements UserstoresApiService { @@ -99,15 +101,22 @@ public Response getPrimaryUserStore() { return Response.ok().entity(serverUserStoreService.getPrimaryUserStore()).build(); } - @Override + @Override public Response getSecondaryUserStores(Integer limit, Integer offset, String filter, String sort, - String requiredAttributes) { + String requiredAttributes, Boolean excludeAgentUserstore) { - return Response.ok() - .entity(serverUserStoreService.getUserStoreList(limit, offset, filter, sort, requiredAttributes)) - .build(); - } + List userStoreList = serverUserStoreService.getUserStoreList( + limit, offset, filter, sort, requiredAttributes); + if (Boolean.TRUE.equals(excludeAgentUserstore) && userStoreList != null) { + List filteredUserStores = userStoreList.stream() + .filter(userStore -> !"AGENT".equalsIgnoreCase(userStore.getName())) + .collect(Collectors.toList()); + return Response.ok().entity(filteredUserStores).build(); + } + + return Response.ok().entity(userStoreList).build(); + } @Override public Response getUserStoreAttributeMappings(String typeId, Boolean includeIdentityClaimMappings) { diff --git a/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/main/resources/userstore.yaml b/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/main/resources/userstore.yaml index 4086f9d598..f1d818a996 100644 --- a/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/main/resources/userstore.yaml +++ b/components/org.wso2.carbon.identity.api.server.userstore/org.wso2.carbon.identity.api.server.userstore.v1/src/main/resources/userstore.yaml @@ -82,6 +82,8 @@ paths: - $ref: '#/components/parameters/filterQueryParam' - $ref: '#/components/parameters/sortQueryParam' - $ref: '#/components/parameters/requiredAttributesQueryParam' + - $ref: '#/components/parameters/excludeAgentUserstoreQueryParam' + responses: '200': description: Successful response. @@ -641,6 +643,14 @@ components: description: Define set of user store attributes (as comma separated) to be returned. schema: type: string + excludeAgentUserstoreQueryParam: + in: query + name: excludeAgentUserstore + required: false + description: Whether to exclude AGENT userstore. + schema: + type: boolean + default: false fileTypeHeaderParam: in: header name: Accept