kamidu 8 years ago
commit fc50b851bc

@ -26,13 +26,14 @@ import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ApiModel(value = "List of activities", description = "This contains a set of activities that matches a given " + @ApiModel(value = "List of activities", description = "This contains a set of activities that matches a given"
"criteria as a collection") + " criteria as a collection")
public class ActivityList extends BasePaginatedResult { public class ActivityList extends BasePaginatedResult {
private List<Activity> activities; private List<Activity> activities;
@ApiModelProperty(value = "List of devices returned") @ApiModelProperty(value = "Returns the list of activities that match the offset and limit parameter values"
+ " that were specified.")
@JsonProperty("activities") @JsonProperty("activities")
public List<Activity> getList() { public List<Activity> getList() {
return activities; return activities;
@ -46,7 +47,6 @@ public class ActivityList extends BasePaginatedResult {
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("{\n"); sb.append("{\n");
sb.append(" count: ").append(getCount()).append(",\n"); sb.append(" count: ").append(getCount()).append(",\n");
sb.append(" devices: [").append(activities).append("\n"); sb.append(" devices: [").append(activities).append("\n");
sb.append("]}\n"); sb.append("]}\n");

@ -23,15 +23,13 @@ import io.swagger.annotations.ApiModelProperty;
public class BasePaginatedResult { public class BasePaginatedResult {
private int count;
private String next;
private String previous;
/** /**
* Number of Resources returned. * Number of Resources returned.
*/ */
@ApiModelProperty(value = "Number of resources returned.") @ApiModelProperty(value = "Number of total resources.", example = "2")
@JsonProperty("count") @JsonProperty("count")
private int count;
public int getCount() { public int getCount() {
return count; return count;
} }

@ -29,7 +29,8 @@ public class RoleList extends BasePaginatedResult {
private List<String> roles; private List<String> roles;
@ApiModelProperty(value = "List of roles returned") @ApiModelProperty(value = "Returns the list of roles that match the offset and limit parameter values "
+ "that were specified.")
@JsonProperty("roles") @JsonProperty("roles")
public List<String> getList() { public List<String> getList() {
return roles; return roles;

@ -34,8 +34,8 @@ import javax.ws.rs.core.Response;
@API(name = "Configuration Management", version = "1.0.0", context = "/api/device-mgt/v1.0/configuration", tags = {"devicemgt_admin"}) @API(name = "Configuration Management", version = "1.0.0", context = "/api/device-mgt/v1.0/configuration", tags = {"devicemgt_admin"})
@Path("/configuration") @Path("/configuration")
@Api(value = "Configuration Management", description = "General Tenant Configuration management capabilities are exposed " + @Api(value = "Configuration Management", description = "The general platform configuration management capabilities are exposed " +
"through this API") "through this API.")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
public interface ConfigurationManagementService { public interface ConfigurationManagementService {
@ -44,14 +44,16 @@ public interface ConfigurationManagementService {
@ApiOperation( @ApiOperation(
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "GET", httpMethod = "GET",
value = "Get the general platform configurations.", value = "Getting General Platform Configurations",
notes = "Get the general platform level configuration details.", notes = "WSO2 EMM monitors policies to verify that the devices comply with the policies enforced on them. " +
"General platform configurations include the settings on how often the the device need to be monitored. " +
"Using this REST API you can get the general platform level configurations.",
tags = "Configuration Management") tags = "Configuration Management")
@ApiResponses( @ApiResponses(
value = { value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Successfully fetched general platform configuration.", message = "OK. \n Successfully fetched the general platform configurations.",
response = PlatformConfiguration.class, response = PlatformConfiguration.class,
responseContainer = "List", responseContainer = "List",
responseHeaders = { responseHeaders = {
@ -70,22 +72,23 @@ public interface ConfigurationManagementService {
), ),
@ApiResponse( @ApiResponse(
code = 304, code = 304,
message = "Not Modified. \n Empty body because the client has already the latest version of " + message = "Not Modified. \n Empty body because the client already has the latest version of the requested resource."),
"the requested resource."),
@ApiResponse( @ApiResponse(
code = 406, code = 406,
message = "Not Acceptable.\n The requested media type is not supported"), message = "Not Acceptable.\n The requested media type is not supported."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n Server error occurred while fetching the general " + message = "Internal Server Error. \n Server error occurred while fetching the general " +
"platform configuration.", "platform configurations.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
@Permission(name = "View Configurations", permission = "/device-mgt/platform-configurations/view") @Permission(name = "View Configurations", permission = "/device-mgt/platform-configurations/view")
Response getConfiguration( Response getConfiguration(
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Checks if the requested variant was modified, since the specified date-time.\n" +
"Provide the value in the following format: EEE, d MMM yyyy HH:mm:ss Z." +
"Example: Mon, 05 Jan 2014 15:10:00 +0200",
required = false) required = false)
@HeaderParam("If-Modified-Since") @HeaderParam("If-Modified-Since")
String ifModifiedSince); String ifModifiedSince);
@ -95,14 +98,16 @@ public interface ConfigurationManagementService {
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT", httpMethod = "PUT",
value = "Update General Platform Configurations.", value = "Updating General Platform Configurations",
notes = "This resource is used to update the general platform configuration.", notes = "WSO2 EMM monitors policies to verify that the devices comply with the policies enforced on them." +
"General platform configurations include the settings on how often the the device need to be monitored." +
"Using this REST API you can update the general platform level configurations.",
tags = "Configuration Management") tags = "Configuration Management")
@ApiResponses( @ApiResponses(
value = { value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n General platform configuration has been updated successfully", message = "OK. \n Successfully updated the general platform configurations.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Type", name = "Content-Type",
@ -120,18 +125,18 @@ public interface ConfigurationManagementService {
message = "Bad Request. \n Invalid request or validation error."), message = "Bad Request. \n Invalid request or validation error."),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format."), message = "Unsupported media type. \n The format of the requested entity was not supported."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while modifying general platform configuration.", "Server error occurred while modifying the general platform configurations.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
@Permission(name = "Manage configurations", permission = "/device-mgt/platform-configurations/manage") @Permission(name = "Manage configurations", permission = "/device-mgt/platform-configurations/manage")
Response updateConfiguration( Response updateConfiguration(
@ApiParam( @ApiParam(
name = "configuration", name = "configuration",
value = "The required properties to be updated in the platform configuration.", value = "The properties required to update the platform configurations.",
required = true) required = true)
PlatformConfiguration configuration); PlatformConfiguration configuration);

@ -44,15 +44,15 @@ public interface RoleManagementService {
@ApiOperation( @ApiOperation(
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "GET", httpMethod = "GET",
value = "Get the list of roles.", value = "Getting the List of Roles",
notes = "If you wish to get the details of all the roles in EMM, you can do so using this REST API. All " + notes = "WSO2 EMM supports role-based access control (RBAC) and role management. Using this API you can the list of roles that are in WSO2 EMM.\n" +
"internal roles, roles created for Service-providers and application related roles are omitted.", "Note: Internal roles, roles created for service-providers, and application related roles will not be given in the output.",
tags = "Role Management") tags = "Role Management")
@ApiResponses( @ApiResponses(
value = { value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Successfully fetched the requested list of roles.", message = "OK. \n Successfully fetched the list of roles in WSO2 EMM.",
response = RoleList.class, response = RoleList.class,
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
@ -69,41 +69,45 @@ public interface RoleManagementService {
}), }),
@ApiResponse( @ApiResponse(
code = 304, code = 304,
message = "Not Modified. \n Empty body because the client has already the latest version of the requested resource."), message = "Not Modified. \n Empty body because the client already has the latest version of the requested resource."),
@ApiResponse( @ApiResponse(
code = 406, code = 406,
message = "Not Acceptable.\n The requested media type is not supported"), message = "Not Acceptable.\n The requested media type is not supported"),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n Server error occurred while fetching requested list of roles.", message = "Internal Server Error. \n Server error occurred while fetching list of roles.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
@Permission(name = "View Roles", permission = "/device-mgt/roles/view") @Permission(name = "View Roles", permission = "/device-mgt/roles/view")
Response getRoles( Response getRoles(
@ApiParam( @ApiParam(
name = "filter", name = "filter",
value = "Role name or a part of it to search.", value = "Provide a character or a few characters in the role name.",
required = false) required = false)
@QueryParam("filter") String filter, @QueryParam("filter") String filter,
@ApiParam( @ApiParam(
name = "user-store", name = "user-store",
value = "From which user store the roles must be fetched.", value = "The name of the UserStore you wish to get the list of roles.",
required = false) required = false)
@QueryParam("user-store") String userStoreName, @QueryParam("user-store") String userStoreName,
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Checks if the requested variant was modified, since the specified date-time." +
"Provide the value in the following format: EEE, d MMM yyyy HH:mm:ss Z.\n" +
"Example: Mon, 05 Jan 2014 15:10:00 +0200",
required = false) required = false)
@HeaderParam("If-Modified-Since") String ifModifiedSince, @HeaderParam("If-Modified-Since") String ifModifiedSince,
@ApiParam( @ApiParam(
name = "offset", name = "offset",
value = "Starting point within the complete list of items qualified.", value = "The starting pagination index for the complete list qualified items.",
required = false) required = false,
defaultValue = "0")
@QueryParam("offset") int offset, @QueryParam("offset") int offset,
@ApiParam( @ApiParam(
name = "limit", name = "limit",
value = "Maximum size of resource array to return.", value = "Provide how many roles details you require from the starting pagination index/offset.",
required = false) required = false,
defaultValue = "5")
@QueryParam("limit") int limit); @QueryParam("limit") int limit);
@GET @GET
@ -111,10 +115,10 @@ public interface RoleManagementService {
@ApiOperation( @ApiOperation(
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "GET", 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 " + notes = "An individual is associated a with set of responsibilities based on their " +
"role. In EMM you are able to configure permissions based on the responsibilities carried " + "role. In WSO2 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 " + "out by various roles. Therefore, if you wish to retrieve the permission details of a role, you can do " +
"so using this REST API.", "so using this REST API.",
response = UIPermissionNode.class, response = UIPermissionNode.class,
responseContainer = "List", responseContainer = "List",
@ -124,7 +128,7 @@ public interface RoleManagementService {
value = { value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Successfully fetched the permission list of the given role.", message = "OK. \n Successfully fetched the permissions details for the specified role.",
response = UIPermissionNode.class, response = UIPermissionNode.class,
responseContainer = "List", responseContainer = "List",
responseHeaders = { responseHeaders = {
@ -142,14 +146,14 @@ public interface RoleManagementService {
}), }),
@ApiResponse( @ApiResponse(
code = 304, code = 304,
message = "Not Modified. \n Empty body because the client has already the latest version of the requested resource."), message = "Not Modified. \n Empty body because the client already has the latest version of the requested resource.\n"),
@ApiResponse( @ApiResponse(
code = 400, code = 400,
message = "Bad Request. \n Invalid request or validation error.", message = "Bad Request. \n Invalid request or validation error.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Role does not exist.", message = "Not Found. \n The specified role does not exist.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 406, code = 406,
@ -157,19 +161,22 @@ public interface RoleManagementService {
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server ErrorResponse. \n Server error occurred while fetching the permission list of the requested role.", message = "Internal Server ErrorResponse. \n Server error occurred while fetching the permission list for the requested role.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
@Permission(name = "View Roles", permission = "/device-mgt/roles/view") @Permission(name = "View Roles", permission = "/device-mgt/roles/view")
Response getPermissionsOfRole( Response getPermissionsOfRole(
@ApiParam( @ApiParam(
name = "roleName", name = "roleName",
value = "Name of the role.", value = "The name of the role.",
required = true) required = true,
defaultValue = "Engineer")
@PathParam("roleName") String roleName, @PathParam("roleName") String roleName,
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Checks if the requested variant was modified, since the specified date-time." +
"Provide the value in the following format: EEE, d MMM yyyy HH:mm:ss Z.\n" +
"Example: Mon, 05 Jan 2014 15:10:00 +0200",
required = false) required = false)
@HeaderParam("If-Modified-Since") String ifModifiedSince); @HeaderParam("If-Modified-Since") String ifModifiedSince);
@ -178,15 +185,15 @@ public interface RoleManagementService {
@ApiOperation( @ApiOperation(
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "GET", httpMethod = "GET",
value = "Get details of a role.", 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.", notes = "Get the permissions associated with a role and role specific details using this REST API.",
response = RoleInfo.class, response = RoleInfo.class,
tags = "Role Management") tags = "Role Management")
@ApiResponses( @ApiResponses(
value = { value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Successfully fetched the requested role.", message = "OK. \n Successfully fetched the details of the role.",
response = RoleInfo.class, response = RoleInfo.class,
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
@ -203,15 +210,14 @@ public interface RoleManagementService {
}), }),
@ApiResponse( @ApiResponse(
code = 304, code = 304,
message = "Not Modified. \n Empty body because the client has already the latest version of" + message = "Not Modified. \n Empty body because the client already has the latest version of the requested resource."),
" the requested resource."),
@ApiResponse( @ApiResponse(
code = 400, code = 400,
message = "Bad Request. \n Invalid request or validation error.", message = "Bad Request. \n Invalid request or validation error.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Role does not exist.", message = "Not Found. \n The specified role does not exist.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 406, code = 406,
@ -219,7 +225,7 @@ public interface RoleManagementService {
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n Server error occurred while fetching the " + message = "Internal Server Error. \n Server error occurred while fetching the details of" +
"requested role.", "requested role.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
@ -227,12 +233,15 @@ public interface RoleManagementService {
Response getRole( Response getRole(
@ApiParam( @ApiParam(
name = "roleName", name = "roleName",
value = "Name of the role.", value = "The name of the role.",
required = true) required = true,
defaultValue = "admin")
@PathParam("roleName") String roleName, @PathParam("roleName") String roleName,
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Checks if the requested variant was modified, since the specified date-time." +
"Provide the value in the following format: EEE, d MMM yyyy HH:mm:ss Z.\n" +
"Example: Mon, 05 Jan 2014 15:10:00 +0200",
required = false) required = false)
@HeaderParam("If-Modified-Since") String ifModifiedSince); @HeaderParam("If-Modified-Since") String ifModifiedSince);
@ -241,17 +250,17 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "POST", httpMethod = "POST",
value = "Add a role.", value = "Adding a Role",
notes = "You are able to add a new role to EMM using the REST API.", notes = "WSO2 EMM supports role-based access control (RBAC) and role management. Add a new role to WSO2 EMM using this REST API.",
tags = "Role Management") tags = "Role Management")
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 201, code = 201,
message = "Created. \n Role has successfully been created", message = "Created. \n Successfully created the role.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Location", name = "Content-Location",
description = "The URL of the role added."), description = "The URL to the newly added role."),
@ResponseHeader( @ResponseHeader(
name = "Content-Type", name = "Content-Type",
description = "The content type of the body"), description = "The content type of the body"),
@ -265,7 +274,7 @@ public interface RoleManagementService {
"Used by caches, or in conditional requests.")}), "Used by caches, or in conditional requests.")}),
@ApiResponse( @ApiResponse(
code = 303, code = 303,
message = "See Other. \n Source can be retrieved from the URL specified at the Location header.", message = "See Other. \n The source can be retrieved from the URL specified in the location header.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Location", name = "Content-Location",
@ -276,7 +285,7 @@ public interface RoleManagementService {
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format.", message = "Unsupported media type. \n The format of the requested entity was not supported.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
@ -287,7 +296,7 @@ public interface RoleManagementService {
Response addRole( Response addRole(
@ApiParam( @ApiParam(
name = "role", name = "role",
value = "Details about the role to be added.", value = "The properties required to add a new role.",
required = true) RoleInfo role); required = true) RoleInfo role);
@PUT @PUT
@ -296,14 +305,14 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT", httpMethod = "PUT",
value = "Update a role.", value = "Updating Role Details",
notes = "There will be situations where you will need to update the role details, such as the permissions" + notes = "There will be situations where you need to update the role details, such as the permissions" +
" or the role name. In such situation you can update the role details.", " or the role name. Update the role details using this REST API.",
tags = "Role Management") tags = "Role Management")
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Role has been updated successfully", message = "OK. \n Successfully updated the specified role.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Type", name = "Content-Type",
@ -314,7 +323,7 @@ public interface RoleManagementService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests.")}), "Used by caches, or in conditional requests.")}),
@ApiResponse( @ApiResponse(
code = 400, code = 400,
@ -322,11 +331,11 @@ public interface RoleManagementService {
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Role to be deleted does not exist.", message = "Not Found. \n The specified role does not exist.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format.", message = "Unsupported media type. \n The format of the requested entity was not supported.\n",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
@ -337,33 +346,34 @@ public interface RoleManagementService {
Response updateRole( Response updateRole(
@ApiParam( @ApiParam(
name = "roleName", name = "roleName",
value = "Name of the role.", value = "The name of the role.",
required = true) required = true,
defaultValue = "engineer")
@PathParam("roleName") String roleName, @PathParam("roleName") String roleName,
@ApiParam( @ApiParam(
name = "role", name = "role",
value = "Details about the role to be added.", value = "The properties required to update a role.",
required = true) RoleInfo role); required = true) RoleInfo role);
@DELETE @DELETE
@Path("/{roleName}") @Path("/{roleName}")
@ApiOperation( @ApiOperation(
httpMethod = "DELETE", httpMethod = "DELETE",
value = "Delete a role.", value = "Deleting a Role",
notes = "In a situation when your Organization identifies that a specific role is no longer required you " + notes = "Roles become obsolete over time due to various reasons. In a situation where your Organization identifies that a specific role is no longer required, you " +
"will need to remove the role details from EMM.", "can delete a role using this REST API.",
tags = "Role Management") tags = "Role Management")
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Role has successfully been removed"), message = "OK. \n Successfully removed the specified role."),
@ApiResponse( @ApiResponse(
code = 400, code = 400,
message = "Bad Request. \n Invalid request or validation error.", message = "Bad Request. \n Invalid request or validation error.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Role to be deleted does not exist.", message = "Not Found. \n The specified role does not exist.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
@ -374,8 +384,9 @@ public interface RoleManagementService {
Response deleteRole( Response deleteRole(
@ApiParam( @ApiParam(
name = "roleName", name = "roleName",
value = "Name of the role to de deleted.", value = "The name of the role that needs to de deleted.",
required = true) required = true,
defaultValue = "engineer")
@PathParam("roleName") String roleName); @PathParam("roleName") String roleName);
@PUT @PUT
@ -384,19 +395,19 @@ public interface RoleManagementService {
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT", httpMethod = "PUT",
value = "Add 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, " + notes = "Defining 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 " + "You can update the users that belong to a given role after you have created " +
"a role using this REST API." + "a role using this REST API.\n" +
"Example: Your Organization hires 30 new engineers. Updating the role details for each user can " + "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 " + "be cumbersome. Therefore, you can define all the new employees that belong to the engineering " +
"role using this API.", "role using this API.",
tags = "Role Management") tags = "Role Management")
@ApiResponses( @ApiResponses(
value = { value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n User list of the role has been updated successfully", message = "OK. \n Successfully added the users to the specified role.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Type", name = "Content-Type",
@ -415,17 +426,17 @@ public interface RoleManagementService {
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource to be deleted does not exist.", message = "Not Found. \n The specified role does not exist.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not " + message = "Unsupported media type. \n The format of the requested entity was not supported.\n" +
"supported format.", "supported format.",
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while updating the user list of the role.", "Server error occurred while adding the user to the specified role.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
@Permission(name = "Manage Roles", permission = "/device-mgt/roles/manage") @Permission(name = "Manage Roles", permission = "/device-mgt/roles/manage")
@ -437,7 +448,10 @@ public interface RoleManagementService {
@PathParam("roleName") String roleName, @PathParam("roleName") String roleName,
@ApiParam( @ApiParam(
name = "users", name = "users",
value = "List of usernames to be added.", value = "Define the users that belong to the role.\n" +
required = true) List<String> users); "Multiple users can be added to a role by using comma separated values. ",
required = true,
defaultValue = "[jim]"
) List<String> users);
} }

@ -49,14 +49,14 @@ public interface ApplicationManagementAdminService {
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "POST", httpMethod = "POST",
value = "Application installation API.(Internal API)", value = "Installing an Application (Internal API)",
notes = "This is an internal API used for application installation on a device.", notes = "This is an internal API that can be used to install an application on a device.",
response = Activity.class, response = Activity.class,
tags = "Application Management Administrative Service") tags = "Application Management Administrative Service")
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 202, code = 202,
message = "OK. \n Install application operation will be delivered to the given devices", message = "Accepted. \n The install application operation will be delivered to the specified devices",
response = Activity.class), response = Activity.class),
@ApiResponse( @ApiResponse(
code = 400, code = 400,
@ -64,15 +64,15 @@ public interface ApplicationManagementAdminService {
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource to be processed does not exist."), message = "Not Found. \n The specified resource does not exist."),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format."), message = "Unsupported media type. \n The format of the requested entity was not supported."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while bulk issuing application installation operations upon " + "Server error occurred while executing the application install operation in bulk" +
"a given set of devices.", " for a specified set of devices.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
@Permission(name = "Install/Uninstall applications", permission = "/device-mgt/applications/manage") @Permission(name = "Install/Uninstall applications", permission = "/device-mgt/applications/manage")
@ -88,14 +88,14 @@ public interface ApplicationManagementAdminService {
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "POST", httpMethod = "POST",
value = "Application un-installation API.(Internal API)", value = "Uninstalling an Application (Internal API)\n",
notes = "This is an internal API used for application un-installation on a device.", notes = "This is an internal API that can be used to uninstall an application.",
response = Activity.class, response = Activity.class,
tags = "Application Management Administrative Service") tags = "Application Management Administrative Service")
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 202, code = 202,
message = "OK. \n Uninstall application operation will be delivered to the provided devices", message = "Accepted. \n The uninstall application operation will be delivered to the provided devices",
response = Activity.class), response = Activity.class),
@ApiResponse( @ApiResponse(
code = 400, code = 400,
@ -103,15 +103,14 @@ public interface ApplicationManagementAdminService {
response = ErrorResponse.class), response = ErrorResponse.class),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource to be processed does not exist."), message = "Not Found. \n The specified resource does not exist."),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format."), message = "Unsupported media type. \n The entity of the request was in a not supported format."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n Server error occurred while executing the application install operation in bulk" +
"Server error occurred while bulk issuing application un-installation operations upon " + " for a specified set of devices.",
"a given set of devices.",
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
@Permission(name = "Install/Uninstall applications", permission = "/device-mgt/applications/manage") @Permission(name = "Install/Uninstall applications", permission = "/device-mgt/applications/manage")

@ -29,12 +29,12 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
@SwaggerDefinition( @SwaggerDefinition(
basePath = "/api-device-mgt-v1.0", basePath = "/api/device-mgt/v1.0",
host = "localhost:9443" host = "localhost:9443"
) )
public class SecurityDefinitionConfigurator implements ReaderListener { public class SecurityDefinitionConfigurator implements ReaderListener {
public static final String TOKEN_AUTH_SCHEME = "tokenAuthScheme"; public static final String TOKEN_AUTH_SCHEME = "swagger_auth";
@Override @Override
public void beforeScan(Reader reader, Swagger swagger) { public void beforeScan(Reader reader, Swagger swagger) {
@ -45,9 +45,10 @@ public class SecurityDefinitionConfigurator implements ReaderListener {
public void afterScan(Reader reader, Swagger swagger) { public void afterScan(Reader reader, Swagger swagger) {
OAuth2Definition tokenScheme = new OAuth2Definition(); OAuth2Definition tokenScheme = new OAuth2Definition();
tokenScheme.setType("oauth2"); tokenScheme.setType("oauth2");
tokenScheme.setFlow("password"); tokenScheme.setFlow("application");
tokenScheme.setTokenUrl("https://" + swagger.getHost() + "/oauth/token"); tokenScheme.setTokenUrl("https://" + swagger.getHost() + "/oauth2/token");
tokenScheme.setAuthorizationUrl("https://" + swagger.getHost() + "/oauth/authorize"); tokenScheme.setAuthorizationUrl("https://" + swagger.getHost() + "/oauth2/authorize");
tokenScheme.addScope("write:everything", "Full access");
Map<String, SecuritySchemeDefinition> schemes = new HashMap<>(); Map<String, SecuritySchemeDefinition> schemes = new HashMap<>();
schemes.put(TOKEN_AUTH_SCHEME, tokenScheme); schemes.put(TOKEN_AUTH_SCHEME, tokenScheme);

@ -28,12 +28,20 @@ import java.io.Serializable;
"uniquely.") "uniquely.")
public class DeviceIdentifier implements Serializable{ public class DeviceIdentifier implements Serializable{
@ApiModelProperty(
name = "id",
value = "Identity of the device.",
required = true,
example = "123456")
@JsonProperty(value = "id", required = true) @JsonProperty(value = "id", required = true)
@ApiModelProperty(name = "id", value = "Identity of the device.", required = true)
private String id; private String id;
@ApiModelProperty(
name = "type",
value = "Type of the device.",
required = true,
example = "android")
@JsonProperty(value = "type", required = true) @JsonProperty(value = "type", required = true)
@ApiModelProperty(name = "type", value = "Type of the device.", required = true)
private String type; private String type;
public DeviceIdentifier() {} public DeviceIdentifier() {}

@ -36,14 +36,16 @@ public class Activity {
@ApiModelProperty( @ApiModelProperty(
name = "activityId", name = "activityId",
value = "Activity identifier", value = "Activity identifier",
required = true) required = true,
example = "ACTIVITY_1")
@JsonProperty("activityId") @JsonProperty("activityId")
private String activityId; private String activityId;
@ApiModelProperty( @ApiModelProperty(
name = "code", name = "code",
value = "Activity code", value = "Activity code",
required = true) required = true,
example = "DEVICE_RING")
@JsonProperty("code") @JsonProperty("code")
private String code; private String code;
@ -51,14 +53,16 @@ public class Activity {
name = "type", name = "type",
value = "Activity type", value = "Activity type",
required = true, required = true,
allowableValues = "CONFIG, MESSAGE, INFO, COMMAND, PROFILE, POLICY") allowableValues = "CONFIG, MESSAGE, INFO, COMMAND, PROFILE, POLICY",
example = "COMMAND")
@JsonProperty("type") @JsonProperty("type")
private Type type; private Type type;
@ApiModelProperty( @ApiModelProperty(
name = "createdTimeStamp", name = "createdTimeStamp",
value = "Timestamp recorded when the activity took place", value = "Timestamp recorded when the activity took place",
required = true) required = true,
example = "Thu Oct 06 11:18:47 IST 2016")
@JsonProperty("createdTimestamp") @JsonProperty("createdTimestamp")
private String createdTimeStamp; private String createdTimeStamp;

@ -43,7 +43,8 @@ public class ActivityStatus {
@ApiModelProperty( @ApiModelProperty(
name = "status", name = "status",
value = "Status of the activity performed.", value = "Status of the activity performed.",
required = true) required = true,
example = "PENDING")
@JsonProperty("status") @JsonProperty("status")
private Status status; private Status status;
@ -57,7 +58,8 @@ public class ActivityStatus {
@ApiModelProperty( @ApiModelProperty(
name = "updatedTimestamp ", name = "updatedTimestamp ",
value = "Last updated time of the activity.", value = "Last updated time of the activity.",
required = true) required = true,
example = "Thu Oct 06 11:18:47 IST 2016")
@JsonProperty("updatedTimestamp") @JsonProperty("updatedTimestamp")
private String updatedTimestamp; private String updatedTimestamp;

@ -19,6 +19,7 @@
package org.wso2.carbon.device.mgt.common.operation.mgt; package org.wso2.carbon.device.mgt.common.operation.mgt;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@ -26,10 +27,20 @@ import io.swagger.annotations.ApiModelProperty;
+ " responses") + " responses")
public class OperationResponse { public class OperationResponse {
@ApiModelProperty(name = "response", value = "Operation response returned from the device", required = true) @ApiModelProperty(
name = "response",
value = "Operation response returned from the device",
required = true,
example = "SUCCESSFUL")
@JsonProperty("response")
private String response; private String response;
@ApiModelProperty(name = "receivedTimeStamp", value = "Time that the operation response received",
required = true) @ApiModelProperty(
name = "receivedTimeStamp",
value = "Time that the operation response received",
required = true,
example = "Thu Oct 06 11:18:47 IST 2016")
@JsonProperty("receivedTimeStamp")
private String receivedTimeStamp; private String receivedTimeStamp;
public String getResponse() { public String getResponse() {

@ -19,6 +19,9 @@
<a href="{{#defineZone "productUri"}}{{@app.context}}/{{/defineZone}}"> <a href="{{#defineZone "productUri"}}{{@app.context}}/{{/defineZone}}">
<img src="{{@unit.publicUri}}/img/logo.png" alt="{{defineZone "productName"}}" <img src="{{@unit.publicUri}}/img/logo.png" alt="{{defineZone "productName"}}"
title="{{defineZone "productName"}}" class="logo" /> title="{{defineZone "productName"}}" class="logo" />
<h1>{{#defineZone "productName"}}Unified UI Template App{{/defineZone}}</h1> <h1>
<span class="hidden-xs">{{#defineZone "productName"}}Unified UI Template App{{/defineZone}}</span>
<span class="visible-xs-inline">{{#defineZone "productNameResponsive"}}UUI Tmpl. App{{/defineZone}}</span>
</h1>
</a> </a>
{{/zone}} {{/zone}}

@ -27,12 +27,7 @@
{{@user.username}}<span class="caret"></span> {{@user.username}}<span class="caret"></span>
</span> </span>
</a> </a>
<ul class="dropdown-menu dropdown-menu-right float-remove-xs position-static-xs text-center-xs remove-margin-xs slideInDown" <ul class="dropdown-menu dropdown-menu-right slideInDown" role="menu">
role="menu">
<li class="dropdown-header visible-xs">
{{@user.username}}<span class="caret"></span>
</li>
<li class="divider visible-xs"></li>
{{#defineZone "userMenu-items"}} {{#defineZone "userMenu-items"}}
<li> <li>
<a href="{{@app.context}}/signout">Sign Out</a> <a href="{{@app.context}}/signout">Sign Out</a>

@ -18,10 +18,10 @@
{{#zone "header"}} {{#zone "header"}}
<header class="header header-default"> <header class="header header-default">
<div class="container-fluid"> <div class="container-fluid">
<div class="pull-left brand float-remove-xs text-center-xs"> <div class="pull-left brand">
{{defineZone "brand"}} {{defineZone "brand"}}
</div> </div>
<div class="pull-right auth float-remove-xs text-center-xs"> <div class="pull-right auth">
{{defineZone "userMenu"}} {{defineZone "userMenu"}}
</div> </div>
</div> </div>

@ -2791,6 +2791,7 @@ header .brand {
} }
header .brand img.logo { header .brand img.logo {
height: 24px; height: 24px;
margin-top:0px;
} }
header .brand a { header .brand a {
display: inline-block; display: inline-block;
@ -2822,6 +2823,9 @@ header .nav .open > a:focus {
} }
header .nav .dropdown-menu { header .nav .dropdown-menu {
background: black; background: black;
padding:0px;
margin:0px;
top:50px;
} }
header .nav .dropdown-menu a { header .nav .dropdown-menu a {
color: #fff; color: #fff;
@ -2954,7 +2958,7 @@ tbody.collapse.in {
} }
.dropdown-menu > li > a { .dropdown-menu > li > a {
display: block; display: block;
padding: 3px 20px; padding: 8px 20px;
clear: both; clear: both;
font-weight: normal; font-weight: normal;
line-height: 1.42857; line-height: 1.42857;
@ -3050,6 +3054,12 @@ tbody.collapse.in {
right: auto; right: auto;
} }
} }
@media (max-width : 480px) {
.navbar-right .dropdown-menu-right {
left: auto;
right: 0;
}
}
.btn-group, .btn-group,
.btn-group-vertical { .btn-group-vertical {
position: relative; position: relative;

@ -109,7 +109,7 @@ public class EmailSenderServiceImpl implements EmailSenderService {
Options options = new Options(); Options options = new Options();
options.setProperty(MessageContext.TRANSPORT_HEADERS, headerMap); options.setProperty(MessageContext.TRANSPORT_HEADERS, headerMap);
options.setProperty("FORCE_CONTENT_TYPE_BASED_FORMATTER", "true"); options.setProperty("FORCE_CONTENT_TYPE_BASED_FORMATTER", "true");
options.setProperty(Constants.Configuration.MESSAGE_TYPE, "text/html"); options.setProperty(Constants.Configuration.MESSAGE_TYPE, "application/xml");
options.setProperty(Constants.Configuration.CONTENT_TYPE, "text/html"); options.setProperty(Constants.Configuration.CONTENT_TYPE, "text/html");
options.setTo(new EndpointReference(EMAIL_URI_SCHEME + to)); options.setTo(new EndpointReference(EMAIL_URI_SCHEME + to));

Loading…
Cancel
Save