diff --git a/.gitignore b/.gitignore index 367c9b00..d2e4ca80 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ __pycache__/ dist/ poetry.toml -venv \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index aee79a3e..e044b093 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "elevenlabs" [tool.poetry] name = "elevenlabs" -version = "v2.6.1" +version = "v2.7.0" description = "" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md index 73811f5f..64e62225 100644 --- a/reference.md +++ b/reference.md @@ -6324,11 +6324,7 @@ Run a conversation between the agent and a simulated user.
```python -from elevenlabs import ( - AgentConfig, - ConversationSimulationSpecification, - ElevenLabs, -) +from elevenlabs import ConversationSimulationSpecification, ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", @@ -6336,10 +6332,10 @@ client = ElevenLabs( client.conversational_ai.agents.simulate_conversation( agent_id="21m00Tcm4TlvDq8ikWAM", simulation_specification=ConversationSimulationSpecification( - simulated_user_config=AgentConfig( - first_message="Hello, how can I help you today?", - language="en", - ), + simulated_user_config={ + "first_message": "Hello, how can I help you today?", + "language": "en", + }, ), ) @@ -6420,11 +6416,7 @@ Run a conversation between the agent and a simulated user and stream back the re
```python -from elevenlabs import ( - AgentConfig, - ConversationSimulationSpecification, - ElevenLabs, -) +from elevenlabs import ConversationSimulationSpecification, ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", @@ -6432,10 +6424,10 @@ client = ElevenLabs( client.conversational_ai.agents.simulate_conversation_stream( agent_id="21m00Tcm4TlvDq8ikWAM", simulation_specification=ConversationSimulationSpecification( - simulated_user_config=AgentConfig( - first_message="Hello, how can I help you today?", - language="en", - ), + simulated_user_config={ + "first_message": "Hello, how can I help you today?", + "language": "en", + }, ), ) @@ -6490,7 +6482,7 @@ client.conversational_ai.agents.simulate_conversation_stream( ## ConversationalAi PhoneNumbers -
client.conversational_ai.phone_numbers.create(...) +
client.conversational_ai.phone_numbers.list()
@@ -6502,7 +6494,7 @@ client.conversational_ai.agents.simulate_conversation_stream(
-Import Phone Number from provider configuration (Twilio or SIP trunk) +Retrieve all Phone Numbers
@@ -6518,21 +6510,11 @@ Import Phone Number from provider configuration (Twilio or SIP trunk) ```python from elevenlabs import ElevenLabs -from elevenlabs.conversational_ai.phone_numbers import ( - PhoneNumbersCreateRequestBody_Twilio, -) client = ElevenLabs( api_key="YOUR_API_KEY", ) -client.conversational_ai.phone_numbers.create( - request=PhoneNumbersCreateRequestBody_Twilio( - phone_number="phone_number", - label="label", - sid="sid", - token="token", - ), -) +client.conversational_ai.phone_numbers.list() ```
@@ -6548,14 +6530,6 @@ client.conversational_ai.phone_numbers.create(
-**request:** `PhoneNumbersCreateRequestBody` - -
-
- -
-
- **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -6568,7 +6542,7 @@ client.conversational_ai.phone_numbers.create(
-
client.conversational_ai.phone_numbers.get(...) +
client.conversational_ai.phone_numbers.create(...)
@@ -6580,7 +6554,7 @@ client.conversational_ai.phone_numbers.create(
-Retrieve Phone Number details by ID +Import Phone Number from provider configuration (Twilio or SIP trunk)
@@ -6596,12 +6570,20 @@ Retrieve Phone Number details by ID ```python from elevenlabs import ElevenLabs +from elevenlabs.conversational_ai.phone_numbers import ( + PhoneNumbersCreateRequestBody_Twilio, +) client = ElevenLabs( api_key="YOUR_API_KEY", ) -client.conversational_ai.phone_numbers.get( - phone_number_id="TeaqRRdTcIfIu2i7BYfT", +client.conversational_ai.phone_numbers.create( + request=PhoneNumbersCreateRequestBody_Twilio( + phone_number="phone_number", + label="label", + sid="sid", + token="token", + ), ) ``` @@ -6618,7 +6600,7 @@ client.conversational_ai.phone_numbers.get(
-**phone_number_id:** `str` — The id of an agent. This is returned on agent creation. +**request:** `PhoneNumbersCreateRequestBody`
@@ -6638,7 +6620,7 @@ client.conversational_ai.phone_numbers.get(
-
client.conversational_ai.phone_numbers.delete(...) +
client.conversational_ai.phone_numbers.get(...)
@@ -6650,7 +6632,7 @@ client.conversational_ai.phone_numbers.get(
-Delete Phone Number by ID +Retrieve Phone Number details by ID
@@ -6670,7 +6652,7 @@ from elevenlabs import ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", ) -client.conversational_ai.phone_numbers.delete( +client.conversational_ai.phone_numbers.get( phone_number_id="TeaqRRdTcIfIu2i7BYfT", ) @@ -6708,7 +6690,7 @@ client.conversational_ai.phone_numbers.delete(
-
client.conversational_ai.phone_numbers.update(...) +
client.conversational_ai.phone_numbers.delete(...)
@@ -6720,7 +6702,7 @@ client.conversational_ai.phone_numbers.delete(
-Update Phone Number details by ID +Delete Phone Number by ID
@@ -6740,7 +6722,7 @@ from elevenlabs import ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", ) -client.conversational_ai.phone_numbers.update( +client.conversational_ai.phone_numbers.delete( phone_number_id="TeaqRRdTcIfIu2i7BYfT", ) @@ -6766,14 +6748,6 @@ client.conversational_ai.phone_numbers.update(
-**agent_id:** `typing.Optional[str]` - -
-
- -
-
- **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -6786,7 +6760,7 @@ client.conversational_ai.phone_numbers.update(
-
client.conversational_ai.phone_numbers.list() +
client.conversational_ai.phone_numbers.update(...)
@@ -6798,7 +6772,7 @@ client.conversational_ai.phone_numbers.update(
-Retrieve all Phone Numbers +Update Phone Number details by ID
@@ -6818,7 +6792,9 @@ from elevenlabs import ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", ) -client.conversational_ai.phone_numbers.list() +client.conversational_ai.phone_numbers.update( + phone_number_id="TeaqRRdTcIfIu2i7BYfT", +) ``` @@ -6834,6 +6810,22 @@ client.conversational_ai.phone_numbers.list()
+**phone_number_id:** `str` — The id of an agent. This is returned on agent creation. + +
+
+ +
+
+ +**agent_id:** `typing.Optional[str]` + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
diff --git a/src/elevenlabs/__init__.py b/src/elevenlabs/__init__.py index 1059ac6b..cdb3ee7d 100644 --- a/src/elevenlabs/__init__.py +++ b/src/elevenlabs/__init__.py @@ -134,6 +134,7 @@ ConversationDeletionSettings, ConversationHistoryAnalysisCommonModel, ConversationHistoryBatchCallModel, + ConversationHistoryElevenAssistantCommonModel, ConversationHistoryErrorCommonModel, ConversationHistoryEvaluationCriteriaResultCommonModel, ConversationHistoryFeedbackCommonModel, @@ -154,7 +155,9 @@ ConversationHistoryTranscriptToolCallCommonModel, ConversationHistoryTranscriptToolCallCommonModelToolDetails, ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client, + ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp, ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook, + ConversationHistoryTranscriptToolCallMcpDetails, ConversationHistoryTranscriptToolCallWebhookDetails, ConversationHistoryTranscriptToolResultCommonModel, ConversationHistoryTwilioPhoneCallModel, @@ -185,7 +188,7 @@ CreatePhoneNumberResponseModel, CreatePreviouslyGeneratedVoiceRequest, CreatePronunciationDictionaryResponseModel, - CreateSipTrunkPhoneNumberRequest, + CreateSipTrunkPhoneNumberRequestV2, CreateTranscriptRequest, CreateTwilioPhoneNumberRequest, CustomLlm, @@ -307,6 +310,8 @@ GetKnowledgeBaseTextResponseModel, GetKnowledgeBaseUrlResponseModel, GetLibraryVoicesResponse, + GetPhoneNumberInboundSipTrunkConfigResponseModel, + GetPhoneNumberOutboundSipTrunkConfigResponseModel, GetPhoneNumberResponse, GetPhoneNumberSipTrunkResponseModel, GetPhoneNumberTwilioResponseModel, @@ -332,6 +337,7 @@ HtmlExportOptions, HttpValidationError, ImageAvatar, + InboundSipTrunkConfigRequestModel, InitialiseContext, InitializeConnection, InitializeConnectionMulti, @@ -401,10 +407,15 @@ OrbAvatar, OutboundCallRecipient, OutboundCallRecipientResponseModel, + OutboundSipTrunkConfigRequestModel, OutputFormat, PdfExportOptions, PhoneNumberAgentInfo, PhoneNumberTransfer, + PhoneNumberTransferDestination, + PhoneNumberTransferTransferDestination, + PhoneNumberTransferTransferDestination_Phone, + PhoneNumberTransferTransferDestination_SipUri, PlayDtmfToolConfig, PodcastBulletinMode, PodcastBulletinModeData, @@ -504,10 +515,10 @@ SimilarVoiceCategory, SimilarVoicesForSpeakerResponse, SipMediaEncryptionEnum, - SipTrunkConfigResponseModel, - SipTrunkCredentials, + SipTrunkCredentialsRequestModel, SipTrunkOutboundCallResponse, SipTrunkTransportEnum, + SipUriTransferDestination, SkipTurnToolConfig, SpeakerAudioResponseModel, SpeakerResponseModel, @@ -573,7 +584,9 @@ ToolResponseModelToolConfig_Webhook, ToolsResponseModel, TransferToAgentToolConfig, - TransferToNumberToolConfig, + TransferToNumberToolConfigInput, + TransferToNumberToolConfigOutput, + TransferTypeEnum, TtsConversationalConfigInput, TtsConversationalConfigOutput, TtsConversationalConfigOverride, @@ -891,6 +904,7 @@ "ConversationDeletionSettings", "ConversationHistoryAnalysisCommonModel", "ConversationHistoryBatchCallModel", + "ConversationHistoryElevenAssistantCommonModel", "ConversationHistoryErrorCommonModel", "ConversationHistoryEvaluationCriteriaResultCommonModel", "ConversationHistoryFeedbackCommonModel", @@ -911,7 +925,9 @@ "ConversationHistoryTranscriptToolCallCommonModel", "ConversationHistoryTranscriptToolCallCommonModelToolDetails", "ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client", + "ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp", "ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook", + "ConversationHistoryTranscriptToolCallMcpDetails", "ConversationHistoryTranscriptToolCallWebhookDetails", "ConversationHistoryTranscriptToolResultCommonModel", "ConversationHistoryTwilioPhoneCallModel", @@ -942,7 +958,7 @@ "CreatePhoneNumberResponseModel", "CreatePreviouslyGeneratedVoiceRequest", "CreatePronunciationDictionaryResponseModel", - "CreateSipTrunkPhoneNumberRequest", + "CreateSipTrunkPhoneNumberRequestV2", "CreateTranscriptRequest", "CreateTwilioPhoneNumberRequest", "CustomLlm", @@ -1067,6 +1083,8 @@ "GetKnowledgeBaseTextResponseModel", "GetKnowledgeBaseUrlResponseModel", "GetLibraryVoicesResponse", + "GetPhoneNumberInboundSipTrunkConfigResponseModel", + "GetPhoneNumberOutboundSipTrunkConfigResponseModel", "GetPhoneNumberResponse", "GetPhoneNumberSipTrunkResponseModel", "GetPhoneNumberTwilioResponseModel", @@ -1093,6 +1111,7 @@ "HtmlExportOptions", "HttpValidationError", "ImageAvatar", + "InboundSipTrunkConfigRequestModel", "InitialiseContext", "InitializeConnection", "InitializeConnectionMulti", @@ -1163,10 +1182,15 @@ "OrbAvatar", "OutboundCallRecipient", "OutboundCallRecipientResponseModel", + "OutboundSipTrunkConfigRequestModel", "OutputFormat", "PdfExportOptions", "PhoneNumberAgentInfo", "PhoneNumberTransfer", + "PhoneNumberTransferDestination", + "PhoneNumberTransferTransferDestination", + "PhoneNumberTransferTransferDestination_Phone", + "PhoneNumberTransferTransferDestination_SipUri", "PlayDtmfToolConfig", "PodcastBulletinMode", "PodcastBulletinModeData", @@ -1272,10 +1296,10 @@ "SimilarVoiceCategory", "SimilarVoicesForSpeakerResponse", "SipMediaEncryptionEnum", - "SipTrunkConfigResponseModel", - "SipTrunkCredentials", + "SipTrunkCredentialsRequestModel", "SipTrunkOutboundCallResponse", "SipTrunkTransportEnum", + "SipUriTransferDestination", "SkipTurnToolConfig", "SpeakerAudioResponseModel", "SpeakerResponseModel", @@ -1357,7 +1381,9 @@ "ToolResponseModelToolConfig_Webhook", "ToolsResponseModel", "TransferToAgentToolConfig", - "TransferToNumberToolConfig", + "TransferToNumberToolConfigInput", + "TransferToNumberToolConfigOutput", + "TransferTypeEnum", "TtsConversationalConfigInput", "TtsConversationalConfigOutput", "TtsConversationalConfigOverride", diff --git a/src/elevenlabs/conversational_ai/agents/client.py b/src/elevenlabs/conversational_ai/agents/client.py index e780e956..37f08512 100644 --- a/src/elevenlabs/conversational_ai/agents/client.py +++ b/src/elevenlabs/conversational_ai/agents/client.py @@ -334,11 +334,7 @@ def simulate_conversation( Examples -------- - from elevenlabs import ( - AgentConfig, - ConversationSimulationSpecification, - ElevenLabs, - ) + from elevenlabs import ConversationSimulationSpecification, ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", @@ -346,10 +342,10 @@ def simulate_conversation( client.conversational_ai.agents.simulate_conversation( agent_id="21m00Tcm4TlvDq8ikWAM", simulation_specification=ConversationSimulationSpecification( - simulated_user_config=AgentConfig( - first_message="Hello, how can I help you today?", - language="en", - ), + simulated_user_config={ + "first_message": "Hello, how can I help you today?", + "language": "en", + }, ), ) """ @@ -392,11 +388,7 @@ def simulate_conversation_stream( Examples -------- - from elevenlabs import ( - AgentConfig, - ConversationSimulationSpecification, - ElevenLabs, - ) + from elevenlabs import ConversationSimulationSpecification, ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", @@ -404,10 +396,10 @@ def simulate_conversation_stream( client.conversational_ai.agents.simulate_conversation_stream( agent_id="21m00Tcm4TlvDq8ikWAM", simulation_specification=ConversationSimulationSpecification( - simulated_user_config=AgentConfig( - first_message="Hello, how can I help you today?", - language="en", - ), + simulated_user_config={ + "first_message": "Hello, how can I help you today?", + "language": "en", + }, ), ) """ @@ -784,11 +776,7 @@ async def simulate_conversation( -------- import asyncio - from elevenlabs import ( - AgentConfig, - AsyncElevenLabs, - ConversationSimulationSpecification, - ) + from elevenlabs import AsyncElevenLabs, ConversationSimulationSpecification client = AsyncElevenLabs( api_key="YOUR_API_KEY", @@ -799,10 +787,10 @@ async def main() -> None: await client.conversational_ai.agents.simulate_conversation( agent_id="21m00Tcm4TlvDq8ikWAM", simulation_specification=ConversationSimulationSpecification( - simulated_user_config=AgentConfig( - first_message="Hello, how can I help you today?", - language="en", - ), + simulated_user_config={ + "first_message": "Hello, how can I help you today?", + "language": "en", + }, ), ) @@ -850,11 +838,7 @@ async def simulate_conversation_stream( -------- import asyncio - from elevenlabs import ( - AgentConfig, - AsyncElevenLabs, - ConversationSimulationSpecification, - ) + from elevenlabs import AsyncElevenLabs, ConversationSimulationSpecification client = AsyncElevenLabs( api_key="YOUR_API_KEY", @@ -865,10 +849,10 @@ async def main() -> None: await client.conversational_ai.agents.simulate_conversation_stream( agent_id="21m00Tcm4TlvDq8ikWAM", simulation_specification=ConversationSimulationSpecification( - simulated_user_config=AgentConfig( - first_message="Hello, how can I help you today?", - language="en", - ), + simulated_user_config={ + "first_message": "Hello, how can I help you today?", + "language": "en", + }, ), ) diff --git a/src/elevenlabs/conversational_ai/phone_numbers/client.py b/src/elevenlabs/conversational_ai/phone_numbers/client.py index 96b50bbc..50d328e7 100644 --- a/src/elevenlabs/conversational_ai/phone_numbers/client.py +++ b/src/elevenlabs/conversational_ai/phone_numbers/client.py @@ -30,6 +30,34 @@ def with_raw_response(self) -> RawPhoneNumbersClient: """ return self._raw_client + def list( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> typing.List[PhoneNumbersListResponseItem]: + """ + Retrieve all Phone Numbers + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + typing.List[PhoneNumbersListResponseItem] + Successful Response + + Examples + -------- + from elevenlabs import ElevenLabs + + client = ElevenLabs( + api_key="YOUR_API_KEY", + ) + client.conversational_ai.phone_numbers.list() + """ + _response = self._raw_client.list(request_options=request_options) + return _response.data + def create( self, *, request: PhoneNumbersCreateRequestBody, request_options: typing.Optional[RequestOptions] = None ) -> CreatePhoneNumberResponseModel: @@ -175,7 +203,23 @@ def update( _response = self._raw_client.update(phone_number_id, agent_id=agent_id, request_options=request_options) return _response.data - def list( + +class AsyncPhoneNumbersClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._raw_client = AsyncRawPhoneNumbersClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> AsyncRawPhoneNumbersClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + AsyncRawPhoneNumbersClient + """ + return self._raw_client + + async def list( self, *, request_options: typing.Optional[RequestOptions] = None ) -> typing.List[PhoneNumbersListResponseItem]: """ @@ -193,31 +237,23 @@ def list( Examples -------- - from elevenlabs import ElevenLabs + import asyncio - client = ElevenLabs( + from elevenlabs import AsyncElevenLabs + + client = AsyncElevenLabs( api_key="YOUR_API_KEY", ) - client.conversational_ai.phone_numbers.list() - """ - _response = self._raw_client.list(request_options=request_options) - return _response.data -class AsyncPhoneNumbersClient: - def __init__(self, *, client_wrapper: AsyncClientWrapper): - self._raw_client = AsyncRawPhoneNumbersClient(client_wrapper=client_wrapper) + async def main() -> None: + await client.conversational_ai.phone_numbers.list() - @property - def with_raw_response(self) -> AsyncRawPhoneNumbersClient: - """ - Retrieves a raw implementation of this client that returns raw responses. - Returns - ------- - AsyncRawPhoneNumbersClient + asyncio.run(main()) """ - return self._raw_client + _response = await self._raw_client.list(request_options=request_options) + return _response.data async def create( self, *, request: PhoneNumbersCreateRequestBody, request_options: typing.Optional[RequestOptions] = None @@ -395,39 +431,3 @@ async def main() -> None: """ _response = await self._raw_client.update(phone_number_id, agent_id=agent_id, request_options=request_options) return _response.data - - async def list( - self, *, request_options: typing.Optional[RequestOptions] = None - ) -> typing.List[PhoneNumbersListResponseItem]: - """ - Retrieve all Phone Numbers - - Parameters - ---------- - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - typing.List[PhoneNumbersListResponseItem] - Successful Response - - Examples - -------- - import asyncio - - from elevenlabs import AsyncElevenLabs - - client = AsyncElevenLabs( - api_key="YOUR_API_KEY", - ) - - - async def main() -> None: - await client.conversational_ai.phone_numbers.list() - - - asyncio.run(main()) - """ - _response = await self._raw_client.list(request_options=request_options) - return _response.data diff --git a/src/elevenlabs/conversational_ai/phone_numbers/raw_client.py b/src/elevenlabs/conversational_ai/phone_numbers/raw_client.py index da4de0d6..4e117099 100644 --- a/src/elevenlabs/conversational_ai/phone_numbers/raw_client.py +++ b/src/elevenlabs/conversational_ai/phone_numbers/raw_client.py @@ -26,6 +26,54 @@ class RawPhoneNumbersClient: def __init__(self, *, client_wrapper: SyncClientWrapper): self._client_wrapper = client_wrapper + def list( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[typing.List[PhoneNumbersListResponseItem]]: + """ + Retrieve all Phone Numbers + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[typing.List[PhoneNumbersListResponseItem]] + Successful Response + """ + _response = self._client_wrapper.httpx_client.request( + "v1/convai/phone-numbers", + base_url=self._client_wrapper.get_environment().base, + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + typing.List[PhoneNumbersListResponseItem], + construct_type( + type_=typing.List[PhoneNumbersListResponseItem], # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + HttpValidationError, + construct_type( + type_=HttpValidationError, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + def create( self, *, request: PhoneNumbersCreateRequestBody, request_options: typing.Optional[RequestOptions] = None ) -> HttpResponse[CreatePhoneNumberResponseModel]: @@ -45,7 +93,7 @@ def create( Successful Response """ _response = self._client_wrapper.httpx_client.request( - "v1/convai/phone-numbers/create", + "v1/convai/phone-numbers", base_url=self._client_wrapper.get_environment().base, method="POST", json=convert_and_respect_annotation_metadata( @@ -251,9 +299,14 @@ def update( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - def list( + +class AsyncRawPhoneNumbersClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def list( self, *, request_options: typing.Optional[RequestOptions] = None - ) -> HttpResponse[typing.List[PhoneNumbersListResponseItem]]: + ) -> AsyncHttpResponse[typing.List[PhoneNumbersListResponseItem]]: """ Retrieve all Phone Numbers @@ -264,10 +317,10 @@ def list( Returns ------- - HttpResponse[typing.List[PhoneNumbersListResponseItem]] + AsyncHttpResponse[typing.List[PhoneNumbersListResponseItem]] Successful Response """ - _response = self._client_wrapper.httpx_client.request( + _response = await self._client_wrapper.httpx_client.request( "v1/convai/phone-numbers", base_url=self._client_wrapper.get_environment().base, method="GET", @@ -282,7 +335,7 @@ def list( object_=_response.json(), ), ) - return HttpResponse(response=_response, data=_data) + return AsyncHttpResponse(response=_response, data=_data) if _response.status_code == 422: raise UnprocessableEntityError( headers=dict(_response.headers), @@ -299,11 +352,6 @@ def list( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - -class AsyncRawPhoneNumbersClient: - def __init__(self, *, client_wrapper: AsyncClientWrapper): - self._client_wrapper = client_wrapper - async def create( self, *, request: PhoneNumbersCreateRequestBody, request_options: typing.Optional[RequestOptions] = None ) -> AsyncHttpResponse[CreatePhoneNumberResponseModel]: @@ -323,7 +371,7 @@ async def create( Successful Response """ _response = await self._client_wrapper.httpx_client.request( - "v1/convai/phone-numbers/create", + "v1/convai/phone-numbers", base_url=self._client_wrapper.get_environment().base, method="POST", json=convert_and_respect_annotation_metadata( @@ -528,51 +576,3 @@ async def update( except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - - async def list( - self, *, request_options: typing.Optional[RequestOptions] = None - ) -> AsyncHttpResponse[typing.List[PhoneNumbersListResponseItem]]: - """ - Retrieve all Phone Numbers - - Parameters - ---------- - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - AsyncHttpResponse[typing.List[PhoneNumbersListResponseItem]] - Successful Response - """ - _response = await self._client_wrapper.httpx_client.request( - "v1/convai/phone-numbers", - base_url=self._client_wrapper.get_environment().base, - method="GET", - request_options=request_options, - ) - try: - if 200 <= _response.status_code < 300: - _data = typing.cast( - typing.List[PhoneNumbersListResponseItem], - construct_type( - type_=typing.List[PhoneNumbersListResponseItem], # type: ignore - object_=_response.json(), - ), - ) - return AsyncHttpResponse(response=_response, data=_data) - if _response.status_code == 422: - raise UnprocessableEntityError( - headers=dict(_response.headers), - body=typing.cast( - HttpValidationError, - construct_type( - type_=HttpValidationError, # type: ignore - object_=_response.json(), - ), - ), - ) - _response_json = _response.json() - except JSONDecodeError: - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_create_request_body.py b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_create_request_body.py index 5c15e366..ee71a3f6 100644 --- a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_create_request_body.py +++ b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_create_request_body.py @@ -8,9 +8,8 @@ import typing_extensions from ....core.pydantic_utilities import IS_PYDANTIC_V2 from ....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata -from ....types.sip_media_encryption_enum import SipMediaEncryptionEnum -from ....types.sip_trunk_credentials import SipTrunkCredentials -from ....types.sip_trunk_transport_enum import SipTrunkTransportEnum +from ....types.inbound_sip_trunk_config_request_model import InboundSipTrunkConfigRequestModel +from ....types.outbound_sip_trunk_config_request_model import OutboundSipTrunkConfigRequestModel class PhoneNumbersCreateRequestBody_Twilio(UncheckedBaseModel): @@ -42,13 +41,8 @@ class PhoneNumbersCreateRequestBody_SipTrunk(UncheckedBaseModel): provider: typing.Literal["sip_trunk"] = "sip_trunk" phone_number: str label: str - termination_uri: str - address: typing.Optional[str] = None - transport: typing.Optional[SipTrunkTransportEnum] = None - media_encryption: typing.Optional[SipMediaEncryptionEnum] = None - inbound_media_encryption: typing.Optional[SipMediaEncryptionEnum] = None - headers: typing.Optional[typing.Dict[str, str]] = None - credentials: typing.Optional[SipTrunkCredentials] = None + inbound_trunk_config: typing.Optional[InboundSipTrunkConfigRequestModel] = None + outbound_trunk_config: typing.Optional[OutboundSipTrunkConfigRequestModel] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_get_response.py b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_get_response.py index 18c84731..76b8f91b 100644 --- a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_get_response.py +++ b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_get_response.py @@ -8,8 +8,13 @@ import typing_extensions from ....core.pydantic_utilities import IS_PYDANTIC_V2 from ....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata +from ....types.get_phone_number_inbound_sip_trunk_config_response_model import ( + GetPhoneNumberInboundSipTrunkConfigResponseModel, +) +from ....types.get_phone_number_outbound_sip_trunk_config_response_model import ( + GetPhoneNumberOutboundSipTrunkConfigResponseModel, +) from ....types.phone_number_agent_info import PhoneNumberAgentInfo -from ....types.sip_trunk_config_response_model import SipTrunkConfigResponseModel class PhoneNumbersGetResponse_Twilio(UncheckedBaseModel): @@ -35,7 +40,9 @@ class PhoneNumbersGetResponse_SipTrunk(UncheckedBaseModel): label: str phone_number_id: str assigned_agent: typing.Optional[PhoneNumberAgentInfo] = None - provider_config: typing.Optional[SipTrunkConfigResponseModel] = None + provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None + outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None + inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_list_response_item.py b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_list_response_item.py index 78dce652..27d1b78c 100644 --- a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_list_response_item.py +++ b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_list_response_item.py @@ -8,8 +8,13 @@ import typing_extensions from ....core.pydantic_utilities import IS_PYDANTIC_V2 from ....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata +from ....types.get_phone_number_inbound_sip_trunk_config_response_model import ( + GetPhoneNumberInboundSipTrunkConfigResponseModel, +) +from ....types.get_phone_number_outbound_sip_trunk_config_response_model import ( + GetPhoneNumberOutboundSipTrunkConfigResponseModel, +) from ....types.phone_number_agent_info import PhoneNumberAgentInfo -from ....types.sip_trunk_config_response_model import SipTrunkConfigResponseModel class PhoneNumbersListResponseItem_Twilio(UncheckedBaseModel): @@ -35,7 +40,9 @@ class PhoneNumbersListResponseItem_SipTrunk(UncheckedBaseModel): label: str phone_number_id: str assigned_agent: typing.Optional[PhoneNumberAgentInfo] = None - provider_config: typing.Optional[SipTrunkConfigResponseModel] = None + provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None + outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None + inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_update_response.py b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_update_response.py index bd57ad95..c01bbc39 100644 --- a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_update_response.py +++ b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_update_response.py @@ -8,8 +8,13 @@ import typing_extensions from ....core.pydantic_utilities import IS_PYDANTIC_V2 from ....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata +from ....types.get_phone_number_inbound_sip_trunk_config_response_model import ( + GetPhoneNumberInboundSipTrunkConfigResponseModel, +) +from ....types.get_phone_number_outbound_sip_trunk_config_response_model import ( + GetPhoneNumberOutboundSipTrunkConfigResponseModel, +) from ....types.phone_number_agent_info import PhoneNumberAgentInfo -from ....types.sip_trunk_config_response_model import SipTrunkConfigResponseModel class PhoneNumbersUpdateResponse_Twilio(UncheckedBaseModel): @@ -35,7 +40,9 @@ class PhoneNumbersUpdateResponse_SipTrunk(UncheckedBaseModel): label: str phone_number_id: str assigned_agent: typing.Optional[PhoneNumberAgentInfo] = None - provider_config: typing.Optional[SipTrunkConfigResponseModel] = None + provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None + outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None + inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/core/client_wrapper.py b/src/elevenlabs/core/client_wrapper.py index ee78d3e7..0207324b 100644 --- a/src/elevenlabs/core/client_wrapper.py +++ b/src/elevenlabs/core/client_wrapper.py @@ -21,10 +21,10 @@ def __init__( def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { - "User-Agent": "elevenlabs/v2.6.0", + "User-Agent": "elevenlabs/v2.7.0", "X-Fern-Language": "Python", "X-Fern-SDK-Name": "elevenlabs", - "X-Fern-SDK-Version": "v2.6.0", + "X-Fern-SDK-Version": "v2.7.0", } if self._api_key is not None: headers["xi-api-key"] = self._api_key diff --git a/src/elevenlabs/types/__init__.py b/src/elevenlabs/types/__init__.py index 3712ae42..6b2ac6eb 100644 --- a/src/elevenlabs/types/__init__.py +++ b/src/elevenlabs/types/__init__.py @@ -171,6 +171,7 @@ from .conversation_deletion_settings import ConversationDeletionSettings from .conversation_history_analysis_common_model import ConversationHistoryAnalysisCommonModel from .conversation_history_batch_call_model import ConversationHistoryBatchCallModel +from .conversation_history_eleven_assistant_common_model import ConversationHistoryElevenAssistantCommonModel from .conversation_history_error_common_model import ConversationHistoryErrorCommonModel from .conversation_history_evaluation_criteria_result_common_model import ( ConversationHistoryEvaluationCriteriaResultCommonModel, @@ -202,8 +203,10 @@ from .conversation_history_transcript_tool_call_common_model_tool_details import ( ConversationHistoryTranscriptToolCallCommonModelToolDetails, ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client, + ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp, ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook, ) +from .conversation_history_transcript_tool_call_mcp_details import ConversationHistoryTranscriptToolCallMcpDetails from .conversation_history_transcript_tool_call_webhook_details import ( ConversationHistoryTranscriptToolCallWebhookDetails, ) @@ -246,7 +249,7 @@ from .create_phone_number_response_model import CreatePhoneNumberResponseModel from .create_previously_generated_voice_request import CreatePreviouslyGeneratedVoiceRequest from .create_pronunciation_dictionary_response_model import CreatePronunciationDictionaryResponseModel -from .create_sip_trunk_phone_number_request import CreateSipTrunkPhoneNumberRequest +from .create_sip_trunk_phone_number_request_v_2 import CreateSipTrunkPhoneNumberRequestV2 from .create_transcript_request import CreateTranscriptRequest from .create_twilio_phone_number_request import CreateTwilioPhoneNumberRequest from .custom_llm import CustomLlm @@ -388,6 +391,8 @@ from .get_knowledge_base_text_response_model import GetKnowledgeBaseTextResponseModel from .get_knowledge_base_url_response_model import GetKnowledgeBaseUrlResponseModel from .get_library_voices_response import GetLibraryVoicesResponse +from .get_phone_number_inbound_sip_trunk_config_response_model import GetPhoneNumberInboundSipTrunkConfigResponseModel +from .get_phone_number_outbound_sip_trunk_config_response_model import GetPhoneNumberOutboundSipTrunkConfigResponseModel from .get_phone_number_response import GetPhoneNumberResponse from .get_phone_number_sip_trunk_response_model import GetPhoneNumberSipTrunkResponseModel from .get_phone_number_twilio_response_model import GetPhoneNumberTwilioResponseModel @@ -417,6 +422,7 @@ from .html_export_options import HtmlExportOptions from .http_validation_error import HttpValidationError from .image_avatar import ImageAvatar +from .inbound_sip_trunk_config_request_model import InboundSipTrunkConfigRequestModel from .initialise_context import InitialiseContext from .initialize_connection import InitializeConnection from .initialize_connection_multi import InitializeConnectionMulti @@ -488,10 +494,17 @@ from .orb_avatar import OrbAvatar from .outbound_call_recipient import OutboundCallRecipient from .outbound_call_recipient_response_model import OutboundCallRecipientResponseModel +from .outbound_sip_trunk_config_request_model import OutboundSipTrunkConfigRequestModel from .output_format import OutputFormat from .pdf_export_options import PdfExportOptions from .phone_number_agent_info import PhoneNumberAgentInfo from .phone_number_transfer import PhoneNumberTransfer +from .phone_number_transfer_destination import PhoneNumberTransferDestination +from .phone_number_transfer_transfer_destination import ( + PhoneNumberTransferTransferDestination, + PhoneNumberTransferTransferDestination_Phone, + PhoneNumberTransferTransferDestination_SipUri, +) from .play_dtmf_tool_config import PlayDtmfToolConfig from .podcast_bulletin_mode import PodcastBulletinMode from .podcast_bulletin_mode_data import PodcastBulletinModeData @@ -597,10 +610,10 @@ from .similar_voice_category import SimilarVoiceCategory from .similar_voices_for_speaker_response import SimilarVoicesForSpeakerResponse from .sip_media_encryption_enum import SipMediaEncryptionEnum -from .sip_trunk_config_response_model import SipTrunkConfigResponseModel -from .sip_trunk_credentials import SipTrunkCredentials +from .sip_trunk_credentials_request_model import SipTrunkCredentialsRequestModel from .sip_trunk_outbound_call_response import SipTrunkOutboundCallResponse from .sip_trunk_transport_enum import SipTrunkTransportEnum +from .sip_uri_transfer_destination import SipUriTransferDestination from .skip_turn_tool_config import SkipTurnToolConfig from .speaker_audio_response_model import SpeakerAudioResponseModel from .speaker_response_model import SpeakerResponseModel @@ -674,7 +687,9 @@ ) from .tools_response_model import ToolsResponseModel from .transfer_to_agent_tool_config import TransferToAgentToolConfig -from .transfer_to_number_tool_config import TransferToNumberToolConfig +from .transfer_to_number_tool_config_input import TransferToNumberToolConfigInput +from .transfer_to_number_tool_config_output import TransferToNumberToolConfigOutput +from .transfer_type_enum import TransferTypeEnum from .tts_conversational_config_input import TtsConversationalConfigInput from .tts_conversational_config_output import TtsConversationalConfigOutput from .tts_conversational_config_override import TtsConversationalConfigOverride @@ -902,6 +917,7 @@ "ConversationDeletionSettings", "ConversationHistoryAnalysisCommonModel", "ConversationHistoryBatchCallModel", + "ConversationHistoryElevenAssistantCommonModel", "ConversationHistoryErrorCommonModel", "ConversationHistoryEvaluationCriteriaResultCommonModel", "ConversationHistoryFeedbackCommonModel", @@ -922,7 +938,9 @@ "ConversationHistoryTranscriptToolCallCommonModel", "ConversationHistoryTranscriptToolCallCommonModelToolDetails", "ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client", + "ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp", "ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook", + "ConversationHistoryTranscriptToolCallMcpDetails", "ConversationHistoryTranscriptToolCallWebhookDetails", "ConversationHistoryTranscriptToolResultCommonModel", "ConversationHistoryTwilioPhoneCallModel", @@ -953,7 +971,7 @@ "CreatePhoneNumberResponseModel", "CreatePreviouslyGeneratedVoiceRequest", "CreatePronunciationDictionaryResponseModel", - "CreateSipTrunkPhoneNumberRequest", + "CreateSipTrunkPhoneNumberRequestV2", "CreateTranscriptRequest", "CreateTwilioPhoneNumberRequest", "CustomLlm", @@ -1075,6 +1093,8 @@ "GetKnowledgeBaseTextResponseModel", "GetKnowledgeBaseUrlResponseModel", "GetLibraryVoicesResponse", + "GetPhoneNumberInboundSipTrunkConfigResponseModel", + "GetPhoneNumberOutboundSipTrunkConfigResponseModel", "GetPhoneNumberResponse", "GetPhoneNumberSipTrunkResponseModel", "GetPhoneNumberTwilioResponseModel", @@ -1100,6 +1120,7 @@ "HtmlExportOptions", "HttpValidationError", "ImageAvatar", + "InboundSipTrunkConfigRequestModel", "InitialiseContext", "InitializeConnection", "InitializeConnectionMulti", @@ -1169,10 +1190,15 @@ "OrbAvatar", "OutboundCallRecipient", "OutboundCallRecipientResponseModel", + "OutboundSipTrunkConfigRequestModel", "OutputFormat", "PdfExportOptions", "PhoneNumberAgentInfo", "PhoneNumberTransfer", + "PhoneNumberTransferDestination", + "PhoneNumberTransferTransferDestination", + "PhoneNumberTransferTransferDestination_Phone", + "PhoneNumberTransferTransferDestination_SipUri", "PlayDtmfToolConfig", "PodcastBulletinMode", "PodcastBulletinModeData", @@ -1272,10 +1298,10 @@ "SimilarVoiceCategory", "SimilarVoicesForSpeakerResponse", "SipMediaEncryptionEnum", - "SipTrunkConfigResponseModel", - "SipTrunkCredentials", + "SipTrunkCredentialsRequestModel", "SipTrunkOutboundCallResponse", "SipTrunkTransportEnum", + "SipUriTransferDestination", "SkipTurnToolConfig", "SpeakerAudioResponseModel", "SpeakerResponseModel", @@ -1341,7 +1367,9 @@ "ToolResponseModelToolConfig_Webhook", "ToolsResponseModel", "TransferToAgentToolConfig", - "TransferToNumberToolConfig", + "TransferToNumberToolConfigInput", + "TransferToNumberToolConfigOutput", + "TransferTypeEnum", "TtsConversationalConfigInput", "TtsConversationalConfigOutput", "TtsConversationalConfigOverride", diff --git a/src/elevenlabs/types/agent_config.py b/src/elevenlabs/types/agent_config.py index b0c75513..a684411f 100644 --- a/src/elevenlabs/types/agent_config.py +++ b/src/elevenlabs/types/agent_config.py @@ -2,36 +2,4 @@ import typing -import pydantic -from ..core.pydantic_utilities import IS_PYDANTIC_V2 -from ..core.unchecked_base_model import UncheckedBaseModel -from .dynamic_variables_config import DynamicVariablesConfig -from .prompt_agent_db_model import PromptAgentDbModel - - -class AgentConfig(UncheckedBaseModel): - first_message: typing.Optional[str] = pydantic.Field(default=None) - """ - If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion. - """ - - language: typing.Optional[str] = pydantic.Field(default=None) - """ - Language of the agent - used for ASR and TTS - """ - - dynamic_variables: typing.Optional[DynamicVariablesConfig] = pydantic.Field(default=None) - """ - Configuration for dynamic variables - """ - - prompt: typing.Optional[PromptAgentDbModel] = None - - if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 - else: - - class Config: - frozen = True - smart_union = True - extra = pydantic.Extra.allow +AgentConfig = typing.Optional[typing.Any] diff --git a/src/elevenlabs/types/conv_ai_webhooks.py b/src/elevenlabs/types/conv_ai_webhooks.py index b21e043b..51acad3b 100644 --- a/src/elevenlabs/types/conv_ai_webhooks.py +++ b/src/elevenlabs/types/conv_ai_webhooks.py @@ -9,6 +9,10 @@ class ConvAiWebhooks(UncheckedBaseModel): post_call_webhook_id: typing.Optional[str] = None + send_audio: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether to send audio data with post-call webhooks for ConvAI conversations + """ if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/types/conversation_history_eleven_assistant_common_model.py b/src/elevenlabs/types/conversation_history_eleven_assistant_common_model.py new file mode 100644 index 00000000..9f76bbcc --- /dev/null +++ b/src/elevenlabs/types/conversation_history_eleven_assistant_common_model.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel + + +class ConversationHistoryElevenAssistantCommonModel(UncheckedBaseModel): + is_eleven_assistant: typing.Optional[bool] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/conversation_history_metadata_common_model.py b/src/elevenlabs/types/conversation_history_metadata_common_model.py index b97ce538..88bc2a5c 100644 --- a/src/elevenlabs/types/conversation_history_metadata_common_model.py +++ b/src/elevenlabs/types/conversation_history_metadata_common_model.py @@ -9,6 +9,7 @@ from .conversation_charging_common_model import ConversationChargingCommonModel from .conversation_deletion_settings import ConversationDeletionSettings from .conversation_history_batch_call_model import ConversationHistoryBatchCallModel +from .conversation_history_eleven_assistant_common_model import ConversationHistoryElevenAssistantCommonModel from .conversation_history_error_common_model import ConversationHistoryErrorCommonModel from .conversation_history_feedback_common_model import ConversationHistoryFeedbackCommonModel from .conversation_history_metadata_common_model_phone_call import ConversationHistoryMetadataCommonModelPhoneCall @@ -33,6 +34,7 @@ class ConversationHistoryMetadataCommonModel(UncheckedBaseModel): rag_usage: typing.Optional[ConversationHistoryRagUsageCommonModel] = None text_only: typing.Optional[bool] = None features_usage: typing.Optional[FeaturesUsageCommonModel] = None + eleven_assistant: typing.Optional[ConversationHistoryElevenAssistantCommonModel] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/types/conversation_history_transcript_tool_call_common_model_tool_details.py b/src/elevenlabs/types/conversation_history_transcript_tool_call_common_model_tool_details.py index e5b3a107..e34cde2e 100644 --- a/src/elevenlabs/types/conversation_history_transcript_tool_call_common_model_tool_details.py +++ b/src/elevenlabs/types/conversation_history_transcript_tool_call_common_model_tool_details.py @@ -24,6 +24,27 @@ class Config: extra = pydantic.Extra.allow +class ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp(UncheckedBaseModel): + type: typing.Literal["mcp"] = "mcp" + mcp_server_id: str + mcp_server_name: str + integration_type: str + parameters: typing.Optional[typing.Dict[str, str]] = None + approval_policy: str + requires_approval: typing.Optional[bool] = None + mcp_tool_name: typing.Optional[str] = None + mcp_tool_description: typing.Optional[str] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + class ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook(UncheckedBaseModel): type: typing.Literal["webhook"] = "webhook" method: str @@ -46,6 +67,7 @@ class Config: ConversationHistoryTranscriptToolCallCommonModelToolDetails = typing_extensions.Annotated[ typing.Union[ ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client, + ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp, ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook, ], UnionMetadata(discriminant="type"), diff --git a/src/elevenlabs/types/conversation_history_transcript_tool_call_mcp_details.py b/src/elevenlabs/types/conversation_history_transcript_tool_call_mcp_details.py new file mode 100644 index 00000000..ed898ae1 --- /dev/null +++ b/src/elevenlabs/types/conversation_history_transcript_tool_call_mcp_details.py @@ -0,0 +1,27 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel + + +class ConversationHistoryTranscriptToolCallMcpDetails(UncheckedBaseModel): + mcp_server_id: str + mcp_server_name: str + integration_type: str + parameters: typing.Optional[typing.Dict[str, str]] = None + approval_policy: str + requires_approval: typing.Optional[bool] = None + mcp_tool_name: typing.Optional[str] = None + mcp_tool_description: typing.Optional[str] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/create_sip_trunk_phone_number_request_v_2.py b/src/elevenlabs/types/create_sip_trunk_phone_number_request_v_2.py new file mode 100644 index 00000000..d7a5b4f7 --- /dev/null +++ b/src/elevenlabs/types/create_sip_trunk_phone_number_request_v_2.py @@ -0,0 +1,33 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .inbound_sip_trunk_config_request_model import InboundSipTrunkConfigRequestModel +from .outbound_sip_trunk_config_request_model import OutboundSipTrunkConfigRequestModel + + +class CreateSipTrunkPhoneNumberRequestV2(UncheckedBaseModel): + phone_number: str = pydantic.Field() + """ + Phone number + """ + + label: str = pydantic.Field() + """ + Label for the phone number + """ + + inbound_trunk_config: typing.Optional[InboundSipTrunkConfigRequestModel] = None + outbound_trunk_config: typing.Optional[OutboundSipTrunkConfigRequestModel] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/get_agent_response_model_phone_numbers_item.py b/src/elevenlabs/types/get_agent_response_model_phone_numbers_item.py index 05c8a22a..fe495cbe 100644 --- a/src/elevenlabs/types/get_agent_response_model_phone_numbers_item.py +++ b/src/elevenlabs/types/get_agent_response_model_phone_numbers_item.py @@ -8,8 +8,9 @@ import typing_extensions from ..core.pydantic_utilities import IS_PYDANTIC_V2 from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata +from .get_phone_number_inbound_sip_trunk_config_response_model import GetPhoneNumberInboundSipTrunkConfigResponseModel +from .get_phone_number_outbound_sip_trunk_config_response_model import GetPhoneNumberOutboundSipTrunkConfigResponseModel from .phone_number_agent_info import PhoneNumberAgentInfo -from .sip_trunk_config_response_model import SipTrunkConfigResponseModel class GetAgentResponseModelPhoneNumbersItem_SipTrunk(UncheckedBaseModel): @@ -18,7 +19,9 @@ class GetAgentResponseModelPhoneNumbersItem_SipTrunk(UncheckedBaseModel): label: str phone_number_id: str assigned_agent: typing.Optional[PhoneNumberAgentInfo] = None - provider_config: typing.Optional[SipTrunkConfigResponseModel] = None + provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None + outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None + inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/types/get_phone_number_inbound_sip_trunk_config_response_model.py b/src/elevenlabs/types/get_phone_number_inbound_sip_trunk_config_response_model.py new file mode 100644 index 00000000..5c6ba9b0 --- /dev/null +++ b/src/elevenlabs/types/get_phone_number_inbound_sip_trunk_config_response_model.py @@ -0,0 +1,40 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .sip_media_encryption_enum import SipMediaEncryptionEnum + + +class GetPhoneNumberInboundSipTrunkConfigResponseModel(UncheckedBaseModel): + allowed_addresses: typing.List[str] = pydantic.Field() + """ + List of IP addresses that are allowed to use the trunk. Each item in the list can be an individual IP address or a Classless Inter-Domain Routing notation representing a CIDR block. + """ + + allowed_numbers: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + List of phone numbers that are allowed to use the trunk. + """ + + media_encryption: SipMediaEncryptionEnum + has_auth_credentials: bool = pydantic.Field() + """ + Whether authentication credentials are configured + """ + + username: typing.Optional[str] = pydantic.Field(default=None) + """ + SIP trunk username (if available) + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/sip_trunk_config_response_model.py b/src/elevenlabs/types/get_phone_number_outbound_sip_trunk_config_response_model.py similarity index 95% rename from src/elevenlabs/types/sip_trunk_config_response_model.py rename to src/elevenlabs/types/get_phone_number_outbound_sip_trunk_config_response_model.py index 159faf5d..14e00b03 100644 --- a/src/elevenlabs/types/sip_trunk_config_response_model.py +++ b/src/elevenlabs/types/get_phone_number_outbound_sip_trunk_config_response_model.py @@ -9,7 +9,7 @@ from .sip_trunk_transport_enum import SipTrunkTransportEnum -class SipTrunkConfigResponseModel(UncheckedBaseModel): +class GetPhoneNumberOutboundSipTrunkConfigResponseModel(UncheckedBaseModel): """ SIP Trunk configuration details for a phone number """ diff --git a/src/elevenlabs/types/get_phone_number_sip_trunk_response_model.py b/src/elevenlabs/types/get_phone_number_sip_trunk_response_model.py index 2c96691b..8a3a394c 100644 --- a/src/elevenlabs/types/get_phone_number_sip_trunk_response_model.py +++ b/src/elevenlabs/types/get_phone_number_sip_trunk_response_model.py @@ -5,8 +5,9 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2 from ..core.unchecked_base_model import UncheckedBaseModel +from .get_phone_number_inbound_sip_trunk_config_response_model import GetPhoneNumberInboundSipTrunkConfigResponseModel +from .get_phone_number_outbound_sip_trunk_config_response_model import GetPhoneNumberOutboundSipTrunkConfigResponseModel from .phone_number_agent_info import PhoneNumberAgentInfo -from .sip_trunk_config_response_model import SipTrunkConfigResponseModel class GetPhoneNumberSipTrunkResponseModel(UncheckedBaseModel): @@ -30,7 +31,16 @@ class GetPhoneNumberSipTrunkResponseModel(UncheckedBaseModel): The agent that is assigned to the phone number """ - provider_config: typing.Optional[SipTrunkConfigResponseModel] = None + provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None + outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = pydantic.Field(default=None) + """ + Configuration of the Outbound SIP trunk - if configured. + """ + + inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = pydantic.Field(default=None) + """ + Configuration of the Inbound SIP trunk - if configured. + """ if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/types/inbound_sip_trunk_config_request_model.py b/src/elevenlabs/types/inbound_sip_trunk_config_request_model.py new file mode 100644 index 00000000..f37896fd --- /dev/null +++ b/src/elevenlabs/types/inbound_sip_trunk_config_request_model.py @@ -0,0 +1,40 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .sip_media_encryption_enum import SipMediaEncryptionEnum +from .sip_trunk_credentials_request_model import SipTrunkCredentialsRequestModel + + +class InboundSipTrunkConfigRequestModel(UncheckedBaseModel): + allowed_addresses: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + List of IP addresses that are allowed to use the trunk. Each item in the list can be an individual IP address or a Classless Inter-Domain Routing notation representing a CIDR block. + """ + + allowed_numbers: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + List of phone numbers that are allowed to use the trunk. + """ + + media_encryption: typing.Optional[SipMediaEncryptionEnum] = pydantic.Field(default=None) + """ + Whether or not to encrypt media (data layer). + """ + + credentials: typing.Optional[SipTrunkCredentialsRequestModel] = pydantic.Field(default=None) + """ + Optional digest authentication credentials (username/password). + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/create_sip_trunk_phone_number_request.py b/src/elevenlabs/types/outbound_sip_trunk_config_request_model.py similarity index 56% rename from src/elevenlabs/types/create_sip_trunk_phone_number_request.py rename to src/elevenlabs/types/outbound_sip_trunk_config_request_model.py index 4ac437e1..9f39b127 100644 --- a/src/elevenlabs/types/create_sip_trunk_phone_number_request.py +++ b/src/elevenlabs/types/outbound_sip_trunk_config_request_model.py @@ -6,35 +6,12 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2 from ..core.unchecked_base_model import UncheckedBaseModel from .sip_media_encryption_enum import SipMediaEncryptionEnum -from .sip_trunk_credentials import SipTrunkCredentials +from .sip_trunk_credentials_request_model import SipTrunkCredentialsRequestModel from .sip_trunk_transport_enum import SipTrunkTransportEnum -class CreateSipTrunkPhoneNumberRequest(UncheckedBaseModel): - """ - SIP trunk phone number request - - Includes termination URI and optional digest authentication credentials. - If credentials are provided, both username and password must be included. - If credentials are not provided, ACL authentication is assumed. (user needs to add our ips in their settings) - """ - - phone_number: str = pydantic.Field() - """ - Phone number - """ - - label: str = pydantic.Field() - """ - Label for the phone number - """ - - termination_uri: str = pydantic.Field() - """ - SIP trunk termination URI - """ - - address: typing.Optional[str] = pydantic.Field(default=None) +class OutboundSipTrunkConfigRequestModel(UncheckedBaseModel): + address: str = pydantic.Field() """ Hostname or IP the SIP INVITE is sent to. """ @@ -49,17 +26,12 @@ class CreateSipTrunkPhoneNumberRequest(UncheckedBaseModel): Whether or not to encrypt media (data layer). """ - inbound_media_encryption: typing.Optional[SipMediaEncryptionEnum] = pydantic.Field(default=None) - """ - Whether or not to encrypt media (data layer) for inbound calls. - """ - headers: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None) """ SIP X-* headers for INVITE request. These headers are sent as-is and may help identify this call. """ - credentials: typing.Optional[SipTrunkCredentials] = pydantic.Field(default=None) + credentials: typing.Optional[SipTrunkCredentialsRequestModel] = pydantic.Field(default=None) """ Optional digest authentication credentials (username/password). If not provided, ACL authentication is assumed. """ diff --git a/src/elevenlabs/types/phone_number_transfer.py b/src/elevenlabs/types/phone_number_transfer.py index 74258c17..174772b7 100644 --- a/src/elevenlabs/types/phone_number_transfer.py +++ b/src/elevenlabs/types/phone_number_transfer.py @@ -5,11 +5,15 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2 from ..core.unchecked_base_model import UncheckedBaseModel +from .phone_number_transfer_transfer_destination import PhoneNumberTransferTransferDestination +from .transfer_type_enum import TransferTypeEnum class PhoneNumberTransfer(UncheckedBaseModel): - phone_number: str + transfer_destination: typing.Optional[PhoneNumberTransferTransferDestination] = None + phone_number: typing.Optional[str] = None condition: str + transfer_type: typing.Optional[TransferTypeEnum] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/types/phone_number_transfer_destination.py b/src/elevenlabs/types/phone_number_transfer_destination.py new file mode 100644 index 00000000..05db276c --- /dev/null +++ b/src/elevenlabs/types/phone_number_transfer_destination.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel + + +class PhoneNumberTransferDestination(UncheckedBaseModel): + phone_number: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/phone_number_transfer_transfer_destination.py b/src/elevenlabs/types/phone_number_transfer_transfer_destination.py new file mode 100644 index 00000000..6c0765d1 --- /dev/null +++ b/src/elevenlabs/types/phone_number_transfer_transfer_destination.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata + + +class PhoneNumberTransferTransferDestination_Phone(UncheckedBaseModel): + type: typing.Literal["phone"] = "phone" + phone_number: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PhoneNumberTransferTransferDestination_SipUri(UncheckedBaseModel): + type: typing.Literal["sip_uri"] = "sip_uri" + sip_uri: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +PhoneNumberTransferTransferDestination = typing_extensions.Annotated[ + typing.Union[PhoneNumberTransferTransferDestination_Phone, PhoneNumberTransferTransferDestination_SipUri], + UnionMetadata(discriminant="type"), +] diff --git a/src/elevenlabs/types/prompt_agent_db_model.py b/src/elevenlabs/types/prompt_agent_db_model.py index b0aef6a1..ba6ae76d 100644 --- a/src/elevenlabs/types/prompt_agent_db_model.py +++ b/src/elevenlabs/types/prompt_agent_db_model.py @@ -5,75 +5,9 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2 from ..core.unchecked_base_model import UncheckedBaseModel -from .built_in_tools_input import BuiltInToolsInput -from .custom_llm import CustomLlm -from .knowledge_base_locator import KnowledgeBaseLocator -from .llm import Llm -from .rag_config import RagConfig class PromptAgentDbModel(UncheckedBaseModel): - prompt: typing.Optional[str] = pydantic.Field(default=None) - """ - The prompt for the agent - """ - - llm: typing.Optional[Llm] = pydantic.Field(default=None) - """ - The LLM to query with the prompt and the chat history - """ - - temperature: typing.Optional[float] = pydantic.Field(default=None) - """ - The temperature for the LLM - """ - - max_tokens: typing.Optional[int] = pydantic.Field(default=None) - """ - If greater than 0, maximum number of tokens the LLM can predict - """ - - tool_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None) - """ - A list of IDs of tools used by the agent - """ - - built_in_tools: typing.Optional[BuiltInToolsInput] = pydantic.Field(default=None) - """ - Built-in system tools to be used by the agent - """ - - mcp_server_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None) - """ - A list of MCP server ids to be used by the agent - """ - - native_mcp_server_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None) - """ - A list of Native MCP server ids to be used by the agent - """ - - knowledge_base: typing.Optional[typing.List[KnowledgeBaseLocator]] = pydantic.Field(default=None) - """ - A list of knowledge bases to be used by the agent - """ - - custom_llm: typing.Optional[CustomLlm] = pydantic.Field(default=None) - """ - Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM' - """ - - ignore_default_personality: typing.Optional[bool] = pydantic.Field(default=None) - """ - Whether to ignore the default personality - """ - - rag: typing.Optional[RagConfig] = pydantic.Field(default=None) - """ - Configuration for RAG - """ - - knowledge_base_document_ids: typing.Optional[typing.List[str]] = None tools: typing.Optional[typing.Optional[typing.Any]] = None if IS_PYDANTIC_V2: diff --git a/src/elevenlabs/types/sip_trunk_credentials.py b/src/elevenlabs/types/sip_trunk_credentials_request_model.py similarity index 91% rename from src/elevenlabs/types/sip_trunk_credentials.py rename to src/elevenlabs/types/sip_trunk_credentials_request_model.py index 173eb6e9..780a2f81 100644 --- a/src/elevenlabs/types/sip_trunk_credentials.py +++ b/src/elevenlabs/types/sip_trunk_credentials_request_model.py @@ -7,7 +7,7 @@ from ..core.unchecked_base_model import UncheckedBaseModel -class SipTrunkCredentials(UncheckedBaseModel): +class SipTrunkCredentialsRequestModel(UncheckedBaseModel): username: str = pydantic.Field() """ SIP trunk username diff --git a/src/elevenlabs/types/sip_uri_transfer_destination.py b/src/elevenlabs/types/sip_uri_transfer_destination.py new file mode 100644 index 00000000..5dae82b0 --- /dev/null +++ b/src/elevenlabs/types/sip_uri_transfer_destination.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel + + +class SipUriTransferDestination(UncheckedBaseModel): + sip_uri: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/subscription_status_type.py b/src/elevenlabs/types/subscription_status_type.py index 67ed5e79..a2d2478f 100644 --- a/src/elevenlabs/types/subscription_status_type.py +++ b/src/elevenlabs/types/subscription_status_type.py @@ -3,8 +3,5 @@ import typing SubscriptionStatusType = typing.Union[ - typing.Literal[ - "trialing", "active", "incomplete", "incomplete_expired", "past_due", "free", "free_disabled", "canceled" - ], - typing.Any, + typing.Literal["trialing", "active", "incomplete", "past_due", "free", "free_disabled"], typing.Any ] diff --git a/src/elevenlabs/types/transfer_to_number_tool_config.py b/src/elevenlabs/types/transfer_to_number_tool_config_input.py similarity index 93% rename from src/elevenlabs/types/transfer_to_number_tool_config.py rename to src/elevenlabs/types/transfer_to_number_tool_config_input.py index 542eaf7e..59350f52 100644 --- a/src/elevenlabs/types/transfer_to_number_tool_config.py +++ b/src/elevenlabs/types/transfer_to_number_tool_config_input.py @@ -8,7 +8,7 @@ from .phone_number_transfer import PhoneNumberTransfer -class TransferToNumberToolConfig(UncheckedBaseModel): +class TransferToNumberToolConfigInput(UncheckedBaseModel): transfers: typing.List[PhoneNumberTransfer] enable_client_message: typing.Optional[bool] = pydantic.Field(default=None) """ diff --git a/src/elevenlabs/types/transfer_to_number_tool_config_output.py b/src/elevenlabs/types/transfer_to_number_tool_config_output.py new file mode 100644 index 00000000..2420f33e --- /dev/null +++ b/src/elevenlabs/types/transfer_to_number_tool_config_output.py @@ -0,0 +1,25 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .phone_number_transfer import PhoneNumberTransfer + + +class TransferToNumberToolConfigOutput(UncheckedBaseModel): + transfers: typing.List[PhoneNumberTransfer] + enable_client_message: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether to play a message to the client while they wait for transfer. Defaults to true for backward compatibility. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/transfer_type_enum.py b/src/elevenlabs/types/transfer_type_enum.py new file mode 100644 index 00000000..50f4e86a --- /dev/null +++ b/src/elevenlabs/types/transfer_type_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +TransferTypeEnum = typing.Union[typing.Literal["conference", "sip_refer"], typing.Any] diff --git a/src/elevenlabs/types/widget_text_contents.py b/src/elevenlabs/types/widget_text_contents.py index f11abb67..8eb4c140 100644 --- a/src/elevenlabs/types/widget_text_contents.py +++ b/src/elevenlabs/types/widget_text_contents.py @@ -18,6 +18,11 @@ class WidgetTextContents(UncheckedBaseModel): Text and ARIA label for the start call button. """ + start_chat: typing.Optional[str] = pydantic.Field(default=None) + """ + Text and ARIA label for the start chat button (text only) + """ + new_call: typing.Optional[str] = pydantic.Field(default=None) """ Text and ARIA label for the new call button. Displayed when the caller already finished at least one call in order ot start the next one. @@ -78,6 +83,11 @@ class WidgetTextContents(UncheckedBaseModel): Status displayed when the agent is connecting. """ + chatting_status: typing.Optional[str] = pydantic.Field(default=None) + """ + Status displayed when the agent is chatting (text only) + """ + input_label: typing.Optional[str] = pydantic.Field(default=None) """ ARIA label for the text message input. @@ -88,6 +98,16 @@ class WidgetTextContents(UncheckedBaseModel): Placeholder text for the text message input. """ + input_placeholder_text_only: typing.Optional[str] = pydantic.Field(default=None) + """ + Placeholder text for the text message input (text only) + """ + + input_placeholder_new_conversation: typing.Optional[str] = pydantic.Field(default=None) + """ + Placeholder text for the text message input when starting a new conversation (text only) + """ + user_ended_conversation: typing.Optional[str] = pydantic.Field(default=None) """ Information message displayed when the user ends the conversation. diff --git a/src/elevenlabs/types/workspace_resource_type.py b/src/elevenlabs/types/workspace_resource_type.py index b8d65ad5..7e049bb9 100644 --- a/src/elevenlabs/types/workspace_resource_type.py +++ b/src/elevenlabs/types/workspace_resource_type.py @@ -19,6 +19,7 @@ "convai_phone_numbers", "convai_mcp_servers", "convai_batch_calls", + "convai_agent_response_tests", ], typing.Any, ] diff --git a/src/elevenlabs/workspace/invites/types/body_invite_user_v_1_workspace_invites_add_post_workspace_permission.py b/src/elevenlabs/workspace/invites/types/body_invite_user_v_1_workspace_invites_add_post_workspace_permission.py index 56e2e635..a975ec7c 100644 --- a/src/elevenlabs/workspace/invites/types/body_invite_user_v_1_workspace_invites_add_post_workspace_permission.py +++ b/src/elevenlabs/workspace/invites/types/body_invite_user_v_1_workspace_invites_add_post_workspace_permission.py @@ -20,6 +20,8 @@ "workspace_migration_admin", "human_reviewer", "productions_admin", + "support", + "internal", ], typing.Any, ]