package org.wfc.omada.api.device;

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.wfc.omada.config.FeignConfig;
import org.wfc.omada.api.device.model.GatewayGeneralConfig;
import org.wfc.omada.api.device.model.GatewayPortSettingConfig;
import org.wfc.omada.api.device.model.GatewayPortsConfigEntity;
import org.wfc.omada.api.device.model.OperationResponseGatewayGeneralConfig;
import org.wfc.omada.api.device.model.OperationResponseGatewayInfo;
import org.wfc.omada.api.device.model.OperationResponseGatewayPortSettingConfig;
import org.wfc.omada.api.device.model.OperationResponseGatewayPortsConfigEntity;
import org.wfc.omada.api.device.model.OperationResponseListGatewayWanStatusEntity;
import org.wfc.omada.api.device.model.OperationResponseListLanStatus;
import org.wfc.omada.api.device.model.OperationResponseOperationResponseWithoutResult;
import org.wfc.omada.api.device.model.OperationResponseWithoutResult;

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

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

    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/gateways/{gatewayMac}/multi-ports/config : Batch modify gateway port config
     * Batch modify gateway port config&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Device 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;-39501  -  This gateway does not exist.&lt;br/&gt;-39507  -  Gateway mirroring port reaches max limit.&lt;br/&gt;-39706  -  Please choose at least one port or LAG to be mirrored.&lt;br/&gt;-39718  -  Mirrored ports contain invalid port.
     *
     * @param siteId Site ID (required)
     * @param gatewayMac Gateway MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param omadacId  (required)
     * @param gatewayPortsConfigEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Batch modify gateway port config", nickname = "batchModifyPortConfig", notes = "Batch modify gateway port config<br/><br/>The interface requires one of the permissions: <br/>Site Device 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/>-39501  -  This gateway does not exist.<br/>-39507  -  Gateway mirroring port reaches max limit.<br/>-39706  -  Please choose at least one port or LAG to be mirrored.<br/>-39718  -  Mirrored ports contain invalid port.", response = OperationResponseGatewayPortsConfigEntity.class, tags={ "Omada/Gateway","Gateway", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGatewayPortsConfigEntity.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/gateways/{gatewayMac}/multi-ports/config",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseGatewayPortsConfigEntity> batchModifyPortConfig(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Gateway MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("gatewayMac") String gatewayMac,@ApiParam(value = "",required=true) @PathVariable("omadacId") String omadacId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) GatewayPortsConfigEntity gatewayPortsConfigEntity);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/gateways/{gatewayMac} : Get gateway info
     * Get gateway info&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Device 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;-39501  -  This gateway does not exist.&lt;br/&gt;-39507  -  Gateway mirroring port reaches max limit.&lt;br/&gt;-39706  -  Please choose at least one port or LAG to be mirrored.&lt;br/&gt;-39718  -  Mirrored ports contain invalid port.
     *
     * @param siteId Site ID (required)
     * @param gatewayMac Gateway MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param omadacId  (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get gateway info", nickname = "getGatewayInfo", notes = "Get gateway info<br/><br/>The interface requires one of the permissions: <br/>Site Device 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/>-39501  -  This gateway does not exist.<br/>-39507  -  Gateway mirroring port reaches max limit.<br/>-39706  -  Please choose at least one port or LAG to be mirrored.<br/>-39718  -  Mirrored ports contain invalid port.", response = OperationResponseGatewayInfo.class, tags={ "Omada/Gateway","Gateway", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGatewayInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/gateways/{gatewayMac}",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGatewayInfo> getGatewayInfo(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Gateway MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("gatewayMac") String gatewayMac,@ApiParam(value = "",required=true) @PathVariable("omadacId") String omadacId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/gateways/{gatewayMac}/general-config : Get gateway general config
     * Get gateway general config&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Device 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;-39501  -  This gateway does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param gatewayMac Gateway MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get gateway general config", nickname = "getGeneralConfig1", notes = "Get gateway general config<br/><br/>The interface requires one of the permissions: <br/>Site Device 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/>-39501  -  This gateway does not exist.", response = OperationResponseGatewayGeneralConfig.class, tags={ "Omada/Gateway","Gateway", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGatewayGeneralConfig.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/gateways/{gatewayMac}/general-config",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGatewayGeneralConfig> getGeneralConfig1(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Gateway MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("gatewayMac") String gatewayMac);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/gateways/{gatewayMac}/lan-status : Get gateway lan status
     * Get gateway lan status&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Dashboard 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;-39501  -  This gateway does not exist.
     *
     * @param siteId Site ID (required)
     * @param gatewayMac Gateway MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param omadacId  (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get gateway lan status", nickname = "getLanStatus", notes = "Get gateway lan status<br/><br/>The interface requires one of the permissions: <br/>Global Dashboard 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/>-39501  -  This gateway does not exist.", response = OperationResponseListLanStatus.class, tags={ "Omada/Gateway","Gateway", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListLanStatus.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/gateways/{gatewayMac}/lan-status",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseListLanStatus> getLanStatus(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Gateway MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("gatewayMac") String gatewayMac,@ApiParam(value = "",required=true) @PathVariable("omadacId") String omadacId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/gateways/{gatewayMac}/wan-status : Get gateway wan status
     * Get gateway wan status&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Global Dashboard 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;-39501  -  This gateway does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param gatewayMac Gateway MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get gateway wan status", nickname = "getWanStatus", notes = "Get gateway wan status<br/><br/>The interface requires one of the permissions: <br/>Global Dashboard 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/>-39501  -  This gateway does not exist.", response = OperationResponseListGatewayWanStatusEntity.class, tags={ "Omada/Gateway","Gateway", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListGatewayWanStatusEntity.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/gateways/{gatewayMac}/wan-status",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseListGatewayWanStatusEntity> getWanStatus(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Gateway MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("gatewayMac") String gatewayMac);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/gateways/{gatewayMac}/general-config : Modify gateway general config
     * Modify gateway general config&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Device 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;-39501  -  This gateway does not exist.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param gatewayMac Gateway MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param gatewayGeneralConfig  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify gateway general config", nickname = "modifyGeneralConfig1", notes = "Modify gateway general config<br/><br/>The interface requires one of the permissions: <br/>Site Device 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/>-39501  -  This gateway does not exist.", response = OperationResponseWithoutResult.class, tags={ "Omada/Gateway","Gateway", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/gateways/{gatewayMac}/general-config",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyGeneralConfig1(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Gateway MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("gatewayMac") String gatewayMac,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) GatewayGeneralConfig gatewayGeneralConfig);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/gateways/{gatewayMac}/ports/{port}/config : Modify gateway port config
     * Modify gateway port config&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Device 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;-39501  -  This gateway does not exist.&lt;br/&gt;-39507  -  Gateway mirroring port reaches max limit.&lt;br/&gt;-39706  -  Please choose at least one port or LAG to be mirrored.&lt;br/&gt;-39718  -  Mirrored ports contain invalid port.
     *
     * @param siteId Site ID (required)
     * @param gatewayMac Gateway MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param port Gateway port number (required)
     * @param omadacId  (required)
     * @param gatewayPortSettingConfig  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify gateway port config", nickname = "modifyPortConfig", notes = "Modify gateway port config<br/><br/>The interface requires one of the permissions: <br/>Site Device 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/>-39501  -  This gateway does not exist.<br/>-39507  -  Gateway mirroring port reaches max limit.<br/>-39706  -  Please choose at least one port or LAG to be mirrored.<br/>-39718  -  Mirrored ports contain invalid port.", response = OperationResponseGatewayPortSettingConfig.class, tags={ "Omada/Gateway","Gateway", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGatewayPortSettingConfig.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/gateways/{gatewayMac}/ports/{port}/config",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseGatewayPortSettingConfig> modifyPortConfig(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Gateway MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("gatewayMac") String gatewayMac,@ApiParam(value = "Gateway port number",required=true) @PathVariable("port") String port,@ApiParam(value = "",required=true) @PathVariable("omadacId") String omadacId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) GatewayPortSettingConfig gatewayPortSettingConfig);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/gateways/{gatewayMac}/ports/{port}/restart : Recovery gateway poe port
     * Recovery gateway poe port&lt;br/&gt;&lt;br/&gt;The interface requires one of the permissions: &lt;br/&gt;Site Device 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;-39501  -  This gateway does not exist.&lt;br/&gt;-39508  -  The current gateway model or firmware version does not support poe restart.
     *
     * @param siteId Site ID (required)
     * @param gatewayMac Gateway MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param port Gateway port number (required)
     * @param omadacId  (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Recovery gateway poe port", nickname = "recoveryPoePort", notes = "Recovery gateway poe port<br/><br/>The interface requires one of the permissions: <br/>Site Device 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/>-39501  -  This gateway does not exist.<br/>-39508  -  The current gateway model or firmware version does not support poe restart.", response = OperationResponseOperationResponseWithoutResult.class, tags={ "Omada/Gateway","Gateway", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseOperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/gateways/{gatewayMac}/ports/{port}/restart",
        produces = "*/*", 
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseOperationResponseWithoutResult> recoveryPoePort(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Gateway MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("gatewayMac") String gatewayMac,@ApiParam(value = "Gateway port number",required=true) @PathVariable("port") String port,@ApiParam(value = "",required=true) @PathVariable("omadacId") String omadacId);

}
