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.BatchModifyVoipDeviceSettingEntity;
import org.wfc.omada.api.sitesetting.model.BindNumberList;
import org.wfc.omada.api.sitesetting.model.ConfirmBindedDevicesEntity;
import org.wfc.omada.api.sitesetting.model.CreateCallBlockingProfileEntity;
import org.wfc.omada.api.sitesetting.model.CreateDigitMapProfileEntity;
import org.wfc.omada.api.sitesetting.model.CreateProviderProfileEntity;
import org.wfc.omada.api.sitesetting.model.DeleteCallBlockingProfileEntity;
import org.wfc.omada.api.sitesetting.model.DeleteCallForwardingRules;
import org.wfc.omada.api.sitesetting.model.DeleteDigitMapProfileEntity;
import org.wfc.omada.api.sitesetting.model.DeleteTelephoneNumber;
import org.wfc.omada.api.sitesetting.model.DndSettingEntity;
import org.wfc.omada.api.sitesetting.model.ModifyCallBlockingProfileEntity;
import org.wfc.omada.api.sitesetting.model.ModifyDigitMapProfileEntity;
import org.wfc.omada.api.sitesetting.model.ModifyProviderProfileEntity;
import org.wfc.omada.api.sitesetting.model.ModifyVoipDeviceApSettingEntity;
import org.wfc.omada.api.sitesetting.model.ModifyVoipDeviceOsgSettingEntity;
import org.wfc.omada.api.sitesetting.model.OperationResponseAddCallForwardingRuleResp;
import org.wfc.omada.api.sitesetting.model.OperationResponseCallForwardingRulesGrid;
import org.wfc.omada.api.sitesetting.model.OperationResponseCallLogGridVoVoipCallLog;
import org.wfc.omada.api.sitesetting.model.OperationResponseDndSettingEntity;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoDeviceTelephoneNumber;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoProviderProfileEntity;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoVoiceMail;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoVoipDevice;
import org.wfc.omada.api.sitesetting.model.OperationResponseGridVoVoipTelephoneBookSetting;
import org.wfc.omada.api.sitesetting.model.OperationResponseListCallBlockingProfileEntity;
import org.wfc.omada.api.sitesetting.model.OperationResponseListDigitMapProfileInfo;
import org.wfc.omada.api.sitesetting.model.OperationResponseListProfilesBindedDeviceInfo;
import org.wfc.omada.api.sitesetting.model.OperationResponseListSimplifiedCallBlockingProfile;
import org.wfc.omada.api.sitesetting.model.OperationResponseListSimplifiedDigitMapProfile;
import org.wfc.omada.api.sitesetting.model.OperationResponseModifyConfirmResultOpenApiVo;
import org.wfc.omada.api.sitesetting.model.OperationResponseNumberRegistrationResult;
import org.wfc.omada.api.sitesetting.model.OperationResponseObject;
import org.wfc.omada.api.sitesetting.model.OperationResponseUsbInfoListResponse;
import org.wfc.omada.api.sitesetting.model.OperationResponseVoiceMailSettingResponse;
import org.wfc.omada.api.sitesetting.model.OperationResponseVoid;
import org.wfc.omada.api.sitesetting.model.OperationResponseVoipCallLogEnableSetting;
import org.wfc.omada.api.sitesetting.model.OperationResponseVoipEmergencyNumberSetting;
import org.wfc.omada.api.sitesetting.model.OperationResponseWithoutResult;
import org.wfc.omada.api.sitesetting.model.VoiceMailBatchDelete;
import org.wfc.omada.api.sitesetting.model.VoiceMailSettingRequest;
import org.wfc.omada.api.sitesetting.model.VoipCallLogEnableSetting;
import org.wfc.omada.api.sitesetting.model.VoipContactPersonSettings;
import org.wfc.omada.api.sitesetting.model.VoipEmergencyNumberSetting;
import org.wfc.omada.api.sitesetting.model.VoipTelephoneBookBatchSetting;

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

    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/call-forwarding : Add call forwarding rules
     * Add call forwarding rules&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 body  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Add call forwarding rules", nickname = "addCallForwardingRule", notes = "Add call forwarding rules<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseAddCallForwardingRuleResp.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseAddCallForwardingRuleResp.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/call-forwarding",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseAddCallForwardingRuleResp> addCallForwardingRule(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) Object body);


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


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voip-devices/batch-modify : Batch Modify Voip Device Setting
     * Batch modify VoIP device 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 batchModifyVoipDeviceSettingEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Batch Modify Voip Device Setting", nickname = "batchModifyVoipDeviceSetting", notes = "Batch modify VoIP device setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseListProfilesBindedDeviceInfo.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListProfilesBindedDeviceInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices/batch-modify",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseListProfilesBindedDeviceInfo> batchModifyVoipDeviceSetting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BatchModifyVoipDeviceSettingEntity batchModifyVoipDeviceSettingEntity);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voip-devices/{deviceMac}/bind-telephone-number : Bind Telephone Number
     * Bind Telephone Number.&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 deviceMac Device MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param bindNumberList  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Bind Telephone Number", nickname = "bindTelephoneNumber", notes = "Bind Telephone Number.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices/{deviceMac}/bind-telephone-number",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> bindTelephoneNumber(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Device MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("deviceMac") String deviceMac,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) BindNumberList bindNumberList);


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


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


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


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


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/voip/telephone-book : Create New Contact Person
     * Create New Contact Person.&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;-35615  -  The number of Telephone book has reached the limit.&lt;br/&gt;-35616  -  The contact person&#39;s number combination already exists.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param voipContactPersonSettings  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Create New Contact Person", nickname = "createVoipTelephoneBook", notes = "Create New Contact Person.<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/>-35615  -  The number of Telephone book has reached the limit.<br/>-35616  -  The contact person's number combination already exists.", response = OperationResponseWithoutResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/voip/telephone-book",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> createVoipTelephoneBook(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) VoipContactPersonSettings voipContactPersonSettings);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/call-blocking/delete : Delete call blocking profile
     * Delete call blocking profile.&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 deleteCallBlockingProfileEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete call blocking profile", nickname = "deleteCallBlockingProfile", notes = "Delete call blocking profile.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseListProfilesBindedDeviceInfo.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListProfilesBindedDeviceInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/call-blocking/delete",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseListProfilesBindedDeviceInfo> deleteCallBlockingProfile(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) DeleteCallBlockingProfileEntity deleteCallBlockingProfileEntity);


    /**
     * DELETE /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/call-forwarding : Delete call forwarding rules
     * Delete call forwarding rules&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 deleteCallForwardingRules  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete call forwarding rules", nickname = "deleteCallForwardingRule", notes = "Delete call forwarding rules<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseVoid.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoid.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/call-forwarding",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.DELETE)
    ResponseEntity<OperationResponseVoid> deleteCallForwardingRule(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) DeleteCallForwardingRules deleteCallForwardingRules);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/digit-map/delete : Delete digit map profile
     * Delete digit map profile.&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 deleteDigitMapProfileEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete digit map profile", nickname = "deleteDigitMapProfile", notes = "Delete digit map profile.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseListProfilesBindedDeviceInfo.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListProfilesBindedDeviceInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/digit-map/delete",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseListProfilesBindedDeviceInfo> deleteDigitMapProfile(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) DeleteDigitMapProfileEntity deleteDigitMapProfileEntity);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/provider-profiles/delete : Delete provider profile(s)
     * Delete provider profile(s).&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 confirmBindedDevicesEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete provider profile(s)", nickname = "deleteProviderProfiles", notes = "Delete provider profile(s).<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseListProfilesBindedDeviceInfo.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListProfilesBindedDeviceInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/provider-profiles/delete",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseListProfilesBindedDeviceInfo> deleteProviderProfiles(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) ConfirmBindedDevicesEntity confirmBindedDevicesEntity);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voip-devices/{deviceMac}/telephone-number/{phoneNumberId} : Delete Telephone Number
     * Delete Telephone Number.&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 deviceMac Device MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param phoneNumberId phone Number ID (required)
     * @param deleteTelephoneNumber  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Delete Telephone Number", nickname = "deleteTelephoneNumber", notes = "Delete Telephone Number.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices/{deviceMac}/telephone-number/{phoneNumberId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> deleteTelephoneNumber(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Device MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("deviceMac") String deviceMac,@ApiParam(value = "phone Number ID",required=true) @PathVariable("phoneNumberId") String phoneNumberId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) DeleteTelephoneNumber deleteTelephoneNumber);


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


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


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


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voip-devices/call-blocking : Get All Call Blocking Profiles
     * Get All Call Blocking Profiles.&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 All Call Blocking Profiles", nickname = "getAllCallBlockingProfiles", notes = "Get All Call Blocking Profiles.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseListSimplifiedCallBlockingProfile.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListSimplifiedCallBlockingProfile.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices/call-blocking",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseListSimplifiedCallBlockingProfile> getAllCallBlockingProfiles(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voip-devices/digit-map : Get All Digit Map Profiles
     * Get All Digit Map Profiles.&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 All Digit Map Profiles", nickname = "getAllDigitMapProfiles", notes = "Get All Digit Map Profiles.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseListSimplifiedDigitMapProfile.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListSimplifiedDigitMapProfile.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices/digit-map",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseListSimplifiedDigitMapProfile> getAllDigitMapProfiles(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/call-blocking : Get call blocking profile list
     * Get call blocking profile 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 call blocking profile list", nickname = "getCallBlockingProfiles", notes = "Get call blocking profile list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseListCallBlockingProfileEntity.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListCallBlockingProfileEntity.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/call-blocking",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseListCallBlockingProfileEntity> getCallBlockingProfiles(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/call-forwarding/grid : Get call forwarding rules
     * Get call forwarding rules&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 call forwarding rules", nickname = "getCallForwardingRulesGrid", notes = "Get call forwarding rules<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseCallForwardingRulesGrid.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseCallForwardingRulesGrid.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/call-forwarding/grid",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseCallForwardingRulesGrid> getCallForwardingRulesGrid(@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}/setting/voip/digit-map : Get digit map profile list
     * Get digit map profile 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 digit map profile list", nickname = "getDigitMapProfiles", notes = "Get digit map profile list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseListDigitMapProfileInfo.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseListDigitMapProfileInfo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/digit-map",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseListDigitMapProfileInfo> getDigitMapProfiles(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/dnd/settings : Get DND settings
     * Get DND settings&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 DND settings", nickname = "getDndSettings", notes = "Get DND settings<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseDndSettingEntity.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseDndSettingEntity.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/dnd/settings",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseDndSettingEntity> getDndSettings(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/grid/provider-profiles : Get the grid of provider profile list
     * Get the grid of provider profile 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 the grid of provider profile list", nickname = "getGridProviderProfileList", notes = "Get the grid of provider profile list.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoProviderProfileEntity.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoProviderProfileEntity.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/grid/provider-profiles",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoProviderProfileEntity> getGridProviderProfileList(@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}/setting/voip/voip-devices/grid/telephone-number : Get Grid of Telephone Number Registration Results
     * Get Grid of Telephone Number Registration Results.&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 Grid of Telephone Number Registration Results", nickname = "getGridTelephoneNumberRegistrationResults", notes = "Get Grid of Telephone Number Registration Results.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoDeviceTelephoneNumber.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoDeviceTelephoneNumber.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices/grid/telephone-number",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoDeviceTelephoneNumber> getGridTelephoneNumberRegistrationResults(@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}/setting/voip/voice-mail/{voiceId}/download : Get voice mail
     * Get voice mail&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 voiceId  (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get voice mail", nickname = "getSiteDeviceAccountSetting", notes = "Get voice mail<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseObject.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseObject.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voice-mail/{voiceId}/download",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseObject> getSiteDeviceAccountSetting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "",required=true) @PathVariable("voiceId") String voiceId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voip-devices/{deviceMac}/registration-result : Get Telephone Number Registration Results
     * Get Telephone Number Registration Results.&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 deviceMac Device MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get Telephone Number Registration Results", nickname = "getTelephoneNumberRegistrationResults", notes = "Get Telephone Number Registration Results.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseNumberRegistrationResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseNumberRegistrationResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices/{deviceMac}/registration-result",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseNumberRegistrationResult> getTelephoneNumberRegistrationResults(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Device MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("deviceMac") String deviceMac);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voice-mail/settings/usbInfo : Get USB info
     * Get USB info&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 USB info", nickname = "getUsbInfo", notes = "Get USB info<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseUsbInfoListResponse.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseUsbInfoListResponse.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voice-mail/settings/usbInfo",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseUsbInfoListResponse> getUsbInfo(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/voip/call-log : Get Voip CallLog Data List
     * Get Voip CallLog Data 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 sortsDateTime Sort parameter may be one of asc or desc. Optional parameter. If it is not carried, it means it is not sorted by this field. When there are more than one, the first one takes effect (optional)
     * @param filtersStatus Filter query parameters, support field status: 0: incoming, 1: outgoing, 3: transfer, 4: miss，5: rejected (optional)
     * @param searchKey Fuzzy query parameters, support field deviceNumber/telephonyDevice (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Get Voip CallLog Data List", nickname = "getVoipCallLog", notes = "Get Voip CallLog Data List.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseCallLogGridVoVoipCallLog.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseCallLogGridVoVoipCallLog.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/voip/call-log",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseCallLogGridVoVoipCallLog> getVoipCallLog(@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 = "Sort parameter may be one of asc or desc. Optional parameter. If it is not carried, it means it is not sorted by this field. When there are more than one, the first one takes effect") @Valid @RequestParam(value = "sorts.dateTime", required = false) String sortsDateTime,@ApiParam(value = "Filter query parameters, support field status: 0: incoming, 1: outgoing, 3: transfer, 4: miss，5: rejected") @Valid @RequestParam(value = "filters.status", required = false) String filtersStatus,@ApiParam(value = "Fuzzy query parameters, support field deviceNumber/telephonyDevice") @Valid @RequestParam(value = "searchKey", required = false) String searchKey);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/voip/call-log-enable : Get Voip CallLog Setting
     * Get Voip CallLog 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 Voip CallLog Setting", nickname = "getVoipCallLogEnable", notes = "Get Voip CallLog Setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseVoipCallLogEnableSetting.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoipCallLogEnableSetting.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/voip/call-log-enable",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseVoipCallLogEnableSetting> getVoipCallLogEnable(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voip-devices : Get Voip Device List
     * Get Voip Device 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 Voip Device List", nickname = "getVoipDeviceList", notes = "Get Voip Device List.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoVoipDevice.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoVoipDevice.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoVoipDevice> getVoipDeviceList(@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}/voip/emergency-number-settings : Get Voip Emergency Number Info
     * Get Voip Emergency Number Info.&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 Voip Emergency Number Info", nickname = "getVoipEmergency", notes = "Get Voip Emergency Number Info.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseVoipEmergencyNumberSetting.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoipEmergencyNumberSetting.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/voip/emergency-number-settings",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseVoipEmergencyNumberSetting> getVoipEmergency(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voice-mail/grid : Get voice mail list
     * Get voice mail 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 voice mail list", nickname = "getVoipMailGrid", notes = "Get voice mail list<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoVoiceMail.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoVoiceMail.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voice-mail/grid",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoVoiceMail> getVoipMailGrid(@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}/setting/voip/voice-mail/settings : Get voice mail settings
     * Get voice mail settings&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 voice mail settings", nickname = "getVoipMailSettings", notes = "Get voice mail settings<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseVoiceMailSettingResponse.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoiceMailSettingResponse.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voice-mail/settings",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseVoiceMailSettingResponse> getVoipMailSettings(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId);


    /**
     * GET /openapi/v1/{omadacId}/sites/{siteId}/voip/telephone-book : Get Voip TelephoneBook List
     * Get Voip TelephoneBook 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 Voip TelephoneBook List", nickname = "getVoipTelephoneBook", notes = "Get Voip TelephoneBook List.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager View Only", response = OperationResponseGridVoVoipTelephoneBookSetting.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseGridVoVoipTelephoneBookSetting.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/voip/telephone-book",
        produces = "*/*", 
        method = RequestMethod.GET)
    ResponseEntity<OperationResponseGridVoVoipTelephoneBookSetting> getVoipTelephoneBook(@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);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/call-blocking/{profileId} : Modify a call blocking profile
     * Modify a call blocking profile.&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 profileId Profile ID (required)
     * @param modifyCallBlockingProfileEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify a call blocking profile", nickname = "modifyCallBlockingProfile", notes = "Modify a call blocking profile.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/call-blocking/{profileId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyCallBlockingProfile(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Profile ID",required=true) @PathVariable("profileId") String profileId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) ModifyCallBlockingProfileEntity modifyCallBlockingProfileEntity);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/call-forwarding : Modify call forwarding rules
     * Modify call forwarding rules&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 body  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify call forwarding rules", nickname = "modifyCallForwardingRule", notes = "Modify call forwarding rules<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseVoid.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoid.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/call-forwarding",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseVoid> modifyCallForwardingRule(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) Object body);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/digit-map/{profileId} : Modify a digit map profile
     * Modify a digit map profile.&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 profileId Profile ID. Default digit map profile cannot be modified. (required)
     * @param modifyDigitMapProfileEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify a digit map profile", nickname = "modifyDigitMapProfile", notes = "Modify a digit map profile.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/digit-map/{profileId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyDigitMapProfile(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Profile ID. Default digit map profile cannot be modified.",required=true) @PathVariable("profileId") String profileId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) ModifyDigitMapProfileEntity modifyDigitMapProfileEntity);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/dnd/settings : Modify DND settings
     * Modify DND settings&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 dndSettingEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify DND settings", nickname = "modifyDndSettings", notes = "Modify DND settings<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseVoid.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseVoid.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/dnd/settings",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseVoid> modifyDndSettings(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) DndSettingEntity dndSettingEntity);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/provider-profiles/{profileId} : Modify a provider profile
     * Modify a provider profile.&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 profileId Profile ID (required)
     * @param modifyProviderProfileEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify a provider profile", nickname = "modifyProviderProfile", notes = "Modify a provider profile.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/provider-profiles/{profileId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyProviderProfile(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Profile ID",required=true) @PathVariable("profileId") String profileId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) ModifyProviderProfileEntity modifyProviderProfileEntity);


    /**
     * POST /openapi/v1/{omadacId}/sites/{siteId}/voip/call-log-enable : Modify Voip CallLog Setting
     * Modify Voip CallLog 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 voipCallLogEnableSetting  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify Voip CallLog Setting", nickname = "modifyVoipCallLogEnable", notes = "Modify Voip CallLog Setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/voip/call-log-enable",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.POST)
    ResponseEntity<OperationResponseWithoutResult> modifyVoipCallLogEnable(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) VoipCallLogEnableSetting voipCallLogEnableSetting);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voip-devices/osg/{deviceMac} : Modify Voip Device OSG Setting
     * Modify Voip Device OSG 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 deviceMac Device MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param modifyVoipDeviceOsgSettingEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify Voip Device OSG Setting", nickname = "modifyVoipDeviceOsgSetting", notes = "Modify Voip Device OSG Setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseModifyConfirmResultOpenApiVo.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseModifyConfirmResultOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices/osg/{deviceMac}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseModifyConfirmResultOpenApiVo> modifyVoipDeviceOsgSetting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Device MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("deviceMac") String deviceMac,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) ModifyVoipDeviceOsgSettingEntity modifyVoipDeviceOsgSettingEntity);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/setting/voip/voip-devices/{deviceMac} : Modify Voip Device AP Setting
     * Modify Voip Device AP 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 deviceMac Device MAC address, like AA-BB-CC-DD-EE-FF (required)
     * @param modifyVoipDeviceApSettingEntity  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify Voip Device AP Setting", nickname = "modifyVoipDeviceSetting", notes = "Modify Voip Device AP Setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseModifyConfirmResultOpenApiVo.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseModifyConfirmResultOpenApiVo.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/setting/voip/voip-devices/{deviceMac}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseModifyConfirmResultOpenApiVo> modifyVoipDeviceSetting(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Device MAC address, like AA-BB-CC-DD-EE-FF",required=true) @PathVariable("deviceMac") String deviceMac,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) ModifyVoipDeviceApSettingEntity modifyVoipDeviceApSettingEntity);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/voip/emergency-number-settings : Modify Voip Emergency Number Setting
     * Modify Voip Emergency Number 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 voipEmergencyNumberSetting  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify Voip Emergency Number Setting", nickname = "modifyVoipEmergency", notes = "Modify Voip Emergency Number Setting.<br/><br/>The interface requires one of the permissions: <br/>Site Settings Manager Modify", response = OperationResponseWithoutResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/voip/emergency-number-settings",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyVoipEmergency(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) VoipEmergencyNumberSetting voipEmergencyNumberSetting);


    /**
     * PATCH /openapi/v1/{omadacId}/sites/{siteId}/voip/telephone-book/{contactId} : Modify Contact Person
     * Modify Contact Person.&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;-35615  -  The number of Telephone book has reached the limit.&lt;br/&gt;-35616  -  The contact person&#39;s number combination already exists.
     *
     * @param omadacId Omada ID (required)
     * @param siteId Site ID (required)
     * @param contactId Voip Contact Person ID (required)
     * @param voipContactPersonSettings  (optional)
     * @return OK (status code 200)
     */
    @ApiOperation(value = "Modify Contact Person", nickname = "modifyVoipTelephoneBook", notes = "Modify Contact Person.<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/>-35615  -  The number of Telephone book has reached the limit.<br/>-35616  -  The contact person's number combination already exists.", response = OperationResponseWithoutResult.class, tags={ "Omada/VoIP","VoIP", })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = OperationResponseWithoutResult.class) })
    @RequestMapping(value = "/openapi/v1/${omada.omadac-id}/sites/{siteId}/voip/telephone-book/{contactId}",
        produces = "*/*", 
        consumes = "application/json",
        method = RequestMethod.PATCH)
    ResponseEntity<OperationResponseWithoutResult> modifyVoipTelephoneBook(@ApiParam(value = "Site ID",required=true) @PathVariable("siteId") String siteId,@ApiParam(value = "Voip Contact Person ID",required=true) @PathVariable("contactId") String contactId,@ApiParam(value = ""  )  @Valid @RequestBody(required = false) VoipContactPersonSettings voipContactPersonSettings);


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

}
