from typing import Optional, List
from sinch.core.pagination import TokenBasedPaginator, Paginator
from sinch.domains.numbers.api.v1.base import BaseNumbers
from sinch.domains.numbers.api.v1.internal import (
GetNumberConfigurationEndpoint,
ListActiveNumbersEndpoint,
ReleaseNumberFromProjectEndpoint,
UpdateNumberConfigurationEndpoint,
)
from sinch.domains.numbers.models.v1.response import ActiveNumber
from sinch.domains.numbers.models.v1.internal import (
ListActiveNumbersRequest,
NumberRequest,
UpdateNumberConfigurationRequest,
)
from sinch.domains.numbers.models.v1.types import (
CapabilityType,
NumberSearchPatternType,
NumberType,
OrderByType,
SmsConfigurationDict,
VoiceConfigurationDict,
)
[docs]
class ActiveNumbers(BaseNumbers):
[docs]
def list(
self,
region_code: Optional[str] = None,
number_type: Optional[NumberType] = None,
number_pattern: Optional[str] = None,
number_search_pattern: Optional[NumberSearchPatternType] = None,
capabilities: Optional[List[CapabilityType]] = None,
page_size: Optional[int] = None,
page_token: Optional[str] = None,
order_by: Optional[OrderByType] = None,
**kwargs,
) -> Paginator[ActiveNumber]:
return TokenBasedPaginator(
sinch=self._sinch,
endpoint=ListActiveNumbersEndpoint(
project_id=self._sinch.configuration.project_id,
request_data=ListActiveNumbersRequest(
region_code=region_code,
number_type=number_type,
page_size=page_size,
capabilities=capabilities,
number_pattern=number_pattern,
number_search_pattern=number_search_pattern,
page_token=page_token,
order_by=order_by,
**kwargs,
),
),
)
[docs]
def update(
self,
phone_number: str,
display_name: Optional[str] = None,
sms_configuration: Optional[SmsConfigurationDict] = None,
voice_configuration: Optional[VoiceConfigurationDict] = None,
event_destination_target: Optional[str] = None,
**kwargs,
) -> ActiveNumber:
request_data = UpdateNumberConfigurationRequest(
phone_number=phone_number,
display_name=display_name,
sms_configuration=sms_configuration,
voice_configuration=voice_configuration,
event_destination_target=event_destination_target,
**kwargs,
)
return self._request(UpdateNumberConfigurationEndpoint, request_data)
[docs]
def get(self, phone_number: str, **kwargs) -> ActiveNumber:
request_data = NumberRequest(phone_number=phone_number, **kwargs)
return self._request(GetNumberConfigurationEndpoint, request_data)
[docs]
def release(self, phone_number: str, **kwargs) -> ActiveNumber:
request_data = NumberRequest(phone_number=phone_number, **kwargs)
return self._request(ReleaseNumberFromProjectEndpoint, request_data)