package org.wfc.omada.api.organization;

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.organization.model.BatchBindDeviceOpenApiVo;
import org.wfc.omada.api.organization.model.BatchBindDeviceResultOpenApiVo;
import org.wfc.omada.api.organization.model.BatchCopySiteTemplateOpenApiVo;
import org.wfc.omada.api.organization.model.BatchSyncSitesOpenApiVo;
import org.wfc.omada.api.organization.model.BatchUnbindSites;
import org.wfc.omada.api.organization.model.BindSiteOpenApiVo;
import org.wfc.omada.api.organization.model.CopySiteResultVo;
import org.wfc.omada.api.organization.model.CopySiteTemplateOpenApiVo;
import org.wfc.omada.api.organization.model.CreateSiteTemplateEntity;
import org.wfc.omada.api.organization.model.OperationResponseBatchBindDeviceResultOpenApiVo;
import org.wfc.omada.api.organization.model.OperationResponseBindSiteBriefOpenApiVo;
import org.wfc.omada.api.organization.model.OperationResponseCopySiteTemplateOpenApiResultVo;
import org.wfc.omada.api.organization.model.OperationResponseGridVoDeviceBindOpenApiVo;
import org.wfc.omada.api.organization.model.OperationResponseGridVoDeviceTemplateBriefOpenApiVo;
import org.wfc.omada.api.organization.model.OperationResponseGridVoSiteTemplateSummaryVo;
import org.wfc.omada.api.organization.model.OperationResponseObject;
import org.wfc.omada.api.organization.model.OperationResponseSiteTemplateBriefOpenApiVo;
import org.wfc.omada.api.organization.model.OperationResponseSiteTemplateModulesOpenApiVo;
import org.wfc.omada.api.organization.model.OperationResponseWithoutResult;
import org.wfc.omada.api.organization.model.UpdateSiteByTemplate;

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

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

    /**
     * POST /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId}/multi-sites/sync : Batch sync site settings with the site template
     * Batch sync site settings with the site template.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-33009  -  This site template does not exist.&lt;br/&gt;-44418  -  Failed to sync this site with the site template due to unexpected errors.&lt;br/&gt;-44423  -  You can sync site configurations with the site template for up to 30 sites at a time.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param batchSyncSitesOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Batch sync site settings with the site template", nickname = "batchSyncSiteWithTemplate", notes = "Batch sync site settings with the site template.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-33009  -  This site template does not exist.<br/>-44418  -  Failed to sync this site with the site template due to unexpected errors.<br/>-44423  -  You can sync site configurations with the site template for up to 30 sites at a time.", response = OperationResponseWithoutResult.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/multi-sites/sync",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> batchSyncSiteWithTemplate(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BatchSyncSitesOpenApiVo batchSyncSitesOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId}/bind-site : Bind site with a site template
     * Bind site with a site template.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-33009  -  This site template does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param bindSiteOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Bind site with a site template", nickname = "bindSiteTemplate", notes = "Bind site with a site template.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-33009  -  This site template does not exist.", response = OperationResponseWithoutResult.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/bind-site",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> bindSiteTemplate(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BindSiteOpenApiVo bindSiteOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId}/copy : Create Site Template by copying exist site template
     * Create Site Template by copying exist site template.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param copySiteTemplateOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create Site Template by copying exist site template", nickname = "copySiteTemplate", notes = "Create Site Template by copying exist site template.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template Manager Modify", response = CopySiteResultVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = CopySiteResultVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/copy",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<CopySiteResultVo> copySiteTemplate(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) CopySiteTemplateOpenApiVo copySiteTemplateOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId}/copy/batch : Copy site template to customers
     * Copy the site template to one or more customers (whose site templates the current user has permission to modify). Up to 10 customers can be operated at the same time.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param batchCopySiteTemplateOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Copy site template to customers", nickname = "copySiteTemplateToCustomers", notes = "Copy the site template to one or more customers (whose site templates the current user has permission to modify). Up to 10 customers can be operated at the same time.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template Manager Modify", response = OperationResponseCopySiteTemplateOpenApiResultVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseCopySiteTemplateOpenApiResultVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/copy/batch",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseCopySiteTemplateOpenApiResultVo> copySiteTemplateToCustomers(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BatchCopySiteTemplateOpenApiVo batchCopySiteTemplateOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sitetemplates : Create new site template
     * Create new site template&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-33104  -  The number of sites has reached the limit.&lt;br/&gt;-44430  -  This name already exists. Please enter another name for this site template.
     *
     * @param omadacId Omada ID (required)
     * @param createSiteTemplateEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create new site template", nickname = "createNewSiteTemplate", notes = "Create new site template<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-33104  -  The number of sites has reached the limit.<br/>-44430  -  This name already exists. Please enter another name for this site template.", response = OperationResponseObject.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseObject> createNewSiteTemplate(@ApiParam(value = ""  )  @Valid @RequestBody(required = false) CreateSiteTemplateEntity createSiteTemplateEntity);


    /**
     * DELETE /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId} : Delete an existing site template
     * Delete an existing site template&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-33009  -  This site template does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete an existing site template", nickname = "deleteSiteTemplate", notes = "Delete an existing site template<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-33009  -  This site template does not exist.", response = OperationResponseWithoutResult.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseWithoutResult> deleteSiteTemplate(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId);


    /**
     * POST /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/batch-binddevice : Device template batch bind devices
     * Device template batch bind devices.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-1001  -  Invalid request parameters.&lt;br/&gt;-44402  -  Device template does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param deviceTemplateId Device Template ID (required)
     * @param batchBindDeviceOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Device template batch bind devices", nickname = "deviceTemplateBindDeviceBatch", notes = "Device template batch bind devices.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-1001  -  Invalid request parameters.<br/>-44402  -  Device template does not exist.", response = OperationResponseBatchBindDeviceResultOpenApiVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseBatchBindDeviceResultOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/batch-binddevice",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseBatchBindDeviceResultOpenApiVo> deviceTemplateBindDeviceBatch(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = "Device Template ID",required=true) @PathVariable("deviceTemplateId") String deviceTemplateId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BatchBindDeviceOpenApiVo batchBindDeviceOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/batch-sync-config : Device template batch sync config to devices
     * Device template batch sync config to devices.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-1001  -  Invalid request parameters.&lt;br/&gt;-44402  -  Device template does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param deviceTemplateId Device Template ID (required)
     * @param batchBindDeviceOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Device template batch sync config to devices", nickname = "deviceTemplateSyncConfigBatch", notes = "Device template batch sync config to devices.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-1001  -  Invalid request parameters.<br/>-44402  -  Device template does not exist.", response = BatchBindDeviceResultOpenApiVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = BatchBindDeviceResultOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/batch-sync-config",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<BatchBindDeviceResultOpenApiVo> deviceTemplateSyncConfigBatch(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = "Device Template ID",required=true) @PathVariable("deviceTemplateId") String deviceTemplateId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BatchBindDeviceOpenApiVo batchBindDeviceOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/batch-unbinddevice : Device template batch unbind devices
     * Device template batch unbind devices.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-1001  -  Invalid request parameters.&lt;br/&gt;-44402  -  Device template does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param deviceTemplateId Device Template ID (required)
     * @param batchBindDeviceOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Device template batch unbind devices", nickname = "deviceTemplateUnbindDeviceBatch", notes = "Device template batch unbind devices.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-1001  -  Invalid request parameters.<br/>-44402  -  Device template does not exist.", response = BatchBindDeviceResultOpenApiVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = BatchBindDeviceResultOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/batch-unbinddevice",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<BatchBindDeviceResultOpenApiVo> deviceTemplateUnbindDeviceBatch(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = "Device Template ID",required=true) @PathVariable("deviceTemplateId") String deviceTemplateId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BatchBindDeviceOpenApiVo batchBindDeviceOpenApiVo);


    /**
     * GET /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId}/binding-sites : Get sites info which bound to the site template
     * Get sites info which bound to the site template.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-33009  -  This site template does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template 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 sites info which bound to the site template", nickname = "getBoundSites", notes = "Get sites info which bound to the site template.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-33009  -  This site template does not exist.", response = OperationResponseBindSiteBriefOpenApiVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseBindSiteBriefOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/binding-sites",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseBindSiteBriefOpenApiVo> getBoundSites(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@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}/sitetemplates/{siteTemplateId}/devicetemplates : Get deviceTemplate info list
     * Get deviceTemplate info list.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template Manager View Only
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template 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 deviceTemplate info list", nickname = "getGridDeviceTemplate", notes = "Get deviceTemplate info list.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template Manager View Only", response = OperationResponseGridVoDeviceTemplateBriefOpenApiVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoDeviceTemplateBriefOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/devicetemplates",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoDeviceTemplateBriefOpenApiVo> getGridDeviceTemplate(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@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}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/available-bind-devices : Get deviceTemplate&#39;s available devices
     * Get deviceTemplate&#39;s available devices.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template Manager View Only
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param deviceTemplateId Device Template 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 deviceTemplate's available devices", nickname = "getGridDeviceTemplateAvailableDevices", notes = "Get deviceTemplate's available devices.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template Manager View Only", response = OperationResponseGridVoDeviceBindOpenApiVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoDeviceBindOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/available-bind-devices",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoDeviceBindOpenApiVo> getGridDeviceTemplateAvailableDevices(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = "Device Template ID",required=true) @PathVariable("deviceTemplateId") String deviceTemplateId,@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}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/bound-devices : Get deviceTemplate&#39;s bound devices
     * Get deviceTemplate&#39;s bound devices.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template Manager View Only
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param deviceTemplateId Device Template 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 deviceTemplate's bound devices", nickname = "getGridDeviceTemplateBoundDevices", notes = "Get deviceTemplate's bound devices.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template Manager View Only", response = OperationResponseGridVoDeviceBindOpenApiVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoDeviceBindOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/devicetemplates/{deviceTemplateId}/bound-devices",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoDeviceBindOpenApiVo> getGridDeviceTemplateBoundDevices(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = "Device Template ID",required=true) @PathVariable("deviceTemplateId") String deviceTemplateId,@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}/sitetemplates/{siteTemplateId} : Get site template info
     * Get site template info&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-33009  -  This site template does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get site template info", nickname = "getSiteTemplateEntity", notes = "Get site template info<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-33009  -  This site template does not exist.", response = OperationResponseSiteTemplateBriefOpenApiVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseSiteTemplateBriefOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseSiteTemplateBriefOpenApiVo> getSiteTemplateEntity(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId);


    /**
     * GET /openapi/v1/{omadacId}/sitetemplates : Get site template list
     * Get site template list&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template Manager View Only
     *
     * @param omadacId Omada 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)
     * @param sortsName Sort parameter may be one of asc or desc. Optional parameter. If it is not carried, it means it is not sorted by this field. When there are more than one, the first one takes effect (optional)
     * @param searchKey Fuzzy query parameters, support field name (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get site template list", nickname = "getSiteTemplateList", notes = "Get site template list<br/><br/>The interface requires one of the permissions: <br/>Global Site Template Manager View Only", response = OperationResponseGridVoSiteTemplateSummaryVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoSiteTemplateSummaryVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoSiteTemplateSummaryVo> getSiteTemplateList(@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,@ApiParam(value = "Sort parameter may be one of asc or desc. Optional parameter. If it is not carried, it means it is not sorted by this field. When there are more than one, the first one takes effect") @Valid @RequestParam(value = "sorts.name", required = false) String sortsName,@ApiParam(value = "Fuzzy query parameters, support field name") @Valid @RequestParam(value = "searchKey", required = false) String searchKey);


    /**
     * GET /openapi/v1/{omadacId}/sitetemplates/modules : Get function modules which can be selected when creating site template
     * Get function modules which can be selected when creating site template.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get function modules which can be selected when creating site template", nickname = "getSiteTemplateModules", notes = "Get function modules which can be selected when creating site template.<br/><br/>The interface requires one of the permissions: <br/>Global Site Template Manager Modify", response = OperationResponseSiteTemplateModulesOpenApiVo.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseSiteTemplateModulesOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/modules",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseSiteTemplateModulesOpenApiVo> getSiteTemplateModules(@ApiParam(value = "Omada ID",required=true) @PathVariable("omadacId") String omadacId);


    /**
     * POST /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId}/batch-unbind : Batch unbind sites from a site template
     * Batch unbind sites from a site template.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Dashboard Manager Modify&lt;br/&gt;Global Site Template 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;-33009  -  This site template does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param batchUnbindSites  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Batch unbind sites from a site template", nickname = "unbindSite", notes = "Batch unbind sites from a site template.<br/><br/>The interface requires one of the permissions: <br/>Global Dashboard Manager Modify<br/>Global Site Template 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/>-33009  -  This site template does not exist.", response = OperationResponseWithoutResult.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}/batch-unbind",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> unbindSite(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BatchUnbindSites batchUnbindSites);


    /**
     * PUT /openapi/v1/{omadacId}/sitetemplates/{siteTemplateId} : Modify an existing site template
     * Modify an existing site template&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Site Template 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;-33009  -  This site template does not exist.&lt;br/&gt;-44430  -  This name already exists. Please enter another name for this site template.
     *
     * @param omadacId Omada ID (required)
     * @param siteTemplateId Site Template ID (required)
     * @param updateSiteByTemplate  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify an existing site template", nickname = "updateSiteTemplateEntity", notes = "Modify an existing site template<br/><br/>The interface requires one of the permissions: <br/>Global Site Template 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/>-33009  -  This site template does not exist.<br/>-44430  -  This name already exists. Please enter another name for this site template.", response = OperationResponseWithoutResult.class, tags={ "Omada/Site Template","Site Template", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sitetemplates/{siteTemplateId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PUT)
    ResponseEntity<OperationResponseWithoutResult> updateSiteTemplateEntity(@ApiParam(value = "Site Template ID",required=true) @PathVariable("siteTemplateId") String siteTemplateId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) UpdateSiteByTemplate updateSiteByTemplate);

}
