Merge branch 'rest-api-improvements' of https://github.com/wso2/carbon-device-mgt into rest-api-improvements

revert-70aa11f8
prabathabey 9 years ago
commit 0b9c64594c

@ -18,10 +18,8 @@
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import javax.ws.rs.*;
@ -31,7 +29,10 @@ import javax.ws.rs.core.Response;
/**
* Activity related REST-API implementation.
*/
@API(name = "Activities", version = "1.0.0", context = "/devicemgt_admin/activities", tags = {"devicemgt_admin"})
@Path("/activities")
@Api(value = "ActivityInfo", description = "Activity related information manipulation. For example operation details " +
"and responses from devices.")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface ActivityInfoProviderService {
@ -39,15 +40,19 @@ public interface ActivityInfoProviderService {
@GET
@Path("/{id}")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Retrieving the operation details.",
notes = "This will return the operation details including the responses from the devices.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "Activity details provided successfully."),
@ApiResponse(code = 500, message = "Error occurred while fetching the activity for the supplied id.")})
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Activity details provided successfully."),
@ApiResponse(code = 500, message = "Error occurred while fetching the activity for the supplied id.")
})
@Permission(scope = "operation-view", permissions = {"/permission/admin/device-mgt/admin/devices/view"})
Response getActivity(@ApiParam(name = "id", value = "Activity id of the operation/activity to be retrieved",
required = true) @PathParam("id") String id);
Response getActivity(
@ApiParam(name = "id", value = "Activity id of the operation/activity to be retrieved.",
required = true)
@PathParam("id") String id);
}

@ -0,0 +1,93 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* General Tenant Configuration REST-API.
*/
@API(name = "Configuration", version = "1.0.0", context = "/devicemgt_admin/configuration", tags = {"devicemgt_admin"})
@Path("/configuration")
@Api(value = "Configuration", description = "General Tenant Configuration management capabilities are exposed " +
"through this API")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface ConfigurationManagementService {
@POST
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Configuring general platform settings",
notes = "Configure the general platform settings using this REST API.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Tenant configuration saved successfully"),
@ApiResponse(code = 500, message = "Error occurred while saving the tenant configuration")
})
@Permission(scope = "configuration-modify",
permissions = {"/permission/admin/device-mgt/admin/platform-configs/modify"})
Response saveConfiguration(@ApiParam(name = "configuration", value = "The required properties to "
+ "update the platform configurations.",
required = true) PlatformConfiguration configuration);
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting General Platform Configurations.",
notes = "Get the general platform level configuration details using this REST API.",
response = PlatformConfiguration.class)
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Tenant configuration saved successfully."),
@ApiResponse(code = 500, message = "Error occurred while retrieving the tenant configuration.")
})
@Permission(scope = "configuration-view",
permissions = {"/permission/admin/device-mgt/admin/platform-configs/view"})
Response getConfiguration();
@PUT
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT",
value = "Updating General Platform Configurations.",
notes = "Update the notification frequency using this REST API.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Tenant configuration updated successfully."),
@ApiResponse(code = 500, message = "Error occurred while updating the tenant configuration.")
})
@Permission(scope = "configuration-modify",
permissions = {"/permission/admin/device-mgt/admin/platform-configs/modify"})
Response updateConfiguration(@ApiParam(name = "configuration", value = "The required properties to "
+ "update the platform configurations.",
required = true) PlatformConfiguration configuration);
}

@ -18,10 +18,8 @@
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
@ -38,15 +36,18 @@ import java.util.Date;
import java.util.List;
/**
* Device related REST-API implementation. This can be used to manipulated device related details.
* Device related REST-API. This can be used to manipulated device related details.
*/
@API(name = "Device", version = "1.0.0", context = "/devicemgt_admin/devices", tags = {"devicemgt_admin"})
@Path("/devices")
@Api(value = "Device", description = "Device related operations such as get all the available devices, etc.")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface DeviceManagementService {
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Get the device list.",
@ -72,6 +73,7 @@ public interface DeviceManagementService {
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Get the device list corresponding to a device type.",
@ -117,6 +119,7 @@ public interface DeviceManagementService {
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Get the device list of a user.",
@ -141,6 +144,7 @@ public interface DeviceManagementService {
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Returns device list in a role.",
@ -165,6 +169,7 @@ public interface DeviceManagementService {
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Returns device list of an ownership scheme.",
@ -181,8 +186,7 @@ public interface DeviceManagementService {
@Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"})
Response getDevicesByOwnership(
@ApiParam(name = "ownership", value = "Ownership of the devices to be fetched registered under.",
required = true)
@QueryParam("ownership") EnrolmentInfo.OwnerShip ownership,
required = true) EnrolmentInfo.OwnerShip ownership,
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many device details are required from the starting pagination " +
@ -191,6 +195,7 @@ public interface DeviceManagementService {
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Returns device list",
@ -206,7 +211,7 @@ public interface DeviceManagementService {
@Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"})
Response getDevicesByEnrollmentStatus(
@ApiParam(name = "status", value = "Enrollment status of devices to be fetched.", required = true)
@QueryParam("status") EnrolmentInfo.Status status,
EnrolmentInfo.Status status,
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many device details are required from the starting pagination " +
@ -222,6 +227,7 @@ public interface DeviceManagementService {
@GET
@Path("/{type}/{id}/location")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Get the device location of a given device and a device type.",
@ -238,14 +244,14 @@ public interface DeviceManagementService {
Response getDeviceLocation(
@ApiParam(name = "type", value = "The device type, such as ios, android or windows.", required = true)
@PathParam("type") String type,
@ApiParam(name = "type", value = "The device identifier of the device.", required = true)
@ApiParam(name = "id", value = "The device identifier of the device.", required = true)
@PathParam("id") String id);
@GET
@Path("/{type}/{id}/features")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Get Feature Details of a Device",
notes = "WSO2 EMM features enable you to carry out many operations on a given device platform. " +
@ -256,13 +262,14 @@ public interface DeviceManagementService {
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successfully fetched the features.",
response = org.wso2.carbon.device.mgt.common.Feature.class, responseContainer = "List"),
@ApiResponse(code = 500, message = "Error occurred while retrieving the list of features.") })
@ApiResponse(code = 500, message = "Error occurred while retrieving the list of features.")
})
@Permission(scope = "device-search", permissions = {"/permission/admin/device-mgt/admin/devices/view",
"/permission/admin/device-mgt/user/devices/view"})
Response getFeaturesOfDevice(
@ApiParam(name = "type", value = "The device type, such as ios, android or windows.", required = true)
@PathParam("type") String type,
@ApiParam(name = "type", value = "The device identifier of the device.", required = true)
@ApiParam(name = "id", value = "The device identifier of the device.", required = true)
@PathParam("id") String id);
@POST
@ -288,8 +295,8 @@ public interface DeviceManagementService {
@GET
@Path("/{type}/{id}/applications")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting installed application details of a device.",
responseContainer = "List",
@ -299,22 +306,24 @@ public interface DeviceManagementService {
@ApiResponse(code = 200, message = "List of installed application details of a device.",
response = Application.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "No installed applications found on the device searched."),
@ApiResponse(code = 500, message = "Error occurred while fetching the apps of the device.")})
@ApiResponse(code = 500, message = "Error occurred while fetching the apps of the device.")
})
@Permission(scope = "operation-view", permissions = {
"/permission/admin/device-mgt/admin/devices/view",
"/permission/admin/device-mgt/user/devices/view"})
"/permission/admin/device-mgt/user/devices/view"
})
Response getInstalledApplications(
@ApiParam(name = "type", value = "The device type, such as ios, android or windows.", required = true)
@PathParam("type") String type,
@ApiParam(name = "type", value = "The device identifier of the device.", required = true)
@ApiParam(name = "id", value = "The device identifier of the device.", required = true)
@PathParam("id") String id);
@GET
@Path("/{type}/{id}/operations")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting paginated details for operations on a device.",
notes = "You will carry out many operations on a device. In a situation where you wish to view the all" +
@ -326,10 +335,12 @@ public interface DeviceManagementService {
response = org.wso2.carbon.device.mgt.common.operation.mgt.Operation.class,
responseContainer = "List"),
@ApiResponse(code = 500, message = "Error occurred while fetching the operations for the " +
"device.")})
"device.")
})
@Permission(scope = "operation-view", permissions = {
"/permission/admin/device-mgt/admin/devices/view",
"/permission/admin/device-mgt/user/devices/view"})
"/permission/admin/device-mgt/user/devices/view"
})
Response getDeviceOperations(
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ -338,7 +349,7 @@ public interface DeviceManagementService {
@QueryParam("limit") int limit,
@ApiParam(name = "type", value = "The device type, such as ios, android or windows.", required = true)
@PathParam("type") String type,
@ApiParam(name = "type", value = "The device identifier of the device.", required = true)
@ApiParam(name = "id", value = "The device identifier of the device.", required = true)
@PathParam("id") String id);
}

