diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java index 5fcb651b45d..63e92c1f11a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/Dashboard.java @@ -5,25 +5,50 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; +import io.swagger.annotations.Authorization; +import io.swagger.annotations.AuthorizationScope; +import io.swagger.annotations.Extension; +import io.swagger.annotations.ExtensionProperty; +import io.swagger.annotations.Info; import io.swagger.annotations.ResponseHeader; -import org.wso2.carbon.apimgt.annotations.api.Permission; +import io.swagger.annotations.SwaggerDefinition; +import io.swagger.annotations.Tag; import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup; import org.wso2.carbon.device.mgt.jaxrs.beans.DashboardGadgetDataWrapper; import org.wso2.carbon.device.mgt.jaxrs.beans.DashboardPaginationGadgetDataWrapper; import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; /** * Device Analytics Dashboard related REST-APIs. This can be used to obtain device related analytics. */ +@SwaggerDefinition( + info = @Info( + version = "1.0.0", + title = "", + extensions = { + @Extension(properties = { + @ExtensionProperty(name = "name", value = "DeviceAnalyticsDashboard"), + @ExtensionProperty(name = "context", value = "/api/device-mgt/v1.0/dashboard"), + }) + } + ), + tags = { + @Tag(name = "device_management", description = "Device Analytics Dashboard related APIs.") + } +) @Path("/dashboard") @Api(value = "Device Analytics Dashboard", description = "Device Analytics Dashboard related information APIs are described here.") @Produces(MediaType.APPLICATION_JSON) -@SuppressWarnings("NonJaxWsWebServices") +@Consumes(MediaType.APPLICATION_JSON) public interface Dashboard { String CONNECTIVITY_STATUS = "connectivity-status"; @@ -41,10 +66,17 @@ public interface Dashboard { @ApiOperation( produces = MediaType.APPLICATION_JSON, httpMethod = "GET", - value = "Get the details of registered devices in WSO2 EMM.", + value = "Get the details of registered devices in WSO2 IoT.", notes = "Get the details of active, inactive, removed and total number of registered devices in" - + " WSO2 EMM.", - tags = "Dashboard") + + " WSO2 IoT.", + tags = "Dashboard", + authorizations = { + @Authorization( + value = "permission", + scopes = {@AuthorizationScope(scope = "/device-mgt/dashboard/view", + description = "View Dashboard")} + ) + }) @ApiResponses(value = { @ApiResponse( code = 200, @@ -86,7 +118,6 @@ public interface Dashboard { message = "Internal Server Error. \n ErrorResponse in retrieving requested data.", response = ErrorResponse.class) }) - @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") Response getOverviewDeviceCounts(); @GET @@ -94,8 +125,15 @@ public interface Dashboard { @ApiOperation( produces = MediaType.APPLICATION_JSON, httpMethod = "GET", - value = "Get the number of unmonitored and non-compliant devices in WSO2 EMM.", - tags = "Dashboard") + value = "Get the number of unmonitored and non-compliant devices in WSO2 IoT.", + tags = "Dashboard", + authorizations = { + @Authorization( + value = "permission", + scopes = {@AuthorizationScope(scope = "/device-mgt/dashboard/view", + description = "View Dashboard")} + ) + }) @ApiResponses(value = { @ApiResponse( code = 200, @@ -137,7 +175,6 @@ public interface Dashboard { message = "Internal Server Error. \n Server error occurred while fetching activity data.", response = ErrorResponse.class) }) - @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") Response getDeviceCountsByPotentialVulnerabilities(); @GET @@ -147,7 +184,14 @@ public interface Dashboard { httpMethod = "GET", value = "Get the number of devices that have not complied to a policy that was enforced on a " + "device.", - tags = "Dashboard") + tags = "Dashboard", + authorizations = { + @Authorization( + value = "permission", + scopes = {@AuthorizationScope(scope = "/device-mgt/dashboard/view", + description = "View Dashboard")} + ) + }) @ApiResponses(value = { @ApiResponse( code = 200, @@ -189,7 +233,6 @@ public interface Dashboard { message = "Internal Server Error. \n ErrorResponse in retrieving requested data.", response = ErrorResponse.class) }) - @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") Response getNonCompliantDeviceCountsByFeatures( @ApiParam( name = "start", @@ -212,7 +255,14 @@ public interface Dashboard { httpMethod = "GET", value = "Get the number of devices for a given device type, such as connectivity status, " + "potential vulnerability, platform, and ownership.\n", - tags = "Dashboard") + tags = "Dashboard", + authorizations = { + @Authorization( + value = "permission", + scopes = {@AuthorizationScope(scope = "/device-mgt/dashboard/view", + description = "View Dashboard")} + ) + }) @ApiResponses(value = { @ApiResponse( code = 200, @@ -254,16 +304,15 @@ public interface Dashboard { message = "Internal Server Error. \n ErrorResponse in retrieving requested data.", response = ErrorResponse.class) }) - @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") Response getDeviceCountsByGroups( @ApiParam( name = "connectivity-status", value = "Provide the connectivity status of the device. The following values can be assigned:\n" - + "active: The devices that are registered with WSO2 EMM and are actively " + + "active: The devices that are registered with WSO2 IoT and are actively " + "communicating with the server.\n" - + "inactive: The devices that are registered with WSO2 EMM but unable to " + + "inactive: The devices that are registered with WSO2 IoT but unable to " + "actively communicate with the server.\n" - + "removed: The devices that have unregistered from WSO2 EMM", + + "removed: The devices that have unregistered from WSO2 IoT", required = true) @QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, @ApiParam( @@ -271,7 +320,7 @@ public interface Dashboard { value = "Provide details of the potential vulnerabilities of the device. The following " + "values can be assigned:\n" + "non-compliant: Devices that have not complied to the policies enforced on the " - + "device by WSO2 EMM.\n" + + "device by WSO2 IoT.\n" + "unmonitored: Devices that have no policy assigned to them.", required = true) @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, @@ -296,7 +345,14 @@ public interface Dashboard { httpMethod = "GET", value = "Get the number of devices that have not complied to a given policy based on a particular" + " device type.", - tags = "Dashboard") + tags = "Dashboard", + authorizations = { + @Authorization( + value = "permission", + scopes = {@AuthorizationScope(scope = "/device-mgt/dashboard/view", + description = "View Dashboard")} + ) + }) @ApiResponses(value = { @ApiResponse( code = 200, @@ -338,7 +394,6 @@ public interface Dashboard { message = "Internal Server Error. \n ErrorResponse in retrieving requested data.", response = ErrorResponse.class) }) - @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") Response getFeatureNonCompliantDeviceCountsByGroups( @ApiParam( name = "non-compliant-feature-code", @@ -365,12 +420,19 @@ public interface Dashboard { @ApiOperation( produces = MediaType.APPLICATION_JSON, httpMethod = "GET", - value = "Get the number of devices that are registered with WSO2 EMM filtered by one of the " + value = "Get the number of devices that are registered with WSO2 IoT filtered by one of the " + "following attributes:\n" + "Connectivity status of the device, such as active, inactive or removed.\n" + "The device ownership type, such as BYOD or COPE.\n" + "The device platform.\n" + "The potential vulnerabilities faced by the devices.", - tags = "Dashboard") + tags = "Dashboard", + authorizations = { + @Authorization( + value = "permission", + scopes = {@AuthorizationScope(scope = "/device-mgt/dashboard/view", + description = "View Dashboard")} + ) + }) @ApiResponses(value = { @ApiResponse( code = 200, @@ -412,18 +474,17 @@ public interface Dashboard { message = "Internal Server Error. \n ErrorResponse in retrieving requested data.", response = ErrorResponse.class) }) - @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") Response getFilteredDeviceCountOverTotal( @ApiParam( name = "connectivity-status", value = "Provide the connectivity status of the device. You can assign any of the values " + "given below:\n" - + "Total: All the devices that have registered with WSO2 EMM.\n" - + "active: The devices that are registered with WSO2 EMM and are actively " + + "Total: All the devices that have registered with WSO2 IoT.\n" + + "active: The devices that are registered with WSO2 IoT and are actively " + "communicating with the server.\n" - + "inactive: The devices that are registered with WSO2 EMM but unable to actively" + + "inactive: The devices that are registered with WSO2 IoT but unable to actively" + " communicate with the server.\n" - + "removed: The devices that have unregistered from WSO2 EMM.", + + "removed: The devices that have unregistered from WSO2 IoT.", required = true) @QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, @ApiParam( @@ -431,7 +492,7 @@ public interface Dashboard { value = "Provide details of the potential vulnerabilities of the device. You can assign" + " any of the values given below:\n" + "non-compliant: Devices that have not complied to the policies enforced on the " - + "device by WSO2 EMM.\n" + + "device by WSO2 IoT.\n" + "unmonitored: Devices that have no policy assigned to them.", required = true) @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, @@ -456,8 +517,15 @@ public interface Dashboard { produces = MediaType.APPLICATION_JSON, httpMethod = "GET", value = "Get the number of devices that have not complied to a given policy over the total" - + " number of devices registered with WSO2 EMM.\n", - tags = "Dashboard") + + " number of devices registered with WSO2 IoT.\n", + tags = "Dashboard", + authorizations = { + @Authorization( + value = "permission", + scopes = {@AuthorizationScope(scope = "/device-mgt/dashboard/view", + description = "View Dashboard")} + ) + }) @ApiResponses(value = { @ApiResponse( code = 200, @@ -499,7 +567,6 @@ public interface Dashboard { message = "Internal Server Error. \n ErrorResponse in retrieving requested data.", response = ErrorResponse.class) }) - @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") Response getFeatureNonCompliantDeviceCountOverTotal( @ApiParam( name = "non-compliant-feature-code", @@ -527,7 +594,14 @@ public interface Dashboard { produces = MediaType.APPLICATION_JSON, httpMethod = "GET", value = "Get device details of devices based on a particular device type.", - tags = "Dashboard") + tags = "Dashboard", + authorizations = { + @Authorization( + value = "permission", + scopes = {@AuthorizationScope(scope = "/device-mgt/dashboard/view", + description = "View Dashboard")} + ) + }) @ApiResponses(value = { @ApiResponse( code = 200, @@ -569,24 +643,23 @@ public interface Dashboard { message = "Internal Server Error. \n ErrorResponse in retrieving requested data.", response = ErrorResponse.class) }) - @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") Response getDevicesWithDetails( @ApiParam( name = "connectivity-status", value = "Provide the connectivity status of the device. This can be one of the following:\n" - + "Total: All the devices that have registered with WSO2 EMM.\n" - + "active: The devices that are registered with WSO2 EMM and are actively " + + "Total: All the devices that have registered with WSO2 IoT.\n" + + "active: The devices that are registered with WSO2 IoT and are actively " + "communicating with the server.\n" - + "inactive: The devices that are registered with WSO2 EMM but unable to actively" + + "inactive: The devices that are registered with WSO2 IoT but unable to actively" + " communicate with the server.\n" - + "removed: The devices that have unregistered from WSO2 EMM.", + + "removed: The devices that have unregistered from WSO2 IoT.", required = true) @QueryParam(CONNECTIVITY_STATUS) String connectivityStatus, @ApiParam( name = "potential-vulnerability", value = "Provide details of the potential vulnerabilities of the device. This can be:\n" + "non-compliant: Devices that have not complied to the policies enforced on " - + "the device by WSO2 EMM.\n" + + "the device by WSO2 IoT.\n" + "unmonitored: Devices that have no policy assigned to them. ", required = true) @QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability, @@ -624,7 +697,14 @@ public interface Dashboard { produces = MediaType.APPLICATION_JSON, httpMethod = "GET", value = "Get device details of non-compliant devices which do not comply to a given policy.", - tags = "Dashboard") + tags = "Dashboard", + authorizations = { + @Authorization( + value = "permission", + scopes = {@AuthorizationScope(scope = "/device-mgt/dashboard/view", + description = "View Dashboard")} + ) + }) @ApiResponses(value = { @ApiResponse( code = 200, @@ -666,7 +746,6 @@ public interface Dashboard { message = "Internal Server Error. \n ErrorResponse in retrieving requested data.", response = ErrorResponse.class) }) - @Permission(name = "View Dashboard", permission = "/device-mgt/dashboard/view") Response getFeatureNonCompliantDevicesWithDetails( @ApiParam( name = "non-compliant-feature-code",