package org.wfc.omada.api.hotspot;

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.hotspot.model.CreateVoucherGroupOpenApiVo;
import org.wfc.omada.api.hotspot.model.HotspotSiteSettingOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseAllTimeVoucherSummaryOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseCreatedResIdOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseCurrencyCandidatesOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseGridVoVoucherDurationDistributionOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseGridVoVoucherGroupOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseGridVoVoucherUnitPriceDistributionOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseListVoucherBriefOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseVoucherGroupGridOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseVoucherOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseVoucherStatisticsHistoryOpenApiVo;
import org.wfc.omada.api.hotspot.model.OperationResponseWithoutResult;
import org.wfc.omada.api.hotspot.model.SelectIdsOpenApiVo;
import org.wfc.omada.api.hotspot.model.SelectVoucherGroupOpenApiVo;

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

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

    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/hotspot/voucher-groups : Create a new Voucher Group
     * Create a Voucher Group with the given params.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-33732  -  The Rate Limit profile does not exist.&lt;br/&gt;-42010  -  The number of vouchers has reached the limit. New vouchers cannot be created.&lt;br/&gt;-42036  -  Please select at least one portal before creating vouchers.&lt;br/&gt;-42059  -  Duplicated voucher group name.&lt;br/&gt;-42060  -  Currency is not supported.&lt;br/&gt;-42061  -  You are creating voucher groups with different currency in same site, this will prevent collecting incoming amount of vouchers.&lt;br/&gt;-42062  -  One or more portals may not exist.&lt;br/&gt;-42063  -  The expiration time cannot exceed 1000 days.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param createVoucherGroupOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create a new Voucher Group", nickname = "createVoucherGroup", notes = "Create a Voucher Group with the given params.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-33732  -  The Rate Limit profile does not exist.<br/>-42010  -  The number of vouchers has reached the limit. New vouchers cannot be created.<br/>-42036  -  Please select at least one portal before creating vouchers.<br/>-42059  -  Duplicated voucher group name.<br/>-42060  -  Currency is not supported.<br/>-42061  -  You are creating voucher groups with different currency in same site, this will prevent collecting incoming amount of vouchers.<br/>-42062  -  One or more portals may not exist.<br/>-42063  -  The expiration time cannot exceed 1000 days.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseCreatedResIdOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseCreatedResIdOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/voucher-groups",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseCreatedResIdOpenApiVo> createVoucherGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) CreateVoucherGroupOpenApiVo createVoucherGroupOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/hotspot/voucher-groups/batch/delete : Delete selected Voucher Groups
     * Delete selected Voucher Groups with the given params.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param selectVoucherGroupOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete selected Voucher Groups", nickname = "deleteSelectedVoucherGroups", notes = "Delete selected Voucher Groups with the given params.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseWithoutResult.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/voucher-groups/batch/delete",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> deleteSelectedVoucherGroups(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SelectVoucherGroupOpenApiVo selectVoucherGroupOpenApiVo);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/hotspot/vouchers/{id} : Delete an existing voucher
     * Delete an existing voucher with the given params.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id Voucher ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete an existing voucher", nickname = "deleteVoucher", notes = "Delete an existing voucher with the given params.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseWithoutResult.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/vouchers/{id}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseWithoutResult> deleteVoucher(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Voucher ID",required=true) @PathVariable("id") String id);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/hotspot/voucher-groups/{groupId} : Delete an existing Voucher Group
     * Delete an existing Voucher Group with the given params.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param groupId Voucher Group ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete an existing Voucher Group", nickname = "deleteVoucherGroup", notes = "Delete an existing Voucher Group with the given params.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseWithoutResult.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/voucher-groups/{groupId}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseWithoutResult> deleteVoucherGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Voucher Group ID",required=true) @PathVariable("groupId") String groupId);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/hotspot/vouchers/batch/delete : Delete selected vouchers
     * Delete selected vouchers with the given params.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param selectIdsOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete selected vouchers", nickname = "deleteVouchers", notes = "Delete selected vouchers with the given params.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseVoucherOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoucherOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/vouchers/batch/delete",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseVoucherOpenApiVo> deleteVouchers(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SelectIdsOpenApiVo selectIdsOpenApiVo);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/hotspot/vouchers/statistics/summary : Get voucher summary
     * Get voucher summary of all time in the site.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get voucher summary", nickname = "getAllTimeVoucherSummary", notes = "Get voucher summary of all time in the site.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseAllTimeVoucherSummaryOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseAllTimeVoucherSummaryOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/vouchers/statistics/summary",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseAllTimeVoucherSummaryOpenApiVo> getAllTimeVoucherSummary(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/hotspot/voucher-groups : Get Voucher Group List
     * Get Voucher Group List with the given params.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @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)
     * @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 sortsCreateTime 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 filtersTimeStart Filter query parameters, support field time range: start timestamp (ms). (optional)
     * @param filtersTimeEnd Filter query parameters, support field time range: end timestamp (ms). (optional)
     * @param searchKey Fuzzy query parameters, support field name (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get Voucher Group List", nickname = "getGridVoucherGroups", notes = "Get Voucher Group List with the given params.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseGridVoVoucherGroupOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoVoucherGroupOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/voucher-groups",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoVoucherGroupOpenApiVo> getGridVoucherGroups(@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,@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 = "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.createTime", required = false) String sortsCreateTime,@ApiParam(value = "Filter query parameters, support field time range: start timestamp (ms).") @Valid @RequestParam(value = "filters.timeStart", required = false) Long filtersTimeStart,@ApiParam(value = "Filter query parameters, support field time range: end timestamp (ms).") @Valid @RequestParam(value = "filters.timeEnd", required = false) Long filtersTimeEnd,@ApiParam(value = "Fuzzy query parameters, support field name") @Valid @RequestParam(value = "searchKey", required = false) String searchKey);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/hotspot/vouchers/{id} : Get a voucher
     * Get a voucher with the given params.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param id Voucher ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get a voucher", nickname = "getVoucher", notes = "Get a voucher with the given params.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseVoucherOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoucherOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/vouchers/{id}",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseVoucherOpenApiVo> getVoucher(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Voucher ID",required=true) @PathVariable("id") String id);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/hotspot/voucher-groups/currency-list : Get voucher currency candidates
     * Get voucher currency candidates.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get voucher currency candidates", nickname = "getVoucherCurrencyCandidates", notes = "Get voucher currency candidates.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseCurrencyCandidatesOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseCurrencyCandidatesOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/voucher-groups/currency-list",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseCurrencyCandidatesOpenApiVo> getVoucherCurrencyCandidates(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/hotspot/vouchers/statistics/history/distribution/duration : Get voucher distribution by duration
     * Get voucher distribution by duration.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param filtersTimeStart Filter query parameters, support field time range: start timestamp (second). (required)
     * @param filtersTimeEnd Filter query parameters, support field time range: end timestamp (second). (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get voucher distribution by duration", nickname = "getVoucherDistributionByDuration", notes = "Get voucher distribution by duration.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseGridVoVoucherDurationDistributionOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoVoucherDurationDistributionOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/vouchers/statistics/history/distribution/duration",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoVoucherDurationDistributionOpenApiVo> getVoucherDistributionByDuration(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@NotNull @ApiParam(value = "Filter query parameters, support field time range: start timestamp (second).", required = true) @Valid @RequestParam(value = "filters.timeStart", required = true) Long filtersTimeStart,@NotNull @ApiParam(value = "Filter query parameters, support field time range: end timestamp (second).", required = true) @Valid @RequestParam(value = "filters.timeEnd", required = true) Long filtersTimeEnd);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/hotspot/vouchers/statistics/history/distribution/unit-price : Get voucher distribution by price
     * Get voucher distribution by price.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param filtersTimeStart Filter query parameters, support field time range: start timestamp (second). (required)
     * @param filtersTimeEnd Filter query parameters, support field time range: end timestamp (second). (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get voucher distribution by price", nickname = "getVoucherDistributionByPrice", notes = "Get voucher distribution by price.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseGridVoVoucherUnitPriceDistributionOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoVoucherUnitPriceDistributionOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/vouchers/statistics/history/distribution/unit-price",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoVoucherUnitPriceDistributionOpenApiVo> getVoucherDistributionByPrice(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@NotNull @ApiParam(value = "Filter query parameters, support field time range: start timestamp (second).", required = true) @Valid @RequestParam(value = "filters.timeStart", required = true) Long filtersTimeStart,@NotNull @ApiParam(value = "Filter query parameters, support field time range: end timestamp (second).", required = true) @Valid @RequestParam(value = "filters.timeEnd", required = true) Long filtersTimeEnd);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/hotspot/voucher-groups/{groupId} : Get Voucher Group Detail
     * Get Voucher Group Detail with the given params.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param groupId Voucher Group 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 sortsCode 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 filtersStatus Filter query parameters, support field status for vouchers in the voucher group: 0: unused vouchers, 1: in-use vouchers, 2: expired vouchers (optional)
     * @param searchKey Fuzzy query parameters, support field code (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get Voucher Group Detail", nickname = "getVoucherGroupDetail", notes = "Get Voucher Group Detail with the given params.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseVoucherGroupGridOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoucherGroupGridOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/voucher-groups/{groupId}",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseVoucherGroupGridOpenApiVo> getVoucherGroupDetail(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Voucher Group ID",required=true) @PathVariable("groupId") String groupId,@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.code", required = false) String sortsCode,@ApiParam(value = "Filter query parameters, support field status for vouchers in the voucher group: 0: unused vouchers, 1: in-use vouchers, 2: expired vouchers") @Valid @RequestParam(value = "filters.status", required = false) Long filtersStatus,@ApiParam(value = "Fuzzy query parameters, support field code") @Valid @RequestParam(value = "searchKey", required = false) String searchKey);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/hotspot/vouchers/statistics/history : Get voucher history statistics
     * Get voucher history statistics.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param filtersTimeStart Filter query parameters, support field time range: start timestamp (second). (required)
     * @param filtersTimeEnd Filter query parameters, support field time range: end timestamp (second). (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get voucher history statistics", nickname = "getVoucherHistoryStatistics", notes = "Get voucher history statistics.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseVoucherStatisticsHistoryOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoucherStatisticsHistoryOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/vouchers/statistics/history",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseVoucherStatisticsHistoryOpenApiVo> getVoucherHistoryStatistics(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@NotNull @ApiParam(value = "Filter query parameters, support field time range: start timestamp (second).", required = true) @Valid @RequestParam(value = "filters.timeStart", required = true) Long filtersTimeStart,@NotNull @ApiParam(value = "Filter query parameters, support field time range: end timestamp (second).", required = true) @Valid @RequestParam(value = "filters.timeEnd", required = true) Long filtersTimeEnd);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/hotspot/setting : Modify voucher currency
     * Modify voucher currency of the site.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param hotspotSiteSettingOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify voucher currency", nickname = "modifyHotspotSetting", notes = "Modify voucher currency of the site.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseWithoutResult.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/setting",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyHotspotSetting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) HotspotSiteSettingOpenApiVo hotspotSiteSettingOpenApiVo);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/hotspot/voucher-groups/batch/print-unused : Get unused vouchers in selected voucher groups
     * Get unused vouchers brief information in selected voucher groups.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param selectVoucherGroupOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get unused vouchers in selected voucher groups", nickname = "printSelectedVoucherGroups", notes = "Get unused vouchers brief information in selected voucher groups.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseListVoucherBriefOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListVoucherBriefOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/voucher-groups/batch/print-unused",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseListVoucherBriefOpenApiVo> printSelectedVoucherGroups(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SelectVoucherGroupOpenApiVo selectVoucherGroupOpenApiVo);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/hotspot/voucher-groups/{groupId}/print-unused : Get unused vouchers in voucher group
     * Get unused vouchers brief information in a voucher group.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param groupId Voucher Group ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get unused vouchers in voucher group", nickname = "printVoucherGroup", notes = "Get unused vouchers brief information in a voucher group.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseListVoucherBriefOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListVoucherBriefOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/voucher-groups/{groupId}/print-unused",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseListVoucherBriefOpenApiVo> printVoucherGroup(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Voucher Group ID",required=true) @PathVariable("groupId") String groupId);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/hotspot/vouchers/batch/print : Get selected vouchers in a voucher group
     * Get selected vouchers brief in a voucher group.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Hotspot 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;-33000  -  This site does not exist.&lt;br/&gt;-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.&lt;br/&gt;-44111  -  The Grant Type is Invalid.&lt;br/&gt;-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param selectIdsOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get selected vouchers in a voucher group", nickname = "printVouchers", notes = "Get selected vouchers brief in a voucher group.<br/><br/>The interface requires one of the permissions: <br/>Site Hotspot 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/>-33000  -  This site does not exist.<br/>-33004  -  Operation failed because other operations are being performed on this site. Please wait and try again later.<br/>-44111  -  The Grant Type is Invalid.<br/>-44112  -  The access token has expired. Please re-initiate the refreshToken process to obtain the access token.", response = OperationResponseListVoucherBriefOpenApiVo.class, tags={ "Omada/Voucher","Voucher", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListVoucherBriefOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/hotspot/vouchers/batch/print",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseListVoucherBriefOpenApiVo> printVouchers(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) SelectIdsOpenApiVo selectIdsOpenApiVo);

}
