package org.wfc.omada.api.msp;

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.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.msp.model.OperationResponseGridVoMspKnownDeviceOpenApiVo;
import org.wfc.omada.api.msp.model.OperationResponseGridVoMspUnknownDeviceOpenApiVo;
import org.wfc.omada.api.msp.model.OperationResponseListTagRespOpenApiVo;

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

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

    /**
     * GET /openapi/v1/msp/{mspId}/devices/known-devices : Get MSP known device list
     * Get MSP known device list&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;MSP Device Manager View Only
     *
     * @param mspId MSP 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 searchMacs Fuzzy query parameters, support field mac (optional)
     * @param searchNames Fuzzy query parameters, support field name (optional)
     * @param searchModels Fuzzy query parameters, support field model (optional)
     * @param searchSns Fuzzy query parameters, support field sn (optional)
     * @param filtersTag Filter query parameters, support field tag ID (optional)
     * @param filtersDeviceSeriesType Filter query parameters, support field Device series type. 0: basic; 1: pro. (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get MSP known device list", nickname = "getMspKnownDeviceList", notes = "Get MSP known device list<br/><br/>The interface requires one of the permissions: <br/>MSP Device Manager View Only", response = OperationResponseGridVoMspKnownDeviceOpenApiVo.class, tags={ "Omada/MSP Device","MSP Device", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoMspKnownDeviceOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/msp/{mspId}/devices/known-devices",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoMspKnownDeviceOpenApiVo> getMspKnownDeviceList(@ApiParam(value = "MSP ID",required=true) @PathVariable("mspId") String mspId,@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 = "Fuzzy query parameters, support field mac") @Valid @RequestParam(value = "searchMacs", required = false) String searchMacs,@ApiParam(value = "Fuzzy query parameters, support field name") @Valid @RequestParam(value = "searchNames", required = false) String searchNames,@ApiParam(value = "Fuzzy query parameters, support field model") @Valid @RequestParam(value = "searchModels", required = false) String searchModels,@ApiParam(value = "Fuzzy query parameters, support field sn") @Valid @RequestParam(value = "searchSns", required = false) String searchSns,@ApiParam(value = "Filter query parameters, support field tag ID") @Valid @RequestParam(value = "filters.tag", required = false) String filtersTag,@ApiParam(value = "Filter query parameters, support field Device series type. 0: basic; 1: pro.") @Valid @RequestParam(value = "filters.deviceSeriesType", required = false) String filtersDeviceSeriesType);


    /**
     * GET /openapi/v1/msp/{mspId}/devices/unknown-devices : Get MSP unknown device list
     * Get MSP unknown device list&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;MSP Device Manager View Only
     *
     * @param mspId MSP 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 searchMacs Fuzzy query parameters, support field mac (optional)
     * @param searchNames Fuzzy query parameters, support field name (optional)
     * @param searchModels Fuzzy query parameters, support field model (optional)
     * @param filtersDeviceSeriesType Filter query parameters, support field Device series type. 0: basic; 1: pro. (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get MSP unknown device list", nickname = "getMspUnknownDeviceList", notes = "Get MSP unknown device list<br/><br/>The interface requires one of the permissions: <br/>MSP Device Manager View Only", response = OperationResponseGridVoMspUnknownDeviceOpenApiVo.class, tags={ "Omada/MSP Device","MSP Device", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoMspUnknownDeviceOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/msp/{mspId}/devices/unknown-devices",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoMspUnknownDeviceOpenApiVo> getMspUnknownDeviceList(@ApiParam(value = "MSP ID",required=true) @PathVariable("mspId") String mspId,@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 = "Fuzzy query parameters, support field mac") @Valid @RequestParam(value = "searchMacs", required = false) String searchMacs,@ApiParam(value = "Fuzzy query parameters, support field name") @Valid @RequestParam(value = "searchNames", required = false) String searchNames,@ApiParam(value = "Fuzzy query parameters, support field model") @Valid @RequestParam(value = "searchModels", required = false) String searchModels,@ApiParam(value = "Filter query parameters, support field Device series type. 0: basic; 1: pro.") @Valid @RequestParam(value = "filters.deviceSeriesType", required = false) String filtersDeviceSeriesType);


    /**
     * GET /openapi/v1/msp/{mspId}/devices/tag : Get tag list
     * Get tag list.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Device Manager View Only&lt;br/&gt;MSP Device Manager View Only&lt;br/&gt;Site Map Manager View Only
     *
     * @param mspId MSP ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get tag list", nickname = "getTags1", notes = "Get tag list.<br/><br/>The interface requires one of the permissions: <br/>Site Device Manager View Only<br/>MSP Device Manager View Only<br/>Site Map Manager View Only", response = OperationResponseListTagRespOpenApiVo.class, tags={ "Omada/MSP Device","MSP Device", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListTagRespOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/msp/{mspId}/devices/tag",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseListTagRespOpenApiVo> getTags1(@ApiParam(value = "MSP ID",required=true) @PathVariable("mspId") String mspId);

}