@ -1,97 +0,0 @@
/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/device-types")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface DeviceTypeManagementService {
@GET
@ApiOperation(
httpMethod = "GET",
value = "Getting Details of the Devices Supported via WSO2 EMM",
notes = "You are able to register Android, iOS and Windows devices with WSO2 EMM. This API will "
+ "retrieve the device type details that can register with the EMM",
response = DeviceType.class,
responseContainer = "List")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "List of devices based on the type"),
@ApiResponse(code = 500, message = "Error occurred while fetching the list of device types") })
@Permission(scope = "device-list", permissions = {"/permission/admin/device-mgt/admin/devices/list"})
Response getTypes();
@POST
@Path("/{type}/configuration")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
httpMethod = "POST",
value = "Configuring general platform settings",
notes = "Configure the general platform settings using this REST API")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Tenant configuration saved successfully"),
@ApiResponse(code = 500, message = "Error occurred while saving the tenant configuration")
})
@Permission(scope = "configuration-modify", permissions = {"/permission/admin/device-mgt/admin/platform-configs/modify"})
Response saveConfiguration(@PathParam("type") String type, PlatformConfiguration config);
@GET
@Path("/{type}/configuration")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
httpMethod = "GET",
value = "Getting General Platform Configurations",
notes = "Get the general platform level configuration details using this REST API",
response = PlatformConfiguration.class)
@ApiResponses(value = {
@ApiResponse(code = 200, message = "OK"),
@ApiResponse(code = 500, message = "Error occurred while retrieving the tenant configuration")
})
@Permission(scope = "configuration-view", permissions = {"/permission/admin/device-mgt/admin/platform-configs/view"})
Response getConfiguration(@PathParam("type") String type);
@PUT
@Path("/{type}/configuration")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
httpMethod = "PUT",
value = "Updating General Platform Configurations",
notes = "Update the notification frequency using this REST API")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Tenant configuration updated successfully"),
@ApiResponse(code = 500, message = "Error occurred while updating the tenant configuration")
})
@Permission(scope = "configuration-modify", permissions = {"/permission/admin/device-mgt/admin/platform-configs/modify"})
Response updateConfiguration(@PathParam("type") String type, PlatformConfiguration config);
}

@ -18,9 +18,8 @@
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
@ -28,6 +27,12 @@ import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* Notifications related REST-API.
*/
@API(name = "Device Notification", version = "1.0.0", context = "/devicemgt_admin/notifications",
tags = {"devicemgt_admin"})
@Api(value = "DeviceNotification", description = "Device notification related operations can be found here.")
@Path("/notifications")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ -35,75 +40,96 @@ public interface NotificationManagementService {
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting all Device Notification Details",
value = "Getting all device notification details.",
notes = "Get the details of all notifications that were pushed to the device in WSO2 EMM using "
+ "this REST API",
response = Notification.class,
responseContainer = "List")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "List of Notifications", response = Notification.class,
responseContainer = "List"),
@ApiResponse(code = 500, message = "Error occurred while retrieving the notification list")
@ApiResponse(code = 200, message = "Successfully fetched the list of notifications",
response = Notification.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "No notification is available to be retrieved."),
@ApiResponse(code = 500, message = "Error occurred while retrieving the notification list.")
})
@Permission(scope = "device-notification-view", permissions = {
"/permission/admin/device-mgt/admin/notifications/view",
"/permission/admin/device-mgt/user/notifications/view"})
Response getNotifications(@QueryParam("offset") int offset, @QueryParam("limit") int limit);
"/permission/admin/device-mgt/user/notifications/view"
})
Response getNotifications(
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How notification device details are required from the starting " +
"pagination index.", required = true)
@QueryParam("limit") int limit);
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting the Device Notifications Filtered by the Status",
value = "Getting the device notifications filtered by the status.",
notes = "Get the details of all the unread notifications or the details of all the read "
+ "notifications using this REST API",
+ "notifications using this REST API.",
response = Notification.class,
responseContainer = "List")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "List of Notifications", response = Notification.class,
responseContainer = "List"),
@ApiResponse(code = 500, message = "Error occurred while retrieving the notification list")
@ApiResponse(code = 200, message = "Successfully fetched the list of notifications.",
response = Notification.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "No notification, which carries the given status " +
"is available to be retrieved."),
@ApiResponse(code = 500, message = "Error occurred while retrieving the notification list.")
})
@Permission(scope = "device-notification-view", permissions = {
"/permission/admin/device-mgt/admin/notifications/view",
"/permission/admin/device-mgt/user/notifications/view"})
Response getNotificationsByStatus(@QueryParam("status") Notification.Status status,
@QueryParam("offset") int offset, @QueryParam("limit") int limit);
"/permission/admin/device-mgt/user/notifications/view"
})
Response getNotificationsByStatus(
@ApiParam(name = "status", value = "Status of the notification.",required = true)
Notification.Status status,
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many notification details are required from the starting pagination " +
"index.", required = true)
@QueryParam("limit") int limit);
@PUT
@Path("/{id}/status")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT",
value = "Updating the Device Notification Status",
notes = "When a user has read the the device notification the device notification status must "
+ "change from NEW to CHECKED. Update the device notification status using this REST API")
value = "Updating the device notification status",
notes = "When a user has read the the device notifications, the device notification status must "
+ "change from NEW to CHECKED. Update the device notification status using this REST API.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Notification status updated successfully"),
@ApiResponse(code = 500, message = "Error occurred while updating notification status")
@ApiResponse(code = 201, message = "Notification status updated successfully."),
@ApiResponse(code = 500, message = "Error occurred while updating notification status.")
})
@Permission(scope = "device-notification-modify",
permissions = {"/permission/admin/device-mgt/admin/notifications/modify"})
Response updateNotificationStatus(@PathParam("id") int id, Notification.Status status);
Response updateNotificationStatus(
@ApiParam(name = "id", value = "The device identifier of the device.", required = true)
@PathParam("id") int id,
@ApiParam(name = "status", value = "Status of the notification.",required = true)
Notification.Status status);
@POST
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Sending a Device Notification",
notes = "Notify users on device operation failures and other information using this REST API")
value = "Sending a device notification.",
notes = "Notify users on device operation failures and other information using this REST API.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "NNotification has added successfully"),
@ApiResponse(code = 500, message = "Error occurred while updating notification status")
@ApiResponse(code = 201, message = "Notification has added successfully."),
@ApiResponse(code = 500, message = "Error occurred while updating notification status.")
})
@Permission(scope = "device-notification-modify",
permissions = {"/permission/admin/device-mgt/admin/notifications/modify"})
Response addNotification(Notification notification);
Response addNotification(@ApiParam(name = "notification", value = "Notification details to be added.",required =
true) Notification notification);
}

