package org.wfc.omada.api.sitesetting;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.wfc.omada.config.FeignConfig;
import org.wfc.omada.api.sitesetting.model.OperationResponseResIdOpenApiVo;
import org.wfc.omada.api.sitesetting.model.OperationResponseUrlCategoryOpenApiVo;
import org.wfc.omada.api.sitesetting.model.OperationResponseUrlFilterGlobalOpenApiVo;
import org.wfc.omada.api.sitesetting.model.OperationResponseUrlFilteringOpenApiGridVoQueryUrlFilteringOpenApiVo;
import org.wfc.omada.api.sitesetting.model.OperationResponseWithoutResult;
import org.wfc.omada.api.sitesetting.model.UrlDragSortIndexOpenapiVo;
import org.wfc.omada.api.sitesetting.model.UrlFilterGlobalOpenApiVo;
import org.wfc.omada.api.sitesetting.model.UrlFilteringOpenApiVo;

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

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

    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/url-filters : Create URL filtering rule
     * Create URL filtering rule.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param urlFilteringOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create URL filtering rule", nickname = "createUrlFilteringRule", notes = "Create URL filtering rule.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseResIdOpenApiVo.class, tags={ "Omada/URL Filtering","URL Filtering", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseResIdOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/url-filters",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseResIdOpenApiVo> createUrlFilteringRule(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) UrlFilteringOpenApiVo urlFilteringOpenApiVo);


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


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/url-filters/category : Get Category
     * Get Category.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager View Only
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get Category", nickname = "getCategory", notes = "Get Category.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseUrlCategoryOpenApiVo.class, tags={ "Omada/URL Filtering","URL Filtering", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseUrlCategoryOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/url-filters/category",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseUrlCategoryOpenApiVo> getCategory(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


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


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


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/url-filters/globalUrlFilter : Get Content Filter Global
     * Get Content Filter Global.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager View Only
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get Content Filter Global", nickname = "getUrlFilterGeneral", notes = "Get Content Filter Global.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseUrlFilterGlobalOpenApiVo.class, tags={ "Omada/URL Filtering","URL Filtering", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseUrlFilterGlobalOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/url-filters/globalUrlFilter",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseUrlFilterGlobalOpenApiVo> getUrlFilterGeneral(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/url-filters/globalUrlFilter : Edit Content Filter Global
     * Edit Content Filter Global.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param urlFilterGlobalOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Edit Content Filter Global", nickname = "modifyUrlFilterGeneral", notes = "Edit Content Filter Global.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/URL Filtering","URL Filtering", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/url-filters/globalUrlFilter",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyUrlFilterGeneral(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) UrlFilterGlobalOpenApiVo urlFilterGlobalOpenApiVo);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/url-filters/{ruleId} : Modify URL filtering rule
     * Modify URL filtering rule.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param ruleId URL filtering rule ID (required)
     * @param urlFilteringOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify URL filtering rule", nickname = "modifyUrlFilteringRule", notes = "Modify URL filtering rule.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/URL Filtering","URL Filtering", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/url-filters/{ruleId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyUrlFilteringRule(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "URL filtering rule ID",required=true) @PathVariable("ruleId") String ruleId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) UrlFilteringOpenApiVo urlFilteringOpenApiVo);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/url-filters : Modify URL filtering rule index
     * Modify URL filtering rule index.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param urlDragSortIndexOpenapiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify URL filtering rule index", nickname = "modifyUrlFilteringRuleIndex", notes = "Modify URL filtering rule index.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/URL Filtering","URL Filtering", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/url-filters",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyUrlFilteringRuleIndex(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) UrlDragSortIndexOpenapiVo urlDragSortIndexOpenapiVo);

}
