package org.wso2.carbon.device.mgt.ios.services;

import io.swagger.annotations.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.Authorization;
import io.swagger.annotations.AuthorizationScope;
import io.swagger.annotations.Extension;
import io.swagger.annotations.ExtensionProperty;
import io.swagger.annotations.Info;
import io.swagger.annotations.ResponseHeader;
import io.swagger.annotations.SwaggerDefinition;
import io.swagger.annotations.Tag;
import org.wso2.carbon.apimgt.annotations.api.Scope;
import org.wso2.carbon.apimgt.annotations.api.Scopes;
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.APNBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.AirPlayBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.AppLockBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.AppStoreApplicationBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.AppToPerAppVPNMappingBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.CalDAVWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.CalendarSubscriptionWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.CellularBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.EmailBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.EnterpriseApplicationBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.InstalledRestrictionsBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.LDAPBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.NotificationBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.PasscodePolicyBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.PerAppVPNBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.RemoveApplicationBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.RemoveProfileBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.RestrictionBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.VPNBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.WIFIBeanWrapper;
import org.wso2.carbon.device.mgt.ios.api.utils.beans.wrapper.WebClipBeanWrapper;
import org.wso2.carbon.device.mgt.ios.util.IOSConstants;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;

/**
 * iOS device information REST-API implementation.
 */
@SwaggerDefinition(
        info = @Info(
                version = "1.0.0",
                title = "",
                extensions = {
                        @Extension(properties = {
                                @ExtensionProperty(name = "name", value = "iOS Device Management Administrative"),
                                @ExtensionProperty(name = "context", value = "/api/device-mgt/ios/v1.0/admin/devices"),
                        })
                }
        ),
        tags = {
                @Tag(name = "ios,device_management", description = "")
        }
)
@Scopes(scopes = {
        @Scope(
                name = "Apple cellular payload",
                description = "",
                key = "perm:ios:cellular",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/cellular"}
        ),
        @Scope(
                name = "Add APN",
                description = "",
                key = "perm:ios:apn",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/apn"}
        ),
        @Scope(
                name = "Add email",
                description = "",
                key = "perm:ios:email",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/email"}
        ),
        @Scope(
                name = "Add LDAP",
                description = "",
                key = "perm:ios:ldap",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/ldap"}
        ),
        @Scope(
                name = "Add enterprise application",
                description = "",
                key = "perm:ios:enterprise-app",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/enterprise-app"}
        ),
        @Scope(
                name = "Add store application",
                description = "",
                key = "perm:ios:store-application",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/store-app"}
        ),
        @Scope(
                name = "Add remove application",
                description = "",
                key = "perm:ios:remove-application",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/remove-app"}
        ),
        @Scope(
                name = "Add application list",
                description = "",
                key = "perm:ios:app-list",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/app-list"}
        ),
        @Scope(
                name = "Add profile list",
                description = "",
                key = "perm:ios:profile-list",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/profile-list"}
        ),
        @Scope(
                name = "Add lock",
                description = "",
                key = "perm:ios:lock",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/lock"}
        ),
        @Scope(
                name = "Add enterprise wipe",
                description = "",
                key = "perm:ios:enterprise-wipe",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/enterprise-wipe"}
        ),
        @Scope(
                name = "Add device info",
                description = "",
                key = "perm:ios:device-info",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/device-info"}
        ),
        @Scope(
                name = "Add restriction",
                description = "",
                key = "perm:ios:restriction",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/restriction"}
        ),
        @Scope(
                name = "Add wifi",
                description = "",
                key = "perm:ios:wifi",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/wifi"}
        ),
        @Scope(
                name = "Add ring",
                description = "",
                key = "perm:ios:ring",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/ring"}
        ),
        @Scope(
                name = "Add location",
                description = "",
                key = "perm:ios:location",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/location"}
        ),
        @Scope(
                name = "Add notification",
                description = "",
                key = "perm:ios:notification",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/notification"}
        ),
        @Scope(
                name = "Add airplay",
                description = "",
                key = "perm:ios:airplay",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/airplay"}
        ),
        @Scope(
                name = "Add caldav",
                description = "",
                key = "perm:ios:caldav",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/caldav"}
        ),
        @Scope(
                name = "Add cal-subscription",
                description = "",
                key = "perm:ios:cal-subscription",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/cal-subscription"}
        ),
        @Scope(
                name = "Add passcode-policy",
                description = "",
                key = "perm:ios:passcode-policy",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/passcode-policy"}
        ),
        @Scope(
                name = "Add webclip",
                description = "",
                key = "perm:ios:webclip",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/webclip"}
        ),
        @Scope(
                name = "Add vpn",
                description = "",
                key = "perm:ios:vpn",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/vpn"}
        ),
        @Scope(
                name = "Add per-app-vpn",
                description = "",
                key = "perm:ios:per-app-vpn",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/per-app-vpn"}
        ),
        @Scope(
                name = "Add app-to-per-app-vpn",
                description = "",
                key = "perm:ios:app-to-per-app-vpn",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/app-to-per-app-vpn"}
        ),
        @Scope(
                name = "Add app-lock",
                description = "",
                key = "perm:ios:app-lock",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/app-lock"}
        ),
        @Scope(
                name = "Add clear-passcode",
                description = "",
                key = "perm:ios:clear-passcode",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/clear-passcode"}
        ),
        @Scope(
                name = "Add remove-profile",
                description = "",
                key = "perm:ios:remove-profile",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/remove-profile"}
        ),
        @Scope(
                name = "Add get-restrictions",
                description = "",
                key = "perm:ios:get-restrictions",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/get-restrictions"}
        ),
        @Scope(
                name = "Add wipe-data",
                description = "",
                key = "perm:ios:wipe-data",
                permissions = {"/device-mgt/devices/owning-device/operations/ios/wipe-data"}
        )
})