@ -19,6 +19,7 @@
package org.wso2.carbon.device.mgt.jaxrs.service.api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.wso2.carbon.apimgt.annotations.api.Permission;
@ -29,6 +30,10 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;
/**
* Policy related REST-API. This can be used to manipulated policies and associate them with devices, users, roles,
* groups.
*/
@Path("/policies")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ -39,44 +44,59 @@ public interface PolicyManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Adding a Policy.",
notes = "Add a policy using this REST API command. When adding a policy you will have the option of " +
"saving the policy or saving and publishing the policy. Using the REST API command given below " +
"you are able to save a created Policy and this policy will be in the inactive state")
@ApiResponses(value = {@ApiResponse(code = 201, message = "Created the policy."),
@ApiResponse(code = 500, message = "Policy Management related error occurred when " +
"adding the policy")})
value = "Adding a policy.",
notes = "Add a policy using this REST API command. Using the REST API command given below " +
"you are able to save a created Policy and this policy will be in the inactive state.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Created the policy."),
@ApiResponse(code = 401, message = "Current user is not authorized to add policies."),
@ApiResponse(code = 500, message = "Policy Management related error occurred when adding the policy.")})
@Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/add"})
Response addPolicy(PolicyWrapper policy);
Response addPolicy(@ApiParam(name = "policy", value = "Policy details related to the operation.",
required = true) PolicyWrapper policy);
@GET
@ApiOperation(
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting Details of Policies.",
value = "Getting details of policies.",
responseContainer = "List",
notes = "Retrieve the details of all the policies that you have created in WSO2 EMM.",
notes = "Retrieve the details of all the policies that you have created in EMM.",
response = org.wso2.carbon.policy.mgt.common.Policy.class)
@ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched all policies.",
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Fetched all policies.",
response = org.wso2.carbon.policy.mgt.common.Policy.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "No policies found."),
@ApiResponse(code = 500, message = "Policy Management related error occurred when " +
"fetching the policies.")})
"fetching the policies.")
})
@Permission(scope = "policy-view", permissions = {"/permission/admin/device-mgt/admin/policies/list"})
Response getPolicies(@QueryParam("offset") int offset, @QueryParam("limit") int limit);
Response getPolicies(
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many policy details are required from the starting pagination " +
"index.", required = true)
@QueryParam("limit") int limit);
@GET
@Path("/{id}")
@ApiOperation(
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting Details of a Policy.",
notes = "Retrieve the details of a selected policy in WSO2 EMM.",
value = "Getting details of a policy.",
notes = "Retrieve the details of a given policy in EMM.",
response = org.wso2.carbon.policy.mgt.common.Policy.class)
@ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched policy details."),
@ApiResponse(code = 500, message = "Policy Management related error occurred when " +
"fetching the policies.")})
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Fetched policy details.",
response = org.wso2.carbon.policy.mgt.common.Policy.class),
@ApiResponse(code = 404, message = "Policy not found."),
@ApiResponse(code = 500, message = "Policy management related error occurred when " +
"fetching the policy.")
})
@Permission(scope = "policy-view", permissions = {"/permission/admin/device-mgt/admin/policies/list"})
Response getPolicy(@PathParam("id") int id);
Response getPolicy(
@ApiParam(name = "id", value = "The device identifier of the device.", required = true)
@PathParam("id") int id);
@PUT
@Path("/{id}")
@ -84,27 +104,35 @@ public interface PolicyManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT",
value = "Updating a Policy.",
value = "Updating a policy.",
notes = "If you wish to make changes to an existing policy, you can do so by updating the policy using " +
"this API")
@ApiResponses(value = {@ApiResponse(code = 201, message = "Policy has been updated successfully."),
@ApiResponse(code = 500, message = "Policy Management related exception in policy " +
"update")})
"this API.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Policy has been updated successfully."),
@ApiResponse(code = 500, message = "Policy management related exception in policy update.")
})
@Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/update"})
Response updatePolicy(@PathParam("id") int id, PolicyWrapper policyWrapper);
Response updatePolicy(
@ApiParam(name = "id", value = "The device identifier of the device.", required = true)
@PathParam("id") int id,
@ApiParam(name = "policy", value = "Policy details related to the operation.",
required = true) PolicyWrapper policy);
@POST
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Removing Multiple Policies.",
value = "Removing multiple policies.",
notes = "In situations where you need to delete more than one policy you can do so using this API.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "Policies have been successfully deleted."),
@ApiResponse(code = 400, message = "Policy does not exist."),
@ApiResponse(code = 500, message = "Error in deleting policies.")})
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Policies have been successfully deleted."),
@ApiResponse(code = 404, message = "Policy does not exist."),
@ApiResponse(code = 500, message = "Error in deleting policies.")
})
@Permission(scope = "policy-modify", permissions = {"/permission/admin/device-mgt/admin/policies/remove"})
Response removePolicies(List<Integer> policyIds);
Response removePolicies(@ApiParam(name = "policyIds", value = "Policy ID list to be deleted.",
required = true) List<Integer> policyIds);
@POST
@Path("/activate-policy")
@ -112,15 +140,19 @@ public interface PolicyManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT",
value = "Activating Policies.",
value = "Activating policies.",
notes = "Using the REST API command you are able to publish a policy in order to bring a policy that is " +
"in the inactive state to the active state.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "Policies have been successfully activated."),
@ApiResponse(code = 500, message = "Error in activating policies.")})
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Policies have been successfully activated."),
@ApiResponse(code = 500, message = "Error in activating policies.")
})
@Permission(scope = "policy-modify", permissions = {
"/permission/admin/device-mgt/admin/policies/update",
"/permission/admin/device-mgt/admin/policies/add"})
Response activatePolicies(List<Integer> policyIds);
Response activatePolicies(
@ApiParam(name = "policyIds", value = "Policy ID list to be activated.",
required = true) List<Integer> policyIds);
@POST
@Path("/deactivate-policy")
@ -128,15 +160,19 @@ public interface PolicyManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT",
value = "Deactivating Policies.",
value = "Deactivating policies.",
notes = "Using the REST API command you are able to unpublish a policy in order to bring a policy that " +
"is in the active state to the inactive state.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "Policies have been successfully deactivated."),
@ApiResponse(code = 500, message = "Error in deactivating policies.")})
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Policies have been successfully deactivated."),
@ApiResponse(code = 500, message = "Error in deactivating policies.")
})
@Permission(scope = "policy-modify", permissions = {
"/permission/admin/device-mgt/admin/policies/update",
"/permission/admin/device-mgt/admin/policies/add"})
Response deactivatePolicies(List<Integer> policyIds);
Response deactivatePolicies(
@ApiParam(name = "policyIds", value = "Policy ID list to be deactivated.",
required = true) List<Integer> policyIds);
@GET
@ApiOperation(
@ -147,9 +183,15 @@ public interface PolicyManagementService {
"filters the policies based on the Platform (device type), filters based on the device ownership" +
" type , filters based on the user role or name and finally the policy is enforced on the device.",
response = org.wso2.carbon.policy.mgt.common.Policy.class)
@ApiResponses(value = {@ApiResponse(code = 200, message = "Fetched current policy."),
@ApiResponse(code = 500, message = "Error occurred while getting the current policy.")})
Response getEffectivePolicyOfDevice(@QueryParam("device-type") String type,
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Fetched current policy."),
@ApiResponse(code = 404, message = "No policy found."),
@ApiResponse(code = 500, message = "Error occurred while getting the current policy.")
})
Response getEffectivePolicyOfDevice(
@ApiParam(name = "device-type", value = "The device type, such as ios, android or windows.", required = true)
@QueryParam("device-type") String type,
@ApiParam(name = "device-id", value = "The device identifier of the device.", required = true)
@QueryParam("device-id") String deviceId);
}

