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.BatchSelectIpMacBindingId;
import org.wfc.omada.api.sitesetting.model.IpMacBinding;
import org.wfc.omada.api.sitesetting.model.IpMacBindingGeneralSetting;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoipMacBinding;
import org.wfc.omada.api.sitesetting.model.OperationResponseIpMacBindingGeneralSetting;
import org.wfc.omada.api.sitesetting.model.OperationResponseWithoutResult;

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

    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/ip-mac-binds/batch-delete : Batch delete IP-MAC bindings
     * Batch delete IP-MAC bindings.&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 batchSelectIpMacBindingId  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Batch delete IP-MAC bindings", nickname = "batchDeleteIpMacBindings", notes = "Batch delete IP-MAC bindings.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/IP-MAC Binding","IP-MAC Binding", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/ip-mac-binds/batch-delete",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> batchDeleteIpMacBindings(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BatchSelectIpMacBindingId batchSelectIpMacBindingId);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/ip-mac-binds : Create IP-MAC binding
     * Create IP-MAC binding.&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 ipMacBinding  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create IP-MAC binding", nickname = "createIpMacBinding", notes = "Create IP-MAC binding.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/IP-MAC Binding","IP-MAC Binding", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/ip-mac-binds",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> createIpMacBinding(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) IpMacBinding ipMacBinding);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/ip-mac-binds/{bindId} : Delete IP-MAC binding
     * Delete IP-MAC binding.&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 bindId IP MAC binding ID (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete IP-MAC binding", nickname = "deleteIpMacBinding", notes = "Delete IP-MAC binding.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/IP-MAC Binding","IP-MAC Binding", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/ip-mac-binds/{bindId}",
        produces = "*/*", 
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseWithoutResult> deleteIpMacBinding(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "IP MAC binding ID",required=true) @PathVariable("bindId") String bindId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/ip-mac-binds : Get IP-MAC binding list
     * Get IP-MAC binding 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 IP-MAC binding list", nickname = "getGridIpMacBinding", notes = "Get IP-MAC binding list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoipMacBinding.class, tags={ "Omada/IP-MAC Binding","IP-MAC Binding", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoipMacBinding.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/ip-mac-binds",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoipMacBinding> getGridIpMacBinding(@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}/ip-mac-bind : Get IP-MAC binding general setting
     * Get IP-MAC binding general setting.&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 IP-MAC binding general setting", nickname = "getIpMacBindingGeneralSetting", notes = "Get IP-MAC binding general setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseIpMacBindingGeneralSetting.class, tags={ "Omada/IP-MAC Binding","IP-MAC Binding", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseIpMacBindingGeneralSetting.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/ip-mac-bind",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseIpMacBindingGeneralSetting> getIpMacBindingGeneralSetting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/ip-mac-binds/{bindId} : Modify IP-MAC binding
     * Modify IP-MAC binding.&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 bindId IP MAC binding ID (required)
     * @param ipMacBinding  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify IP-MAC binding", nickname = "modifyIpMacBinding", notes = "Modify IP-MAC binding.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/IP-MAC Binding","IP-MAC Binding", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/ip-mac-binds/{bindId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyIpMacBinding(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "IP MAC binding ID",required=true) @PathVariable("bindId") String bindId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) IpMacBinding ipMacBinding);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/ip-mac-bind : Modify IP-MAC binding general setting
     * Modify IP-MAC binding general setting.&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 ipMacBindingGeneralSetting  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify IP-MAC binding general setting", nickname = "modifyIpMacBindingGeneralSetting", notes = "Modify IP-MAC binding general setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/IP-MAC Binding","IP-MAC Binding", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/ip-mac-bind",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyIpMacBindingGeneralSetting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) IpMacBindingGeneralSetting ipMacBindingGeneralSetting);

}