@Api(value = "iOS Device Management Administrative",
     description = "This carries all the resources related to the iOS Device management administrator functionalities.")
@Path("/admin/devices")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface DeviceManagementAdminService {

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/cellular")
    @ApiOperation(
            consumes = MediaType.APPLICATION_JSON,
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Adding Cellular Operations",
            notes = "Configure the cellular/network APN settings on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:cellular")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully scheduled th cellular operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the cellular operation" +
                                            "."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the cellular operation.")
    })
    Response addCellularOperation(
            @ApiParam(name = "cellularBeanWrapper",
                      value = "Cellular operation Configurations and Device IDs")
                    CellularBeanWrapper cellularBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/apn")
    @ApiOperation(
            consumes = MediaType.APPLICATION_JSON,
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Configuring APN",
            notes = "Configure APN on an iOS device.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:apn")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully scheduled the APN operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the APN operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the APN operation.")
    })
    Response addAPNOperation(
            @ApiParam(name = "APNBeanWrapper",
                      value = "APN configurations and Device IDs.")
                    APNBeanWrapper apnBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/ldap")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Configuring LDAP",
            notes = "Configure LDAP on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:ldap")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully scheduled the LDAP operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the LDAP operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the LDAP operation.")
    })
    Response addLDAPOperation(
            @ApiParam(name = "ldapBeanWrapper",
                      value = "LDAP configurations and Device IDs")
                    LDAPBeanWrapper ldapBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/email")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Creating an Email Account",
            notes = "Create an email account on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:email")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully scheduled the create email account operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Email operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.\n",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported.\n"),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the email operation.")
    })
    Response addEmailOperation(
            @ApiParam(name = "emailBeanWrapper",
                      value = "Email configuration and Device IDs")
                    EmailBeanWrapper emailBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/enterprise-application")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Installing an Enterprise Application",
            notes = "Install an enterprise application on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:enterprise-app")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the Enterprise application operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Enterprise " +
                                            "Application operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported.\n"),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the enterprise application operation.")
    })
    Response installEnterpriseApplicationOperation(
            @ApiParam(name = "enterpriseApplicationBeanWrapperr",
                      value = "Enterprise application configuration and Device IDs")
                    EnterpriseApplicationBeanWrapper enterpriseApplicationBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/store-application")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Installing an iTunes Store Application",
            notes = "Install an iTune store application on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:store-application")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully installed the application from the iTunes store.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Store Application " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported.\n"),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding a Store Application operation.")
    })
    Response installStoreApplicationOperation(
            @ApiParam(name = "appStoreApplicationBeanWrapper",
                      value = "Configurations to install an application from iTunes and Device IDs.")
                    AppStoreApplicationBeanWrapper appStoreApplicationBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/remove-application")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Removing an Application",
            notes = "Remove an application from iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:remove-application")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully removed the application.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Remove-Application" +
                                            " operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location header",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the Remove-Application operation.")
    })
    Response removeApplication(
            @ApiParam(name = "removeApplicationBeanWrapper",
                      value = "Configurations to remove an application and Device IDs.")
                    RemoveApplicationBeanWrapper removeApplicationBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/application-list")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Getting Application Details",
            notes = "Get the details of installed applications on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:app-list")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully scheduled the get application list operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Application-List " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the Application-List operation.")
    })
    Response getApplicationListOperation(
            @ApiParam(name = "deviceIDs",
                      value = "List of Device IDs.")
                    List<String> deviceIDs);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/profile-list")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Getting a List of the Installed Profiles",
            notes = "Get the list of installed profiles on iOS Devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:profile-list")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the profile List operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Profile-List " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the Profile-List operation.")
    })
    Response getProfileListOperation(
            @ApiParam(name = "deviceIDs",
                      value = "List of device IDs.")
                    List<String> deviceIDs);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/lock")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Adding a Device Lock",
            notes = "Add a screen lock or device lock on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:lock")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the lock operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Lock operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n Source can be retrieved from the URL specified at the Location header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the lock operation.")
    })
    Response lockDevice(
            @ApiParam(name = "List of Device IDs.",
                      value = "deviceIDs")
                    List<String> deviceIDs);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/enterprise-wipe")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Enterprise Wiping iOS Devices",
            notes = "Enterprise wipe is the process of deleting enterprise related data on a device while keeping the" +
                    " personal data intact. You are able to enterprise wipe iOS devices using this REST API.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:enterprise-wipe")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully scheduled th enterprise-wipe operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Enterprise wipe " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding a Enterprise wipe operation.")
    })
    Response enterpriseWIPE(
            @ApiParam(name = "deviceIDs",
                      value = "List of Device IDs.")
                    List<String> deviceIDs);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/device-info")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Requesting Device Information",
            notes = "Using this REST API you are able to request for iOS device details. Once this REST API is " +
                    "executed it will be in the iOS operation queue until the device calls the server to retrieve the" +
                    " list of operations that needs to be executed on the device.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:device-info")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully scheduled the device info operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to Device Info operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported.\n"),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the Device Info operation.")
    })
    Response getDeviceInformation(
            @ApiParam(name = "deviceIDs",
                      value = "List of Device IDs.")
                    List<String> deviceIDs);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/restriction")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Adding Operation Restrictions",
            notes = "Add a list of restricted operations to iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:restriction")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the restriction operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Restriction " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the restriction operation.")
    })
    Response restrictionOperation(
            @ApiParam(name = "restrictionBeanWrapper",
                      value = "Restriction configurations and Device IDs.")
                    RestrictionBeanWrapper restrictionBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/wifi")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Adding Wi-Fi Operations",
            notes = "Add Wi-Fi operations on iOS devices via the REST API.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:wifi")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the Wi-Fi operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the WIFI operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.\n",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the Wi-Fi operation.")
    })
    Response configureWIFI(
            @ApiParam(name = "wifiBeanWrapper",
                      value = "Wi-Fi configurations and Device IDs.")
                    WIFIBeanWrapper wifiBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/ring")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Ringing iOS Devices",
            notes = "If you misplaced your iOS device and need to find out if its around, you can ring the device " +
                    "using this REST API.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:ring")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the ring operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the ring operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the Device ring operation.")
    })
    Response ringDevice(
            @ApiParam(name = "deviceIDs",
                      value = "List of Device IDs.")
                    List<String> deviceIDs);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/location")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Requesting the Location Coordinates",
            notes = "Request the location coordinates of iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:location")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the request location operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Fetch-Location " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the Location operation.")
    })
    Response fetchLocation(
            @ApiParam(name = "deviceIDs",
                      value = "List of Device IDs.")
                    List<String> deviceIDs);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/notification")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Sending Notifications",
            notes = "Notify iOS device users on important details or tasks via the REST API.\n" +
                    "Example: Notify the sales employees of an urgent meeting to revisit the sales strategy.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:notification")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully add the notification operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Lock operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the send notification operation.")
    })
    Response sendNotification(
            @ApiParam(name = "notificationBeanWrapper",
                      value = "Notification info and Device IDs.")
                    NotificationBeanWrapper notificationBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/airplay")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Adding AirPlay Operations",
            notes = "Add AirPlay operations on iOS devices. Using AirPlay you can stream music, photos, and videos to" +
                    " your Apple TV, or stream music to your AirPort Express or AirPlay-enabled speakers. For more " +
                    "information on AirPlay, see https://support.apple.com/en-lk/HT204289.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:airplay")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the AirPlay operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Air play operation" +
                                            "."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the AirPlay operation.")
    })
    Response addAirPlayOperation(
            @ApiParam(name = "airPlayBeanWrapper",
                      value = "AirPlay configurations and Device IDs.")
                    AirPlayBeanWrapper airPlayBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/caldav")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Configuring a CalDav Account",
            notes = "Configure a CalDav account on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:caldav")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully schedules the caldav operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the caldav operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the CalDav operation.")
    })
    Response addCalDAVOperation(
            @ApiParam(name = "calDAVWrapper",
                      value = "CalDav configurations and Device IDs.")
                    CalDAVWrapper calDAVWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/cal-subscription")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Subscribing to a CalDav Account",
            notes = "Subscribe to a CalDav account.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:cal-subscription")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the calender-subscription operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the cal-subscription " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the cal-subscription operation.")
    })
    Response addCalSubscriptionOperation(
            @ApiParam(name = "calendarSubscriptionWrapper",
                      value = "calendarSubscription configurations and Device IDs.")
                    CalendarSubscriptionWrapper calendarSubscriptionWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/passcode-policy")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Adding a Policy to a Passcode",
            notes = "Add a policy to the user’s passcode on an iOS device.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:passcode-policy")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the passcode policy operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Passcode policy " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the passcode policy operation.")
    })
    Response addPasscodePolicyOperation(
            @ApiParam(name = "passcodePolicyBeanWrapper",
                      value = "Passcode policy configurations and Device IDs.")
                    PasscodePolicyBeanWrapper passcodePolicyBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/webclip")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Creating a Web Clip",
            notes = "Create a web clip for iOS devices. A web clip is used to add a bookmark to a web application.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:webclip")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the webclip operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Webclip operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.\n",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported.\n"),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the webclip operation.")
    })
    Response addWebClipOperation(
            @ApiParam(name = "webClipBeanWrapper",
                      value = "WebClip related configurations and Device IDs.")
                    WebClipBeanWrapper webClipBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/vpn")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Setting Up a VPN",
            notes = "Set up a VPN on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:vpn")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the VPN operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the VPN operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported.\n"),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the VPN operation.")
    })
    Response addVPNOperation(
            @ApiParam(name = "vpnBeanWrapper",
                      value = "VPN configurations and Device IDs.")
                    VPNBeanWrapper vpnBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/per-app-vpn")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Configuring a VPN for applications",
            notes = "Configure a VPN on iOS device applications.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:per-app-vpn")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the perAppVPN operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Lock operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.\n",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the perAppVPN operation.")
    })
    Response addPerAppVPNOperation(
            @ApiParam(name = "perAppVPNBeanWrapper",
                      value = "perAppVPN configs and Device IDs.")
                    PerAppVPNBeanWrapper perAppVPNBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/app-to-per-app-vpn-mapping")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Mapping VPNs from application to application",
            notes = "Map the VPN of one application with another application.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:app-to-per-app-vpn")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the APPtoPerAppVPN operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the PerAppVPN " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.\n",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported.\n"),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the App-to-Per-App-VPN-mapping operation.")
    })
    Response addAppToPerAppVPNMappingOperation(
            @ApiParam(name = "appToPerAppVPNMappingBeanWrapper",
                      value = "App to per app VPN related configurations and Device IDs.")
                    AppToPerAppVPNMappingBeanWrapper appToPerAppVPNMappingBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/app-lock")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Add AppLock operation.",
            notes = "Adding AppLock operation",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:app-lock")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n AppLock operation has successfully been added.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the AppLock operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource has been modified the last time.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n Source can be retrieved from the URL specified at the Location header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The entity of the request was in a not supported format."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding a AppLock operation.")
    })
    Response addAppLockOperation(
            @ApiParam(name = "appLockBeanWrapper",
                      value = "AppLock Configuration information and Device Ids.")
                    AppLockBeanWrapper appLockBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/clear-passcode")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Clearing the Passcode",
            notes = "Clear the passcode of iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service.",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:clear-passcode")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the clear passcode operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Clear passcode " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the clear passcode operation.")
    })
    Response clearPasscode(
            @ApiParam(name = "deviceIDs",
                      value = "List of Device IDs.")
                    List<String> deviceIDs);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/remove-profile")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Removing a Profile",
            notes = "Remove a profile from the iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:remove-profile")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the lock operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the RemoveProfile " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while removing the profile.")
    })
    Response addRemoveProfileOperation(
            @ApiParam(name = "removeProfileBeanWrapper",
                      value = "removeProfile configurations and Device IDs")
                    RemoveProfileBeanWrapper removeProfileBeanWrapper);

    @POST
    @Produces({MediaType.APPLICATION_JSON})
    @Path("/installed-restrictions")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Getting Installed Restriction Information",
            notes = "Get the information of installed restrictions on iOS devices.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
                    @Extension(properties = {
                            @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:get-restrictions")
                    })
            }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the restriction operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the Restriction " +
                                            "operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.")}),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n The source can be retrieved from the URL specified in the location " +
                            "header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.")}),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the restriction operation.")
    })
    Response getRestrictions(
            @ApiParam(name = "installedRestrictionsBeanWrapper",
                      value = "installedRestrictions configuration and Device IDs.")
                    InstalledRestrictionsBeanWrapper installedRestrictionsBeanWrapper);

    @POST
    @Produces({ MediaType.APPLICATION_JSON })
    @Path("/wipe-data")
    @ApiOperation(
            produces = MediaType.APPLICATION_JSON,
            httpMethod = "POST",
            value = "Wiping a device",
            notes = "Factory resetting a device.",
            response = Activity.class,
            tags = "IOS Operation Management Service",
            extensions = {
            @Extension(properties = {
                    @ExtensionProperty(name = IOSConstants.SCOPE, value = "perm:ios:wipe-data")
            })
    }
    )
    @ApiResponses(value = {
            @ApiResponse(
                    code = 201,
                    message = "Created. \n Successfully added the wipe data operation.",
                    response = Activity.class,
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "URL of the activity instance that refers to the wipe data operation."),
                            @ResponseHeader(
                                    name = "Content-Type",
                                    description = "Content type of the body"),
                            @ResponseHeader(
                                    name = "ETag",
                                    description = "Entity Tag of the response resource.\n" +
                                            "Used by caches, or in conditional requests."),
                            @ResponseHeader(
                                    name = "Last-Modified",
                                    description = "Date and time the resource was last modified.\n" +
                                            "Used by caches, or in conditional requests.") }),
            @ApiResponse(
                    code = 303,
                    message = "See Other. \n Source can be retrieved from the URL specified at the Location header.",
                    responseHeaders = {
                            @ResponseHeader(
                                    name = "Content-Location",
                                    description = "The Source URL of the document.") }),
            @ApiResponse(
                    code = 400,
                    message = "Bad Request. \n Invalid request or validation error."),
            @ApiResponse(
                    code = 415,
                    message = "Unsupported media type. \n The format of the requested entity was not supported."),
            @ApiResponse(
                    code = 500,
                    message = "Internal Server Error. \n " +
                            "Server error occurred while adding the lock operation.")
    })
    Response wipeDevice(
            @ApiParam(name = "List of Device IDs.",
                    value = "deviceIDs")
                    List<String> deviceIDs);
}