@ -18,9 +18,8 @@
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.device.mgt.jaxrs.beans.RoleWrapper;
import org.wso2.carbon.user.mgt.common.UIPermissionNode;
@ -30,7 +29,9 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;
@API(name = "Role", version = "1.0.0", context = "/devicemgt_admin/roles", tags = {"devicemgt_admin"})
@Path("/roles")
@Api(value = "Role", description = "Role management related operations can be found here.")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface RoleManagementService {
@ -40,34 +41,54 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting the List of Roles.",
value = "Getting the list of roles.",
responseContainer = "List",
notes = "If you wish to get the details of all the roles in WSO2 EMM, you can do so using this REST API.",
notes = "If you wish to get the details of all the roles in EMM, you can do so using this REST API. All " +
"internal roles, roles created for Service-providers and application related roles are omitted.",
response = String.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "List of available roles"),
@ApiResponse(code = 500, message = "Error occurred while fetching the role list.") })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successfully fetched the list of available roles",
response = String.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "No roles found."),
@ApiResponse(code = 500, message = "Error occurred while fetching the role list.")
})
@Permission(scope = "roles-view", permissions = {
"/permission/admin/device-mgt/admin/roles/list",
"/permission/admin/device-mgt/admin/users/view",
"/permission/admin/device-mgt/admin/policies/add",
"/permission/admin/device-mgt/admin/policies/update"})
Response getRoles(@QueryParam("offset") int offset, @QueryParam("limit") int limit);
Response getRoles(
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many role details are required from the starting pagination " +
"index.", required = true)
@QueryParam("limit") int limit);
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting the List of Roles in a User Store.",
value = "Getting the list of roles in a user store.",
responseContainer = "List",
notes = "If you wish to get the details of all the roles in WSO2 EMM, you can do so using this REST API.",
notes = "If you wish to get the details of all the roles in EMM, you can do so using this REST API.",
response = String.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "List of available roles"),
@ApiResponse(code = 500, message = "Error occurred while fetching the role list.") })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successfully fetched the list of available roles",
response = String.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "No roles found."),
@ApiResponse(code = 500, message = "Error occurred while fetching the role list.")
})
@Permission(scope = "roles-view", permissions = {
"/permission/admin/device-mgt/admin/users/add",
"/permission/admin/device-mgt/admin/roles/list"})
Response getRoles(@QueryParam("user-store") String userStoreName, @QueryParam("offset") int offset,
Response getRoles(
@ApiParam(name = "user-store", value = "From which user store the roles must be fetched.",required = true)
@QueryParam("user-store") String userStoreName,
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many role details are required from the starting pagination " +
"index.", required = true)
@QueryParam("limit") int limit);
@GET
@ -75,20 +96,29 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Searching for Roles via the Role Name.",
value = "Searching for roles via the role name.",
responseContainer = "List",
notes = "You will have many roles created within WSO2 EMM. As the admin you will need to confirm if a " +
notes = "You will have many roles created within EMM. As the admin you will need to confirm if a " +
"given role exists in the EMM. In such situation you can search for the role by giving a " +
"character or a few characters of the role name. The search will give you a list of roles that" +
" have the name in the exact order of the characters you provided.",
response = String.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "List of matching roles"),
@ApiResponse(code = 500, message = "Error occurred while fetching the matching role list" +
".") })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successfully fetched the list of matching roles.",
response = String.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "No roles found."),
@ApiResponse(code = 500, message = "Error occurred while fetching the matching role list.")
})
@Permission(scope = "roles-view", permissions = {
"/permission/admin/device-mgt/admin/users/add",
"/permission/admin/device-mgt/admin/roles/list"})
Response searchRoles(@QueryParam("filter") String filter, @QueryParam("offset") int offset,
Response searchRoles(
@ApiParam(name = "filter", value = "Role name or a part of it to search.",required = true)
@QueryParam("filter") String filter,
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many role details are required from the starting pagination " +
"index.", required = true)
@QueryParam("limit") int limit);
@GET
@ -97,17 +127,21 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting Permission Details of a Role.",
value = "Getting permission details of a role.",
notes = "In an organization an individual is associated a with set of responsibilities based on their " +
"role. In WSO2 EMM you are able to configure permissions based on the responsibilities carried " +
"role. In EMM you are able to configure permissions based on the responsibilities carried " +
"out by a role. Therefore if you wish to retrieve the permission details of a role, you can do " +
"so using this REST API.",
response = UIPermissionNode.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "Permission details of a role"),
@ApiResponse(code = 500, message = "Error occurred while fetching the permission " +
"details of a role.") })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Permission details of a role", response = UIPermissionNode.class),
@ApiResponse(code = 404, message = "No permissions found for the role."),
@ApiResponse(code = 500, message = "Error occurred while fetching the permission details of a role.")
})
@Permission(scope = "roles-view", permissions = {"/permission/admin/device-mgt/admin/roles/list"})
Response getPermissionsOfRole(@PathParam("roleName") String roleName);
Response getPermissionsOfRole(
@ApiParam(name = "roleName", value = "Name of the role.",required = true)
@PathParam("roleName") String roleName);
@GET
@Path("/{roleName}")
@ -115,25 +149,34 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting Details of a Role.",
notes = "If you wish to get the details of a role in WSO2 EMM, you can do so using this REST API.",
value = "Getting details of a role.",
notes = "If you wish to get the details of a role in EMM, you can do so using this REST API.",
response = RoleWrapper.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "Details of a role."),
@ApiResponse(code = 500, message = "Error occurred while retrieving the user role.") })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successfully fetched the role details.", response = RoleWrapper.class),
@ApiResponse(code = 404, message = "No role details found for the provided role name."),
@ApiResponse(code = 500, message = "Error occurred while retrieving the role details.")
})
@Permission(scope = "roles-view", permissions = {"/permission/admin/device-mgt/admin/roles/list"})
Response getRole(@PathParam("roleName") String roleName);
Response getRole(
@ApiParam(name = "roleName", value = "Name of the role.",required = true)
@PathParam("roleName") String roleName);
@POST
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Adding a Role.",
notes = "You are able to add a new role to WSO2 EMM using the REST API.")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Added the role."),
@ApiResponse(code = 500, message = "Error occurred while adding the user role.") })
value = "Adding a role.",
notes = "You are able to add a new role to EMM using the REST API.")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Added the role."),
@ApiResponse(code = 500, message = "Error occurred while adding the user role.")
})
@Permission(scope = "roles-modify", permissions = {"/permission/admin/device-mgt/admin/roles/add"})
Response addRole(RoleWrapper role);
Response addRole(
@ApiParam(name = "role", value = "Details about the role to be added.",required = true)
RoleWrapper role);
@PUT
@Path("/{roleName}")
@ -141,14 +184,19 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT",
value = "Updating a Role.",
value = "Updating a role.",
notes = "There will be situations where you will need to update the role details, such as the permissions" +
" or the role name. In such situation you can update the role details.")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Updated the role."),
@ApiResponse(code = 500, message = "Error occurred while updating the user role details" +
".") })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Updated the role."),
@ApiResponse(code = 500, message = "Error occurred while updating the user role details.")
})
@Permission(scope = "roles-modify", permissions = {"/permission/admin/device-mgt/admin/roles/update"})
Response updateRole(@PathParam("roleName") String roleName, RoleWrapper role);
Response updateRole(
@ApiParam(name = "roleName", value = "Name of the role.",required = true)
@PathParam("roleName") String roleName,
@ApiParam(name = "role", value = "Details about the role to be added.",required = true)
RoleWrapper role);
@DELETE
@Path("/{roleName}")
@ -156,14 +204,17 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "DELETE",
value = "Deleting a Role.",
value = "Deleting a role.",
notes = "In a situation when your Organization identifies that a specific role is no longer required you " +
"will need to remove the role details from WSO2 EMM.")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Deleted the role."),
@ApiResponse(code = 500, message = "Error occurred while deleting the user role details" +
".") })
"will need to remove the role details from EMM.")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Deleted the role."),
@ApiResponse(code = 500, message = "Error occurred while deleting the user role details.")
})
@Permission(scope = "roles-modify", permissions = {"/permission/admin/device-mgt/admin/roles/remove"})
Response deleteRole(@PathParam("roleName") String roleName);
Response deleteRole(
@ApiParam(name = "roleName", value = "Name of the role to de deleted.",required = true)
@PathParam("roleName") String roleName);
@POST
@Path("/{roleName}/users")
@ -171,16 +222,22 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT",
value = "Adding Users to a Role.",
value = "Adding users to a role.",
notes = "Defining the users to a role at the point of creating a new role is optional, " +
"therefore you are able to update the users that belong to a given role after you have created " +
"a role using this REST API." +
"Example: Your Organization hires 30 new engineers. Updating the role details for each user can " +
"be cumbersome, therefore you can define all the new employees that belong to the engineering " +
"role using this API.")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Added Users to a Role."),
@ApiResponse(code = 500, message = "Error occurred while saving the users of the role.") })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Added Users to a Role."),
@ApiResponse(code = 500, message = "Error occurred while saving the users of the role.")
})
@Permission(scope = "roles-modify", permissions = {"/permission/admin/device-mgt/admin/roles/update"})
Response updateUsersOfRole(@PathParam("roleName") String roleName, List<String> users);
Response updateUsersOfRole(
@ApiParam(name = "roleName", value = "Name of the role.",required = true)
@PathParam("roleName") String roleName,
@ApiParam(name = "users", value = "List of usernames to be added.",required = true)
List<String> users);
}

