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.OperationResponseGridVoPolicyRoutingInfo;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoStaticRoutingInfo;
import org.wfc.omada.api.sitesetting.model.OperationResponseStaticRoutingInterfaceResult;
import org.wfc.omada.api.sitesetting.model.OperationResponseWithoutResult;
import org.wfc.omada.api.sitesetting.model.PolicyRoutingConfig;
import org.wfc.omada.api.sitesetting.model.PolicyRoutingDragSortIndexOpenApiVo;
import org.wfc.omada.api.sitesetting.model.StaticRoutingConfig;

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

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


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


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


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


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/routing/policy-routings : Get policy routing list
     * Get policy routing 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 policy routing list", nickname = "getGridPolicyRouting", notes = "Get policy routing list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoPolicyRoutingInfo.class, tags={ "Omada/Routing","Routing", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoPolicyRoutingInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/routing/policy-routings",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoPolicyRoutingInfo> getGridPolicyRouting(@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}/routing/static-routings : Get static routing list
     * Get static routing 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 static routing list", nickname = "getGridStaticRouting", notes = "Get static routing list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoStaticRoutingInfo.class, tags={ "Omada/Routing","Routing", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoStaticRoutingInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/routing/static-routings",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoStaticRoutingInfo> getGridStaticRouting(@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}/routing/static-routings/interfaces : Get static routing interface list
     * Get static routing interface 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)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get static routing interface list", nickname = "getStaticRoutingInterfaceList", notes = "Get static routing interface list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseStaticRoutingInterfaceResult.class, tags={ "Omada/Routing","Routing", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseStaticRoutingInterfaceResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/routing/static-routings/interfaces",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseStaticRoutingInterfaceResult> getStaticRoutingInterfaceList(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * PUT /openapi/v1/{omadacId}/sites/{siteId}/routing/policy-routings/{policyRoutingId} : Modify policy routing
     * Modify policy routing.&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 policyRoutingId  (required)
     * @param policyRoutingConfig  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify policy routing", nickname = "modifyPolicyRouting", notes = "Modify policy routing.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/Routing","Routing", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/routing/policy-routings/{policyRoutingId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PUT)
    ResponseEntity<OperationResponseWithoutResult> modifyPolicyRouting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "",required=true) @PathVariable("policyRoutingId") String policyRoutingId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) PolicyRoutingConfig policyRoutingConfig);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/routing/policy-routings/modifyIndex : Modify policy routing Index
     * Modify policy routing  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 policyRoutingDragSortIndexOpenApiVo  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify policy routing Index", nickname = "modifyPolicyRoutingIndex", notes = "Modify policy routing  Index.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/Routing","Routing", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/routing/policy-routings/modifyIndex",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> modifyPolicyRoutingIndex(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) PolicyRoutingDragSortIndexOpenApiVo policyRoutingDragSortIndexOpenApiVo);


    /**
     * PUT /openapi/v1/{omadacId}/sites/{siteId}/routing/static-routings/{staticRoutingId} : Modify static routing
     * Modify static routing.&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 staticRoutingId  (required)
     * @param staticRoutingConfig  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify static routing", nickname = "modifyStaticRouting", notes = "Modify static routing.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/Routing","Routing", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/routing/static-routings/{staticRoutingId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PUT)
    ResponseEntity<OperationResponseWithoutResult> modifyStaticRouting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "",required=true) @PathVariable("staticRoutingId") String staticRoutingId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) StaticRoutingConfig staticRoutingConfig);

}
