package org.wfc.omada.api.sitesetting;

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 org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.wfc.omada.config.FeignConfig;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoSslVpnResourceEntity;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoSslVpnResourceGroup;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoSslVpnUserGroupEntity;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVosslVpnLockEntity;
import org.wfc.omada.api.sitesetting.model.OperationResponseSslVpnServerSetting;
import org.wfc.omada.api.sitesetting.model.OperationResponseSslVpnUserOpenApiGridVoSslVpnUserEntity;
import org.wfc.omada.api.sitesetting.model.OperationResponseWithoutResult;
import org.wfc.omada.api.sitesetting.model.SslVpnLockConfigOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnLockModifyOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnResourceConfigOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnResourceGroupConfigOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnResourceGroupModifyOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnResourceModifyOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnServerConfigOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnUserConfigOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnUserGroupConfigOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnUserGroupModifyOpenApiVo;
import org.wfc.omada.api.sitesetting.model.SslVpnUserModifyOpenApiVo;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:31:51.978+08:00[Asia/Shanghai]")

@Validated
@Api(value = "OmadaSslVpn", description = "the OmadaSslVpn API")
@FeignClient(name="OmadaSslVpnApi", url = "${omada.omada-url}", configuration = FeignConfig.class)
public interface OmadaSslVpnApi {

    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/locked-users : Create SSL VPN locked user
     * Create SSL VPN locked user.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-43007  -  IP already exists.&lt;br/&gt;-43009  -  Username already exists.&lt;br/&gt;-43013  -  The number of locks has reached the limit.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param sslVpnLockConfigOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create SSL VPN locked user", nickname = "createLockedSslVpnUser", notes = "Create SSL VPN locked user.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-43007  -  IP already exists.<br/>-43009  -  Username already exists.<br/>-43013  -  The number of locks has reached the limit.", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/locked-users",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> createLockedSslVpnUser(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnLockConfigOpenApiVo sslVpnLockConfigOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/resources : Create SSL VPN resource
     * Create SSL VPN tunnel resource.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-33006  -  This name already exists in this site.&lt;br/&gt;-43004  -  The number of resources has reached the limit.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param sslVpnResourceConfigOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create SSL VPN resource", nickname = "createSslVpnResource", notes = "Create SSL VPN tunnel resource.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-33006  -  This name already exists in this site.<br/>-43004  -  The number of resources has reached the limit.", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/resources",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> createSslVpnResource(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnResourceConfigOpenApiVo sslVpnResourceConfigOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/resource-groups : Create SSL VPN resource group
     * Create SSL VPN tunnel resource group.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-33006  -  This name already exists in this site.&lt;br/&gt;-43005  -  The number of resource groups has reached the limit.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param sslVpnResourceGroupConfigOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create SSL VPN resource group", nickname = "createSslVpnResourceGroup", notes = "Create SSL VPN tunnel resource group.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-33006  -  This name already exists in this site.<br/>-43005  -  The number of resource groups has reached the limit.", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/resource-groups",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> createSslVpnResourceGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnResourceGroupConfigOpenApiVo sslVpnResourceGroupConfigOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/users : Create SSL VPN user
     * Create SSL VPN user .&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-33006  -  This name already exists in this site.&lt;br/&gt;-43002  -  The number of users has reached the limit.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param sslVpnUserConfigOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create SSL VPN user", nickname = "createSslVpnUser", notes = "Create SSL VPN user .<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-33006  -  This name already exists in this site.<br/>-43002  -  The number of users has reached the limit.", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/users",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> createSslVpnUser(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnUserConfigOpenApiVo sslVpnUserConfigOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/user-groups : Create SSL VPN user group
     * Create SSL VPN user group.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-33006  -  This name already exists in this site.&lt;br/&gt;-43003  -  The number of user groups has reached the limit.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param sslVpnUserGroupConfigOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create SSL VPN user group", nickname = "createSslVpnUserGroup", notes = "Create SSL VPN user group.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-33006  -  This name already exists in this site.<br/>-43003  -  The number of user groups has reached the limit.", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/user-groups",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> createSslVpnUserGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnUserGroupConfigOpenApiVo sslVpnUserGroupConfigOpenApiVo);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/locked-users/{id} : Delete SSL VPN locked user
     * Delete SSL VPN locked user.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id Locked user ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete SSL VPN locked user", nickname = "deleteLockedSslVpnUser", notes = "Delete SSL VPN locked user.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/locked-users/{id}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseWithoutResult> deleteLockedSslVpnUser(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Locked user ID",required=true) @PathVariable("id") String id);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/resources/{id} : Delete SSL VPN resource
     * Delete SSL VPN tunnel resource.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id Resource ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete SSL VPN resource", nickname = "deleteSslVpnResource", notes = "Delete SSL VPN tunnel resource.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/resources/{id}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseWithoutResult> deleteSslVpnResource(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Resource ID",required=true) @PathVariable("id") String id);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/resource-groups/{id} : Delete SSL VPN resource group
     * Delete SSL VPN tunnel resource group.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id Resource group ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete SSL VPN resource group", nickname = "deleteSslVpnResourceGroup", notes = "Delete SSL VPN tunnel resource group.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/resource-groups/{id}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseWithoutResult> deleteSslVpnResourceGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Resource group ID",required=true) @PathVariable("id") String id);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/users/{id} : Delete SSL VPN user
     * Delete SSL VPN user.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id User ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete SSL VPN user", nickname = "deleteSslVpnUser", notes = "Delete SSL VPN user.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/users/{id}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseWithoutResult> deleteSslVpnUser(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "User ID",required=true) @PathVariable("id") String id);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/user-groups/{id} : Delete SSL VPN user group
     * Delete SSL VPN user group.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-43015  -  Failed to delete this group because it is used for radius authentication in SSL VPN server.&lt;br/&gt;-43016  -  Failed to delete this group because it is used for LDAP authentication in SSL VPN server.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id User group ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete SSL VPN user group", nickname = "deleteSslVpnUserGroup", notes = "Delete SSL VPN user group.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-43015  -  Failed to delete this group because it is used for radius authentication in SSL VPN server.<br/>-43016  -  Failed to delete this group because it is used for LDAP authentication in SSL VPN server.", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/user-groups/{id}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseWithoutResult> deleteSslVpnUserGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "User group ID",required=true) @PathVariable("id") String id);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/locked-users : Get locked user list for SSL VPN server
     * Get locked user list for SSL VPN server.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager View Only&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-43008  -  The current gateway model or firmware version does not support SSL VPN configuration.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param page Start page number. Start from 1. (required)
     * @param pageSize Number of entries per page. It should be within the range of 1–1000. (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get locked user list for SSL VPN server", nickname = "getGridLockedSslVpnServerUser", notes = "Get locked user list for SSL VPN server.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-43008  -  The current gateway model or firmware version does not support SSL VPN configuration.", response = OperationResponseGridVosslVpnLockEntity.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVosslVpnLockEntity.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/locked-users",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVosslVpnLockEntity> getGridLockedSslVpnServerUser(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@NotNull @ApiParam(value = "Start page number. Start from 1.", required = true) @Valid @RequestParam(value = "page", required = true) Integer page,@NotNull @ApiParam(value = "Number of entries per page. It should be within the range of 1–1000.", required = true) @Valid @RequestParam(value = "pageSize", required = true) Integer pageSize);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/resources : Get resource list for SSL VPN server
     * Get resource list for SSL VPN server.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager View Only
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param page Start page number. Start from 1. (required)
     * @param pageSize Number of entries per page. It should be within the range of 1–1000. (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get resource list for SSL VPN server", nickname = "getGridSslVpnServerResource", notes = "Get resource list for SSL VPN server.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoSslVpnResourceEntity.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoSslVpnResourceEntity.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/resources",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoSslVpnResourceEntity> getGridSslVpnServerResource(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@NotNull @ApiParam(value = "Start page number. Start from 1.", required = true) @Valid @RequestParam(value = "page", required = true) Integer page,@NotNull @ApiParam(value = "Number of entries per page. It should be within the range of 1–1000.", required = true) @Valid @RequestParam(value = "pageSize", required = true) Integer pageSize);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/resource-groups : Get resource group list for SSL VPN server
     * Get resource group list for SSL VPN server.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager View Only
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param page Start page number. Start from 1. (required)
     * @param pageSize Number of entries per page. It should be within the range of 1–1000. (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get resource group list for SSL VPN server", nickname = "getGridSslVpnServerResourceGroup", notes = "Get resource group list for SSL VPN server.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoSslVpnResourceGroup.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoSslVpnResourceGroup.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/resource-groups",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoSslVpnResourceGroup> getGridSslVpnServerResourceGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@NotNull @ApiParam(value = "Start page number. Start from 1.", required = true) @Valid @RequestParam(value = "page", required = true) Integer page,@NotNull @ApiParam(value = "Number of entries per page. It should be within the range of 1–1000.", required = true) @Valid @RequestParam(value = "pageSize", required = true) Integer pageSize);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/users : Get user list for SSL VPN server
     * Get user list for SSL VPN server.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager View Only
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param page Start page number. Start from 1. (required)
     * @param pageSize Number of entries per page. It should be within the range of 1–1000. (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get user list for SSL VPN server", nickname = "getGridSslVpnServerUser", notes = "Get user list for SSL VPN server.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseSslVpnUserOpenApiGridVoSslVpnUserEntity.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseSslVpnUserOpenApiGridVoSslVpnUserEntity.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/users",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseSslVpnUserOpenApiGridVoSslVpnUserEntity> getGridSslVpnServerUser(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@NotNull @ApiParam(value = "Start page number. Start from 1.", required = true) @Valid @RequestParam(value = "page", required = true) Integer page,@NotNull @ApiParam(value = "Number of entries per page. It should be within the range of 1–1000.", required = true) @Valid @RequestParam(value = "pageSize", required = true) Integer pageSize);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/user-groups : Get user group list for SSL VPN server
     * Get user group list for SSL VPN server.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager View Only
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param page Start page number. Start from 1. (required)
     * @param pageSize Number of entries per page. It should be within the range of 1–1000. (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get user group list for SSL VPN server", nickname = "getGridSslVpnServerUserGroup", notes = "Get user group list for SSL VPN server.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoSslVpnUserGroupEntity.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoSslVpnUserGroupEntity.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/user-groups",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoSslVpnUserGroupEntity> getGridSslVpnServerUserGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@NotNull @ApiParam(value = "Start page number. Start from 1.", required = true) @Valid @RequestParam(value = "page", required = true) Integer page,@NotNull @ApiParam(value = "Number of entries per page. It should be within the range of 1–1000.", required = true) @Valid @RequestParam(value = "pageSize", required = true) Integer pageSize);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/setting : Get SSL VPN server setting
     * Get SSL VPN server setting.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager View Only&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-43008  -  The current gateway model or firmware version does not support SSL VPN configuration.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get SSL VPN server setting", nickname = "getSslVpnServerSetting", notes = "Get SSL VPN server setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-43008  -  The current gateway model or firmware version does not support SSL VPN configuration.", response = OperationResponseSslVpnServerSetting.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseSslVpnServerSetting.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/setting",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseSslVpnServerSetting> getSslVpnServerSetting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * PUT /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/locked-users/{id} : Modify SSL VPN locked user
     * Modify SSL VPN locked user.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-43007  -  IP already exists.&lt;br/&gt;-43009  -  Username already exists.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id Locked user ID (required)
     * @param sslVpnLockModifyOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify SSL VPN locked user", nickname = "modifyLockedSslVpnUser", notes = "Modify SSL VPN locked user.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-43007  -  IP already exists.<br/>-43009  -  Username already exists.", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/locked-users/{id}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PUT)
    ResponseEntity<OperationResponseWithoutResult> modifyLockedSslVpnUser(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Locked user ID",required=true) @PathVariable("id") String id,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnLockModifyOpenApiVo sslVpnLockModifyOpenApiVo);


    /**
     * PUT /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/resources/{id} : Modify SSL VPN resource
     * Modify SSL VPN tunnel resource.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id Resource ID (required)
     * @param sslVpnResourceModifyOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify SSL VPN resource", nickname = "modifySslVpnResource", notes = "Modify SSL VPN tunnel resource.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/resources/{id}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PUT)
    ResponseEntity<OperationResponseWithoutResult> modifySslVpnResource(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Resource ID",required=true) @PathVariable("id") String id,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnResourceModifyOpenApiVo sslVpnResourceModifyOpenApiVo);


    /**
     * PUT /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/resource-groups/{id} : Modify SSL VPN resource group
     * Modify SSL VPN tunnel resource group.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id Resource group ID (required)
     * @param sslVpnResourceGroupModifyOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify SSL VPN resource group", nickname = "modifySslVpnResourceGroup", notes = "Modify SSL VPN tunnel resource group.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/resource-groups/{id}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PUT)
    ResponseEntity<OperationResponseWithoutResult> modifySslVpnResourceGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Resource group ID",required=true) @PathVariable("id") String id,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnResourceGroupModifyOpenApiVo sslVpnResourceGroupModifyOpenApiVo);


    /**
     * PUT /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/setting : Modify SSL VPN server setting
     * Get SSL VPN server setting.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-34032  -  Built-in radius server not started.&lt;br/&gt;-43008  -  The current gateway model or firmware version does not support SSL VPN configuration.&lt;br/&gt;-43010  -  The IP addresses in SSL VPN IP pool cannot overlap with other VPN IP pools on the same site.&lt;br/&gt;-43011  -  The service port cannot be the same as that of the OpenVPN server.&lt;br/&gt;-43017  -  The device does not support configuring radius type.&lt;br/&gt;-43018  -  The device does not support configuring LDAP type.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param sslVpnServerConfigOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify SSL VPN server setting", nickname = "modifySslVpnServerSetting", notes = "Get SSL VPN server setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-34032  -  Built-in radius server not started.<br/>-43008  -  The current gateway model or firmware version does not support SSL VPN configuration.<br/>-43010  -  The IP addresses in SSL VPN IP pool cannot overlap with other VPN IP pools on the same site.<br/>-43011  -  The service port cannot be the same as that of the OpenVPN server.<br/>-43017  -  The device does not support configuring radius type.<br/>-43018  -  The device does not support configuring LDAP type.", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/setting",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PUT)
    ResponseEntity<OperationResponseWithoutResult> modifySslVpnServerSetting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnServerConfigOpenApiVo sslVpnServerConfigOpenApiVo);


    /**
     * PUT /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/users/{id} : Modify SSL VPN user
     * Modify SSL VPN user.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id User ID (required)
     * @param sslVpnUserModifyOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify SSL VPN user", nickname = "modifySslVpnUser", notes = "Modify SSL VPN user.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/users/{id}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PUT)
    ResponseEntity<OperationResponseWithoutResult> modifySslVpnUser(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "User ID",required=true) @PathVariable("id") String id,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnUserModifyOpenApiVo sslVpnUserModifyOpenApiVo);


    /**
     * PUT /openapi/v1/{omadacId}/sites/{siteId}/vpn/ssl-vpn-server/user-groups/{id} : Modify SSL VPN user group
     * Modify SSL VPN user group.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id User group ID (required)
     * @param sslVpnUserGroupModifyOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify SSL VPN user group", nickname = "modifySslVpnUserGroup", notes = "Modify SSL VPN user group.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/SSL VPN","SSL VPN", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/vpn/ssl-vpn-server/user-groups/{id}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PUT)
    ResponseEntity<OperationResponseWithoutResult> modifySslVpnUserGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "User group ID",required=true) @PathVariable("id") String id,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SslVpnUserGroupModifyOpenApiVo sslVpnUserGroupModifyOpenApiVo);

}