@ -18,9 +18,8 @@
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper;
import org.wso2.carbon.device.mgt.jaxrs.beans.UserWrapper;
@ -29,7 +28,10 @@ import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@API(name = "UserManagement", version = "1.0.0", context = "/devicemgt_admin/users", tags = {"devicemgt_admin"})
@Path("/users")
@Api(value = "UserManagement", description = "User management related operations can be found here.")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface UserManagementService {
@ -39,121 +41,153 @@ public interface UserManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Adding a User via the REST API",
notes = "Adds a new user to WSO2 EMM using this REST API")
value = "Adding a user.",
notes = "Adds a new user to EMM using this REST API.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Created"),
@ApiResponse(code = 500, message = "Exception in trying to add user by username: 'username'")
@ApiResponse(code = 201, message = "Added the user successfully."),
@ApiResponse(code = 500, message = "Exception in trying to add the user.")
})
@Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/add"})
Response addUser(UserWrapper user);
Response addUser(
@ApiParam(name = "user", value = "User related details.",required = true) UserWrapper user);
@GET
@Path("/{username}")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting Details of a User",
notes = "If you wish to get the details of a specific user that is registered with WSO2 EMM,"
+ " you can do so using the REST API",
value = "Getting details of a user.",
notes = "If you wish to get the details of a specific user that is registered with EMM,"
+ " you can do so using the REST API.",
response = UserWrapper.class)
@ApiResponses(value = {
@ApiResponse(code = 201, message = "User information was retrieved successfully"),
@ApiResponse(code = 400, message = "User by username: 'username' does not exist"),
@ApiResponse(code = 500, message = "Exception in trying to retrieve user by username: 'username'")
@ApiResponse(code = 201, message = "User information was retrieved successfully.",
response = UserWrapper.class),
@ApiResponse(code = 404, message = "User by the provided username does not exist."),
@ApiResponse(code = 500, message = "Exception in trying to retrieve user by username.")
})
@Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/view"})
Response getUser(@PathParam("username") String username);
Response getUser(
@ApiParam(name = "username", value = "Username of the user to be fetched.",required = true)
@PathParam("username") String username);
@PUT
@Path("/{username}")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML,
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT",
value = "Updating Details of a User",
value = "Updating details of a user",
notes = "There will be situations where you will want to update the user details. In such "
+ "situation you can update the user details using this REST API")
+ "situation you can update the user details using this REST API.")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "User by username: 'username' was successfully updated"),
@ApiResponse(code = 409, message = "User by username: 'username' doesn't exists. Therefore, "
+ "request made to update user was refused"),
@ApiResponse(code = 200, message = "User was successfully updated"),
@ApiResponse(code = 409, message = "User by the provided username doesn't exists. Therefore, "
+ "request made to update user was refused."),
@ApiResponse(code = 500, message = "Exception in trying to update user by username: 'username'")
})
@Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/update"})
Response updateUser(@PathParam("username") String username, UserWrapper user);
Response updateUser(
@ApiParam(name = "username", value = "Username of the user to be updated.",required = true)
@PathParam("username") String username,
@ApiParam(name = "user", value = "User related details.",required = true)
UserWrapper user);
@DELETE
@Path("/{username}")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "DELETE",
value = "Deleting a User",
value = "Deleting a user.",
notes = "In a situation where an employee leaves the organization you will need to remove the"
+ " user details from WSO2 EMM. In such situations you can use this REST API "
+ "to remove a user")
+ " user details from EMM. In such situations you can use this REST API to remove a user.")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "User by username: 'username' was successfully removed"),
@ApiResponse(code = 400, message = "User by username: 'username' does not exist for removal"),
@ApiResponse(code = 500, message = "Exception in trying to remove user by username: 'username'")
@ApiResponse(code = 200, message = "User was successfully removed."),
@ApiResponse(code = 404, message = "User does not exist for removal."),
@ApiResponse(code = 500, message = "Exception in trying to remove user.")
})
@Permission(scope = "user-modify", permissions = {"/permission/admin/device-mgt/admin/user/remove"})
Response removeUser(@PathParam("username") String username);
Response removeUser(
@ApiParam(name = "username", value = "Username of the user to be deleted.",required = true)
@PathParam("username") String username);
@POST
@Path("/{username}/roles")
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting the Role Details of a User",
notes = "A user can be assigned to one or more role in WSO2 EMM. Using this REST API you are "
+ "able to get the role/roles a user is assigned to",
value = "Getting the role details of a user.",
notes = "A user can be assigned to one or more role in EMM. Using this REST API you are "
+ "able to get the role/roles a user is assigned to.",
response = String.class,
responseContainer = "List")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "User roles obtained for user : 'username'"),
@ApiResponse(code = 400, message = "User by username: 'username' does not exist for role retrieval"),
@ApiResponse(code = 500, message = "Exception in trying to retrieve roles for user by username: 'username'")
@ApiResponse(code = 200, message = "User roles obtained for the provided user.", response = String.class,
responseContainer = "List"),
@ApiResponse(code = 404, message = "User does not exist for role retrieval."),
@ApiResponse(code = 500, message = "Exception in trying to retrieve roles for the provided user.")
})
@Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/view"})
Response getRolesOfUser(@PathParam("username") String username);
Response getRolesOfUser(
@ApiParam(name = "username", value = "Username of the user.",required = true)
@PathParam("username") String username);
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Getting Details of Users",
notes = "If you wish to get the details of all the user registered with WSO2 EMM, you can do so "
value = "Getting details of users",
notes = "If you wish to get the details of all the user registered with EMM, you can do so "
+ "using the REST API",
response = UserWrapper.class,
responseContainer = "List")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "All users were successfully retrieved"),
@ApiResponse(code = 500, message = "Error occurred while retrieving the list of users")
@ApiResponse(code = 200, message = "All users were successfully retrieved.", response = UserWrapper.class,
responseContainer = "List"),
@ApiResponse(code = 404, message = "No users found."),
@ApiResponse(code = 500, message = "Error occurred while retrieving the list of users.")
})
@Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/list"})
Response getUsers(@QueryParam("filter") String filter, @QueryParam("offset") int offset,
Response getUsers(
@ApiParam(name = "filter", value = "Username of the user details to be fetched.",required = true)
@QueryParam("filter") String filter,
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many user details are required from the starting pagination " +
"index.", required = true)
@QueryParam("limit") int limit);
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Searching for a User Name",
notes = "You will have 100+ users registered with WSO2 EMM. Therefore if you are unsure of the "
value = "Searching for a username.",
notes = "If you are unsure of the "
+ "user name of a user and need to retrieve the details of a specific user, you can "
+ "search for that user by giving a character or a few characters in the username. "
+ "You will be given a list of users having the user name with the exact order of the "
+ "characters you provided",
+ "characters you provided.",
response = String.class,
responseContainer = "List")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "All users by username were successfully retrieved. Obtained"
+ " user count: 'count'"),
@ApiResponse(code = 500, message = "Error occurred while retrieving the list of users")
@ApiResponse(code = 200, message = "All users by username were successfully retrieved.",
response = String.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "No users found."),
@ApiResponse(code = 500, message = "Error occurred while retrieving the list of users.")
})
@Permission(scope = "user-view", permissions = {"/permission/admin/device-mgt/admin/user/list"})
Response getUserNames(@QueryParam("filter") String filter, @QueryParam("offset") int offset,
Response getUserNames(
@ApiParam(name = "filter", value = "Username/part of the user name to search.",required = true)
@QueryParam("filter") String filter,
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many user details are required from the starting pagination " +
"index.", required = true)
@QueryParam("limit") int limit);
@PUT
@ -162,17 +196,19 @@ public interface UserManagementService {
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Changing the User Password",
notes = "A user is able to change the password to secure their EMM profile via this REST API")
value = "Changing the user password.",
notes = "A user is able to change the password to secure their EMM profile via this REST API.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "UserImpl password by username: 'Username' was "
+ "successfully changed"),
@ApiResponse(code = 400, message = "Old password does not match"),
@ApiResponse(code = 400, message = "Could not change the password of the user: 'Username'. The"
+ " Character Encoding is not supported"),
@ApiResponse(code = 500, message = "Internal Server Error")
@ApiResponse(code = 201, message = "User password was successfully changed."),
@ApiResponse(code = 400, message = "Old password does not match."),
@ApiResponse(code = 500, message = "Could not change the password of the user. The Character encoding is" +
" not supported.")
})
@Permission(scope = "user-modify", permissions = {"/permission/admin/login"})
Response resetPassword(@PathParam("username") String username, UserCredentialWrapper credentials);
Response resetPassword(
@ApiParam(name = "username", value = "Username of the user.",required = true)
@PathParam("username") String username,
@ApiParam(name = "credentials", value = "Credential.",required = true)
UserCredentialWrapper credentials);
}

