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.IpsInfo;
import org.wfc.omada.api.sitesetting.model.IpsSignatureConfig;
import org.wfc.omada.api.sitesetting.model.ModifyIpsAllowListEntry;
import org.wfc.omada.api.sitesetting.model.NewIpsAllowListEntry;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoIpsBlockListEntry;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoIpsSignatureInfo;
import org.wfc.omada.api.sitesetting.model.OperationResponseIpsInfo;
import org.wfc.omada.api.sitesetting.model.OperationResponseObject;

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 = "OmadaIdsIps", description = "the OmadaIdsIps API")
@FeignClient(name="OmadaIdsIpsApi", url = "${omada.omada-url}", configuration = FeignConfig.class)
public interface OmadaIdsIpsApi {

    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips/allow-list : Create new allow list
     * Create new allow list.&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Settings Manager Modify&lt;br/&gt;&lt;br/&gt;The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): &lt;br/&gt;-35202  -  The number of allow list entries has reached the limit.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param newIpsAllowListEntry  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create new allow list", nickname = "createAllowList", notes = "Create new allow list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify<br/><br/>The possible error code for the interface in the returned body is one of the following error codes (non generic error codes): <br/>-35202  -  The number of allow list entries has reached the limit.", response = OperationResponseObject.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips/allow-list",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseObject> createAllowList(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) NewIpsAllowListEntry newIpsAllowListEntry);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips/allow-list/{entryId} : Delete allow list
     * Delete allow List by entry id.&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 entryId Allow entry ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete allow list", nickname = "deleteAllowList", notes = "Delete allow List by entry id.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseObject.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips/allow-list/{entryId}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseObject> deleteAllowList(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Allow entry ID",required=true) @PathVariable("entryId") String entryId);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips/block-list/{entryId} : Delete block list
     * Delete block list by entry id.&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 entryId Block entry ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete block list", nickname = "deleteBlockList", notes = "Delete block list by entry id.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseObject.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips/block-list/{entryId}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseObject> deleteBlockList(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Block entry ID",required=true) @PathVariable("entryId") String entryId);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips/signature/{signId} : Delete signature
     * Delete signature&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 signId Unique Signature ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete signature", nickname = "deleteSignature", notes = "Delete signature<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseObject.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips/signature/{signId}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseObject> deleteSignature(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Unique Signature ID",required=true) @PathVariable("signId") String signId);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips/allow-list : Edit allow list
     * Modify an allow list entry.&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 modifyIpsAllowListEntry  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Edit allow list", nickname = "editAllowList", notes = "Modify an allow list entry.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseObject.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips/allow-list",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseObject> editAllowList(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) ModifyIpsAllowListEntry modifyIpsAllowListEntry);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips/grid/allow-list : Get grid ips allow list
     * Obtain grid allow list.&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)
     * @param searchKey Fuzzy query parameters, support field IP / Subnet (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get grid ips allow list", nickname = "getGridAllowList", notes = "Obtain grid allow list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseObject.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips/grid/allow-list",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseObject> getGridAllowList(@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 = "Fuzzy query parameters, support field IP / Subnet") @Valid @RequestParam(value = "searchKey", required = false) String searchKey);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips/grid/block-list : Get grid IPS block list
     * Obtain the grid IPS block list.&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)
     * @param searchKey Fuzzy query parameters, support field Name/Source Ip/Destination (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get grid IPS block list", nickname = "getGridBlockList", notes = "Obtain the grid IPS block list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoIpsBlockListEntry.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoIpsBlockListEntry.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips/grid/block-list",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoIpsBlockListEntry> getGridBlockList(@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 = "Fuzzy query parameters, support field Name/Source Ip/Destination") @Valid @RequestParam(value = "searchKey", required = false) String searchKey);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips/signature : Get signature list
     * Get signature list&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 signature list", nickname = "getGridSignature", notes = "Get signature list<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoIpsSignatureInfo.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoIpsSignatureInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips/signature",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoIpsSignatureInfo> getGridSignature(@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}/network-security/ips : Get site IDS/IPS config
     * Get site IDS/IPS config&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 site IDS/IPS config", nickname = "getIpsConfig", notes = "Get site IDS/IPS config<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseIpsInfo.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseIpsInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseIpsInfo> getIpsConfig(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips : Modify site IDS/IPS config
     * Modify site IDS/IPS config&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 ipsInfo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify site IDS/IPS config", nickname = "modifyIpsConfig", notes = "Modify site IDS/IPS config<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseObject.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseObject> modifyIpsConfig(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) IpsInfo ipsInfo);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/network-security/ips/signature/{signId} : Modify signature
     * Modify signature&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 signId Unique Signature ID (required)
     * @param ipsSignatureConfig  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify signature", nickname = "modifySignature", notes = "Modify signature<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseObject.class, tags={ "Omada/IDS/IPS","IDS/IPS", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/network-security/ips/signature/{signId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseObject> modifySignature(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Unique Signature ID",required=true) @PathVariable("signId") String signId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) IpsSignatureConfig ipsSignatureConfig);

}