@ -18,6 +18,8 @@
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api.admin;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.device.mgt.jaxrs.beans.ApplicationWrapper;
import javax.ws.rs.Consumes;
@ -27,17 +29,44 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@API(name = "Application", version = "1.0.0", context = "/devicemgt_admin/applications", tags = {"devicemgt_admin"})
@Path("/applications")
@Api(value = "Application", description = "Application related operations are exposed through this API.")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface ApplicationManagementAdminService {
@POST
@Path("/install-application")
Response installApplication(ApplicationWrapper applicationWrapper);
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Application installation API.(Internal API)",
notes = "This is an internal API used for application installation on a device.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Application wil be installed on the device."),
@ApiResponse(code = 500, message = "Error while adding the application install operation.")
})
Response installApplication(
@ApiParam(name = "applicationWrapper", value = "Application details of the application to be installed.",
required = true) ApplicationWrapper applicationWrapper);
@POST
@Path("/uninstall-application")
Response uninstallApplication(ApplicationWrapper applicationWrapper);
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Application uninstallation API.(Internal API)",
notes = "This is an internal API used for application uninstallation on a device.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Application wil be uninstalled on the device."),
@ApiResponse(code = 500, message = "Error while adding the application uninstall operation.")
})
Response uninstallApplication(
@ApiParam(name = "applicationWrapper", value = "Application details of the application to be uninstalled.",
required = true) ApplicationWrapper applicationWrapper);
}

@ -18,18 +18,41 @@
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api.admin;
import javax.ws.rs.Consumes;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@API(name = "DeviceManagementAdmin", version = "1.0.0", context = "/devicemgt_admin/applications",
tags = {"devicemgt_admin"})
@Path("/devices")
@Api(value = "DeviceManagementAdmin", description = "Device management admin related operations are exposed through " +
"this API.")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface DeviceManagementAdminService {
Response getDevicesByName(@QueryParam("name") String name, @QueryParam("tenant-domain") String tenantDomain);
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Get devices by the name.",
notes = "Get devices the name of device and tenant.",
response = org.wso2.carbon.device.mgt.common.Device.class,
responseContainer = "List")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successfully fetched device details.",
response = org.wso2.carbon.device.mgt.common.Device.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "No matching device found in the provided tenant."),
@ApiResponse(code = 500, message = "Error while fetching device information.")
})
Response getDevicesByName(
@ApiParam(name = "name", value = "Name of the device.",required = true)
@QueryParam("name") String name,
@ApiParam(name = "tenant-domain", value = "Name of the tenant.",required = true)
@QueryParam("tenant-domain") String tenantDomain);
}

@ -18,6 +18,10 @@
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api.admin;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import javax.ws.rs.*;
@ -30,8 +34,28 @@ import javax.ws.rs.core.Response;
public interface GroupManagementAdminService {
@GET
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "Get groups by the name.",
notes = "Get devices the name of device and tenant.",
response = org.wso2.carbon.device.mgt.common.Device.class,
responseContainer = "List")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successfully fetched group details.",
response = org.wso2.carbon.device.mgt.common.Device.class, responseContainer = "List"),
@ApiResponse(code = 404, message = "Device not found."),
@ApiResponse(code = 500, message = "Error while fetching group information.")
})
@Permission(scope = "group-view", permissions = {"/permission/admin/device-mgt/user/groups/list"})
Response getGroupsOfUser(@QueryParam("username") String username, @QueryParam("offset") int offset,
Response getGroupsOfUser(
@ApiParam(name = "username", value = "Username of the user.",required = true)
@QueryParam("username") String username,
@ApiParam(name = "offset", value = "Starting pagination index.",required = true)
@QueryParam("offset") int offset,
@ApiParam(name = "limit", value = "How many policy details are required from the starting pagination " +
"index.", required = true)
@QueryParam("limit") int limit);

@ -18,6 +18,11 @@
*/
package org.wso2.carbon.device.mgt.jaxrs.service.api.admin;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper;
import javax.ws.rs.*;
@ -31,6 +36,23 @@ public interface UserManagementAdminService {
@POST
@Path("/{username}/credentials")
Response resetPassword(@PathParam("username") String user, UserCredentialWrapper credentials);
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "POST",
value = "Changing the user password.",
notes = "A user is able to change the password to secure their EMM profile via this REST API.")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "User password was successfully changed."),
@ApiResponse(code = 400, message = "Old password does not match."),
@ApiResponse(code = 500, message = "Could not change the password of the user. The Character encoding is" +
" not supported.")
})
@Permission(scope = "user-modify", permissions = {"/permission/admin/login"})
Response resetPassword(
@ApiParam(name = "username", value = "Username of the user.",required = true)
@PathParam("username") String username,
@ApiParam(name = "credentials", value = "Credential.",required = true)
UserCredentialWrapper credentials);
}

@ -23,10 +23,9 @@ import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException;
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceTypeManagementService;
import org.wso2.carbon.device.mgt.jaxrs.service.api.ConfigurationManagementService;
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
import org.wso2.carbon.device.mgt.jaxrs.util.MDMAppConstants;
import org.wso2.carbon.device.mgt.jaxrs.util.ResponsePayload;
import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil;
import javax.ws.rs.*;
@ -34,40 +33,30 @@ import javax.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.List;
@Path("/device-types")
public class DeviceTypeManagementServiceImpl implements DeviceTypeManagementService {
@Path("/configuration")
public class ConfigurationServiceImpl implements ConfigurationManagementService {
private static final Log log = LogFactory.getLog(DeviceTypeManagementServiceImpl.class);
@GET
@Override
public Response getTypes() {
return null;
}
private static final Log log = LogFactory.getLog(ConfigurationServiceImpl.class);
@POST
@Path("/{type}/configuration")
@Override
public Response saveConfiguration(@PathParam("type") String type, PlatformConfiguration config) {
ResponsePayload responseMsg = new ResponsePayload();
public Response saveConfiguration(PlatformConfiguration config) {
try {
DeviceMgtAPIUtils.getPlatformConfigurationManagementService().saveConfiguration(config,
MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH);
//Schedule the task service
DeviceMgtAPIUtils.scheduleTaskService(DeviceMgtAPIUtils.getNotifierFrequency(config));
return Response.status(Response.Status.OK).entity("Platform configuration of device type '" + type +
"' has successfully been saved").build();
return Response.status(Response.Status.OK).entity("Platform configuration successfully saved.").build();
} catch (ConfigurationManagementException e) {
String msg = "Error occurred while saving the platform configuration of device type '" + type + "'";
String msg = "Error occurred while saving the platform configuration.";
log.error(msg, e);
return javax.ws.rs.core.Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
}
}
@GET
@Path("/{type}/configuration")
@Override
public Response getConfiguration(@PathParam("type") String type) {
public Response getConfiguration() {
String msg;
try {
PlatformConfiguration config = DeviceMgtAPIUtils.getPlatformConfigurationManagementService().
@ -84,26 +73,24 @@ public class DeviceTypeManagementServiceImpl implements DeviceTypeManagementServ
config.setConfiguration(configList);
return Response.status(Response.Status.OK).entity(config).build();
} catch (ConfigurationManagementException e) {
msg = "Error occurred while retrieving the configuration of device type '" + type + "'";
msg = "Error occurred while retrieving the configurations.";
log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
}
}
@PUT
@Path("/{type}/configuration")
@Override
public Response updateConfiguration(@PathParam("type") String type, PlatformConfiguration config) {
ResponsePayload responseMsg = new ResponsePayload();
public Response updateConfiguration(PlatformConfiguration config) {
try {
DeviceMgtAPIUtils.getPlatformConfigurationManagementService().saveConfiguration(config,
MDMAppConstants.RegistryConstants.GENERAL_CONFIG_RESOURCE_PATH);
//Schedule the task service
DeviceMgtAPIUtils.scheduleTaskService(DeviceMgtAPIUtils.getNotifierFrequency(config));
return Response.status(Response.Status.CREATED).entity("Configuration of device type '" + type +
"' has successfully been updated").build();
return Response.status(Response.Status.CREATED)
.entity("Configuration has successfully been updated").build();
} catch (ConfigurationManagementException e) {
String msg = "Error occurred while updating the configuration of device type '" + type + "'";
String msg = "Error occurred while updating the configuration.";
log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
}

@ -39,6 +39,7 @@ import javax.ws.rs.*;
import javax.ws.rs.core.Response;
import java.util.List;
@Path("/policies")
public class PolicyManagementServiceImpl implements PolicyManagementService {
private static final Log log = LogFactory.getLog(PolicyManagementServiceImpl.class);
@ -101,6 +102,9 @@ public class PolicyManagementServiceImpl implements PolicyManagementService {
try {
PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP();
policies = policyAdministratorPoint.getPolicies();
if (policies == null || policies.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("No policies found.").build();
}
} catch (PolicyManagementException e) {
String msg = "Error occurred while retrieving all available policies";
log.error(msg, e);
@ -118,6 +122,9 @@ public class PolicyManagementServiceImpl implements PolicyManagementService {
try {
PolicyAdministratorPoint policyAdministratorPoint = policyManagementService.getPAP();
policy = policyAdministratorPoint.getPolicy(id);
if (policy == null) {
return Response.status(Response.Status.NOT_FOUND).entity("Policy not found.").build();
}
} catch (PolicyManagementException e) {
String msg = "Error occurred while retrieving policy corresponding to the id '" + id + "'";
log.error(msg, e);
@ -168,7 +175,7 @@ public class PolicyManagementServiceImpl implements PolicyManagementService {
return Response.status(Response.Status.OK).entity("Policies have been successfully deleted").build();
} else {
//TODO:Check of this logic is correct
return Response.status(Response.Status.BAD_REQUEST).entity("Policy doesn't exist").build();
return Response.status(Response.Status.NOT_FOUND).entity("Policy doesn't exist").build();
}
}

@ -48,6 +48,9 @@ public class RoleManagementServiceImpl implements RoleManagementService {
List<String> filteredRoles;
try {
filteredRoles = getRolesFromUserStore();
if (filteredRoles == null || filteredRoles.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("No roles found.").build();
}
} catch (UserStoreException e) {
String msg = "Error occurred while retrieving roles from the underlying user stores";
log.error(msg, e);
@ -82,6 +85,9 @@ public class RoleManagementServiceImpl implements RoleManagementService {
filteredRoles.add(role);
}
}
if (filteredRoles == null || filteredRoles.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("No roles found.").build();
}
return Response.status(Response.Status.OK).entity(filteredRoles).build();
}
@ -110,6 +116,9 @@ public class RoleManagementServiceImpl implements RoleManagementService {
filteredRoles.add(role);
}
}
if (filteredRoles == null || filteredRoles.size() == 0) {
return Response.status(Response.Status.NOT_FOUND).entity("No roles found.").build();
}
return Response.status(Response.Status.OK).entity(filteredRoles).build();
}
@ -126,6 +135,10 @@ public class RoleManagementServiceImpl implements RoleManagementService {
}
final UserRealmProxy userRealmProxy = new UserRealmProxy(userRealmCore);
rolePermissions = this.getUIPermissionNode(roleName, userRealmProxy);
if (rolePermissions == null) {
return Response.status(Response.Status.NOT_FOUND).entity("No permissions found for the role '" +
roleName + "'").build();
}
return Response.status(Response.Status.OK).entity(rolePermissions).build();
} catch (UserAdminException e) {
String msg = "Error occurred while retrieving the permissions of role '" + roleName + "'";
@ -188,6 +201,10 @@ public class RoleManagementServiceImpl implements RoleManagementService {
String[] permListAr = new String[permList.size()];
roleWrapper.setPermissions(permList.toArray(permListAr));
}
if (roleWrapper == null) {
return Response.status(Response.Status.NOT_FOUND).entity("No roles found for the role name '"
+ roleName + ".").build();
}
} catch (UserStoreException | UserAdminException e) {
String msg = "Error occurred while retrieving the user role '" + roleName + "'";
log.error(msg, e);

@ -175,6 +175,10 @@ public class UserManagementServiceImpl implements UserManagementService {
if (log.isDebugEnabled()) {
log.debug("User by username: " + username + " was found.");
}
if (user == null) {
return Response.status(Response.Status.NOT_FOUND).entity("User by username '" + username + "' " +
"doesn't exist").build();
}
return Response.status(Response.Status.OK).entity(user).build();
} else {
// Outputting debug message upon trying to remove non-existing user
@ -182,7 +186,7 @@ public class UserManagementServiceImpl implements UserManagementService {
log.debug("User by username: " + username + " does not exist.");
}
// returning response with bad request state
return Response.status(Response.Status.BAD_REQUEST).entity(
return Response.status(Response.Status.NOT_FOUND).entity(
"User by username: " + username + " does not exist").build();
}
} catch (UserStoreException e) {
@ -196,7 +200,6 @@ public class UserManagementServiceImpl implements UserManagementService {
@Path("/{username}")
@Override
public Response updateUser(@PathParam("username") String username, UserWrapper userWrapper) {
ResponsePayload responsePayload = new ResponsePayload();
try {
UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
if (userStoreManager.isExistingUser(userWrapper.getUsername())) {
@ -233,21 +236,16 @@ public class UserManagementServiceImpl implements UserManagementService {
log.debug("User by username: " + userWrapper.getUsername() + " was successfully updated.");
}
// returning response with success state
responsePayload.setStatusCode(HttpStatus.SC_CREATED);
responsePayload.setMessageFromServer("User by username: " + userWrapper.getUsername() +
" was successfully updated.");
return Response.status(Response.Status.CREATED).entity(responsePayload).build();
return Response.status(Response.Status.CREATED).entity("User by username '" + userWrapper.getUsername() +
"' was successfully updated.").build();
} else {
if (log.isDebugEnabled()) {
log.debug("User by username: " + userWrapper.getUsername() +
" doesn't exists. Therefore, request made to update user was refused.");
}
// returning response with bad request state
responsePayload.setStatusCode(HttpStatus.SC_CONFLICT);
responsePayload.
setMessageFromServer("User by username: " + userWrapper.getUsername() +
" doesn't exists. Therefore, request made to update user was refused.");
return Response.status(Response.Status.CONFLICT).entity(responsePayload).build();
return Response.status(Response.Status.CONFLICT).entity("User by username: " +
userWrapper.getUsername() + " doesn't exists. Therefore, request made to update user was " +
"refused.").build();
}
} catch (UserStoreException | UnsupportedEncodingException e) {
String msg = "Exception in trying to update user by username: " + userWrapper.getUsername();
@ -294,7 +292,7 @@ public class UserManagementServiceImpl implements UserManagementService {
log.debug("User by username: " + username + " does not exist for removal.");
}
// returning response with bad request state
return Response.status(Response.Status.BAD_REQUEST).entity("User by username: " + username +
return Response.status(Response.Status.NOT_FOUND).entity("User by username: " + username +
" does not exist for removal.").build();
}
} catch (UserStoreException e) {
@ -318,7 +316,7 @@ public class UserManagementServiceImpl implements UserManagementService {
if (log.isDebugEnabled()) {
log.debug("User by username: " + username + " does not exist for role retrieval.");
}
return Response.status(Response.Status.BAD_REQUEST).entity("User by username: " + username +
return Response.status(Response.Status.NOT_FOUND).entity("User by username: " + username +
" does not exist for role retrieval.").build();
}
} catch (UserStoreException e) {

@ -25,10 +25,7 @@ import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.DeviceManagementAdminService;
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
import javax.ws.rs.Consumes;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;
@ -41,6 +38,7 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
private static final Log log = LogFactory.getLog(DeviceManagementAdminServiceImpl.class);
@Override
@GET
public Response getDevicesByName(@QueryParam("name") String name, @QueryParam("tenant-domain") String tenantDomain) {
List<Device> devices;
try {

@ -64,7 +64,7 @@
</bean>
<bean id="deviceManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.DeviceManagementServiceImpl"/>
<bean id="deviceTypeManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.DeviceTypeManagementServiceImpl"/>
<bean id="deviceTypeManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.ConfigurationServiceImpl"/>
<bean id="activityProviderService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.ActivityProviderServiceImpl"/>
<bean id="notificationManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.NotificationManagementServiceImpl"/>
<bean id="policyManagementService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.PolicyManagementServiceImpl"/>

Loading…
Cancel
Save