diff --git a/poetry.lock b/poetry.lock index 4145c40..9b6cbce 100644 --- a/poetry.lock +++ b/poetry.lock @@ -38,13 +38,13 @@ trio = ["trio (<0.22)"] [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -228,13 +228,13 @@ files = [ [[package]] name = "packaging" -version = "23.2" +version = "24.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] [[package]] @@ -417,13 +417,13 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no [[package]] name = "sniffio" -version = "1.3.0" +version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" files = [ - {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, - {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index bafe076..0058444 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "vocode-api" -version = "0.0.40" +version = "0.0.41" description = "" readme = "README.md" authors = [] diff --git a/src/vocode/__init__.py b/src/vocode/__init__.py index c170268..66c4d31 100644 --- a/src/vocode/__init__.py +++ b/src/vocode/__init__.py @@ -155,6 +155,7 @@ ElevenLabsVoiceParams, ElevenLabsVoiceUpdateParams, ElevenLabsVoiceUpdateParamsApiKey, + ElevenLabsVoiceUpdateParamsExperimentalInputStreaming, ElevenLabsVoiceUpdateParamsModelId, ElevenLabsVoiceUpdateParamsOptimizeStreamingLatency, ElevenLabsVoiceUpdateParamsSimilarityBoost, @@ -225,10 +226,14 @@ PlayHtVoiceUpdateParams, PlayHtVoiceUpdateParamsApiKey, PlayHtVoiceUpdateParamsApiUserId, + PlayHtVoiceUpdateParamsExperimentalRemoveSilence, PlayHtVoiceUpdateParamsQuality, PlayHtVoiceUpdateParamsSpeed, PlayHtVoiceUpdateParamsTemperature, + PlayHtVoiceUpdateParamsTextGuidance, + PlayHtVoiceUpdateParamsTopP, PlayHtVoiceUpdateParamsVersion, + PlayHtVoiceUpdateParamsVoiceGuidance, PlayHtVoiceUpdateParamsVoiceId, PlayHtVoiceVersion, Prompt, @@ -530,6 +535,7 @@ "ElevenLabsVoiceParams", "ElevenLabsVoiceUpdateParams", "ElevenLabsVoiceUpdateParamsApiKey", + "ElevenLabsVoiceUpdateParamsExperimentalInputStreaming", "ElevenLabsVoiceUpdateParamsModelId", "ElevenLabsVoiceUpdateParamsOptimizeStreamingLatency", "ElevenLabsVoiceUpdateParamsSimilarityBoost", @@ -600,10 +606,14 @@ "PlayHtVoiceUpdateParams", "PlayHtVoiceUpdateParamsApiKey", "PlayHtVoiceUpdateParamsApiUserId", + "PlayHtVoiceUpdateParamsExperimentalRemoveSilence", "PlayHtVoiceUpdateParamsQuality", "PlayHtVoiceUpdateParamsSpeed", "PlayHtVoiceUpdateParamsTemperature", + "PlayHtVoiceUpdateParamsTextGuidance", + "PlayHtVoiceUpdateParamsTopP", "PlayHtVoiceUpdateParamsVersion", + "PlayHtVoiceUpdateParamsVoiceGuidance", "PlayHtVoiceUpdateParamsVoiceId", "PlayHtVoiceVersion", "Prompt", diff --git a/src/vocode/core/client_wrapper.py b/src/vocode/core/client_wrapper.py index 3758d2e..dd53cd8 100644 --- a/src/vocode/core/client_wrapper.py +++ b/src/vocode/core/client_wrapper.py @@ -14,7 +14,7 @@ def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { "X-Fern-Language": "Python", "X-Fern-SDK-Name": "vocode-api", - "X-Fern-SDK-Version": "0.0.40", + "X-Fern-SDK-Version": "0.0.41", } headers["Authorization"] = f"Bearer {self._get_token()}" return headers diff --git a/src/vocode/resources/account_connections/client.py b/src/vocode/resources/account_connections/client.py index 7297048..76fb326 100644 --- a/src/vocode/resources/account_connections/client.py +++ b/src/vocode/resources/account_connections/client.py @@ -51,18 +51,29 @@ def get_account_connection(self, *, id: str) -> AccountConnectionResponseModel: raise ApiError(status_code=_response.status_code, body=_response_json) def list_account_connections( - self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, ) -> AccountConnectionPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/account_connections/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -153,18 +164,29 @@ async def get_account_connection(self, *, id: str) -> AccountConnectionResponseM raise ApiError(status_code=_response.status_code, body=_response_json) async def list_account_connections( - self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, ) -> AccountConnectionPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = await self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/account_connections/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) diff --git a/src/vocode/resources/actions/client.py b/src/vocode/resources/actions/client.py index c31098e..46dbaf5 100644 --- a/src/vocode/resources/actions/client.py +++ b/src/vocode/resources/actions/client.py @@ -50,17 +50,30 @@ def get_action(self, *, id: str) -> ActionResponseModel: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - def list_actions(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> ActionPage: + def list_actions( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> ActionPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/actions/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -148,17 +161,30 @@ async def get_action(self, *, id: str) -> ActionResponseModel: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - async def list_actions(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> ActionPage: + async def list_actions( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> ActionPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = await self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/actions/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) diff --git a/src/vocode/resources/agents/client.py b/src/vocode/resources/agents/client.py index 58e88c5..a4bdf25 100644 --- a/src/vocode/resources/agents/client.py +++ b/src/vocode/resources/agents/client.py @@ -59,17 +59,30 @@ def get_agent(self, *, id: str) -> Agent: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - def list_agents(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> AgentPage: + def list_agents( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> AgentPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/agents/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -104,6 +117,7 @@ def create_agent( ask_if_human_present_on_idle: typing.Optional[bool] = OMIT, openai_account_connection: typing.Optional[AgentParamsOpenaiAccountConnection] = OMIT, run_do_not_call_detection: typing.Optional[bool] = OMIT, + llm_temperature: typing.Optional[float] = OMIT, ) -> Agent: """ Parameters: @@ -142,6 +156,8 @@ def create_agent( - openai_account_connection: typing.Optional[AgentParamsOpenaiAccountConnection]. - run_do_not_call_detection: typing.Optional[bool]. + + - llm_temperature: typing.Optional[float]. """ _request: typing.Dict[str, typing.Any] = {"prompt": prompt, "voice": voice} if language is not OMIT: @@ -176,6 +192,8 @@ def create_agent( _request["openai_account_connection"] = openai_account_connection if run_do_not_call_detection is not OMIT: _request["run_do_not_call_detection"] = run_do_not_call_detection + if llm_temperature is not OMIT: + _request["llm_temperature"] = llm_temperature _response = self._client_wrapper.httpx_client.request( "POST", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/agents/create"), @@ -245,17 +263,30 @@ async def get_agent(self, *, id: str) -> Agent: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - async def list_agents(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> AgentPage: + async def list_agents( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> AgentPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = await self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/agents/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -290,6 +321,7 @@ async def create_agent( ask_if_human_present_on_idle: typing.Optional[bool] = OMIT, openai_account_connection: typing.Optional[AgentParamsOpenaiAccountConnection] = OMIT, run_do_not_call_detection: typing.Optional[bool] = OMIT, + llm_temperature: typing.Optional[float] = OMIT, ) -> Agent: """ Parameters: @@ -328,6 +360,8 @@ async def create_agent( - openai_account_connection: typing.Optional[AgentParamsOpenaiAccountConnection]. - run_do_not_call_detection: typing.Optional[bool]. + + - llm_temperature: typing.Optional[float]. """ _request: typing.Dict[str, typing.Any] = {"prompt": prompt, "voice": voice} if language is not OMIT: @@ -362,6 +396,8 @@ async def create_agent( _request["openai_account_connection"] = openai_account_connection if run_do_not_call_detection is not OMIT: _request["run_do_not_call_detection"] = run_do_not_call_detection + if llm_temperature is not OMIT: + _request["llm_temperature"] = llm_temperature _response = await self._client_wrapper.httpx_client.request( "POST", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/agents/create"), diff --git a/src/vocode/resources/calls/client.py b/src/vocode/resources/calls/client.py index 4599702..d543063 100644 --- a/src/vocode/resources/calls/client.py +++ b/src/vocode/resources/calls/client.py @@ -28,17 +28,30 @@ class CallsClient: def __init__(self, *, client_wrapper: SyncClientWrapper): self._client_wrapper = client_wrapper - def list_calls(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> CallPage: + def list_calls( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> CallPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/calls/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -106,6 +119,7 @@ def create_call( run_do_not_call_detection: typing.Optional[bool] = OMIT, hipaa_compliant: typing.Optional[bool] = OMIT, context: typing.Optional[typing.Dict[str, str]] = OMIT, + telephony_params: typing.Optional[typing.Dict[str, str]] = OMIT, ) -> Call: """ Parameters: @@ -122,6 +136,8 @@ def create_call( - hipaa_compliant: typing.Optional[bool]. - context: typing.Optional[typing.Dict[str, str]]. + + - telephony_params: typing.Optional[typing.Dict[str, str]]. """ _request: typing.Dict[str, typing.Any] = {"from_number": from_number, "to_number": to_number, "agent": agent} if on_no_human_answer is not OMIT: @@ -132,6 +148,8 @@ def create_call( _request["hipaa_compliant"] = hipaa_compliant if context is not OMIT: _request["context"] = context + if telephony_params is not OMIT: + _request["telephony_params"] = telephony_params _response = self._client_wrapper.httpx_client.request( "POST", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/calls/create"), @@ -177,17 +195,30 @@ class AsyncCallsClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): self._client_wrapper = client_wrapper - async def list_calls(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> CallPage: + async def list_calls( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> CallPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = await self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/calls/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -255,6 +286,7 @@ async def create_call( run_do_not_call_detection: typing.Optional[bool] = OMIT, hipaa_compliant: typing.Optional[bool] = OMIT, context: typing.Optional[typing.Dict[str, str]] = OMIT, + telephony_params: typing.Optional[typing.Dict[str, str]] = OMIT, ) -> Call: """ Parameters: @@ -271,6 +303,8 @@ async def create_call( - hipaa_compliant: typing.Optional[bool]. - context: typing.Optional[typing.Dict[str, str]]. + + - telephony_params: typing.Optional[typing.Dict[str, str]]. """ _request: typing.Dict[str, typing.Any] = {"from_number": from_number, "to_number": to_number, "agent": agent} if on_no_human_answer is not OMIT: @@ -281,6 +315,8 @@ async def create_call( _request["hipaa_compliant"] = hipaa_compliant if context is not OMIT: _request["context"] = context + if telephony_params is not OMIT: + _request["telephony_params"] = telephony_params _response = await self._client_wrapper.httpx_client.request( "POST", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/calls/create"), diff --git a/src/vocode/resources/numbers/client.py b/src/vocode/resources/numbers/client.py index 61ac2b7..27eba5d 100644 --- a/src/vocode/resources/numbers/client.py +++ b/src/vocode/resources/numbers/client.py @@ -31,17 +31,30 @@ class NumbersClient: def __init__(self, *, client_wrapper: SyncClientWrapper): self._client_wrapper = client_wrapper - def list_numbers(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> PhoneNumberPage: + def list_numbers( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> PhoneNumberPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/numbers/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -209,18 +222,29 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): self._client_wrapper = client_wrapper async def list_numbers( - self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, ) -> PhoneNumberPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = await self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/numbers/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) diff --git a/src/vocode/resources/prompts/client.py b/src/vocode/resources/prompts/client.py index 25d9ecf..b29d6ed 100644 --- a/src/vocode/resources/prompts/client.py +++ b/src/vocode/resources/prompts/client.py @@ -50,17 +50,30 @@ def get_prompt(self, *, id: str) -> Prompt: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - def list_prompts(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> PromptPage: + def list_prompts( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> PromptPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/prompts/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -148,17 +161,30 @@ async def get_prompt(self, *, id: str) -> Prompt: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - async def list_prompts(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> PromptPage: + async def list_prompts( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> PromptPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = await self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/prompts/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) diff --git a/src/vocode/resources/vector_databases/client.py b/src/vocode/resources/vector_databases/client.py index e2cfaa3..7aa5716 100644 --- a/src/vocode/resources/vector_databases/client.py +++ b/src/vocode/resources/vector_databases/client.py @@ -51,18 +51,29 @@ def get_vector_database(self, *, id: str) -> PineconeVectorDatabase: raise ApiError(status_code=_response.status_code, body=_response_json) def list_vector_databases( - self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, ) -> VectorDatabasePage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/vector_databases/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -151,18 +162,29 @@ async def get_vector_database(self, *, id: str) -> PineconeVectorDatabase: raise ApiError(status_code=_response.status_code, body=_response_json) async def list_vector_databases( - self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, ) -> VectorDatabasePage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = await self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/vector_databases/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) diff --git a/src/vocode/resources/voices/client.py b/src/vocode/resources/voices/client.py index 8916610..1bf57d4 100644 --- a/src/vocode/resources/voices/client.py +++ b/src/vocode/resources/voices/client.py @@ -50,17 +50,30 @@ def get_voice(self, *, id: str) -> VoiceResponseModel: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - def list_voices(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> VoicePage: + def list_voices( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> VoicePage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/voices/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -148,17 +161,30 @@ async def get_voice(self, *, id: str) -> VoiceResponseModel: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - async def list_voices(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> VoicePage: + async def list_voices( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> VoicePage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = await self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/voices/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) diff --git a/src/vocode/resources/webhooks/client.py b/src/vocode/resources/webhooks/client.py index 677eacb..a2b6818 100644 --- a/src/vocode/resources/webhooks/client.py +++ b/src/vocode/resources/webhooks/client.py @@ -50,17 +50,30 @@ def get_webhook(self, *, id: str) -> Webhook: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - def list_webhooks(self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None) -> WebhookPage: + def list_webhooks( + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, + ) -> WebhookPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/webhooks/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) @@ -149,18 +162,29 @@ async def get_webhook(self, *, id: str) -> Webhook: raise ApiError(status_code=_response.status_code, body=_response_json) async def list_webhooks( - self, *, page: typing.Optional[int] = None, size: typing.Optional[int] = None + self, + *, + page: typing.Optional[int] = None, + size: typing.Optional[int] = None, + sort_column: typing.Optional[str] = None, + sort_desc: typing.Optional[bool] = None, ) -> WebhookPage: """ Parameters: - page: typing.Optional[int]. - size: typing.Optional[int]. + + - sort_column: typing.Optional[str]. + + - sort_desc: typing.Optional[bool]. """ _response = await self._client_wrapper.httpx_client.request( "GET", urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "v1/webhooks/list"), - params=remove_none_from_dict({"page": page, "size": size}), + params=remove_none_from_dict( + {"page": page, "size": size, "sort_column": sort_column, "sort_desc": sort_desc} + ), headers=self._client_wrapper.get_headers(), timeout=60, ) diff --git a/src/vocode/types/__init__.py b/src/vocode/types/__init__.py index 20f3207..9d329b7 100644 --- a/src/vocode/types/__init__.py +++ b/src/vocode/types/__init__.py @@ -194,6 +194,9 @@ from .eleven_labs_voice_params import ElevenLabsVoiceParams from .eleven_labs_voice_update_params import ElevenLabsVoiceUpdateParams from .eleven_labs_voice_update_params_api_key import ElevenLabsVoiceUpdateParamsApiKey +from .eleven_labs_voice_update_params_experimental_input_streaming import ( + ElevenLabsVoiceUpdateParamsExperimentalInputStreaming, +) from .eleven_labs_voice_update_params_model_id import ElevenLabsVoiceUpdateParamsModelId from .eleven_labs_voice_update_params_optimize_streaming_latency import ( ElevenLabsVoiceUpdateParamsOptimizeStreamingLatency, @@ -272,10 +275,14 @@ from .play_ht_voice_update_params import PlayHtVoiceUpdateParams from .play_ht_voice_update_params_api_key import PlayHtVoiceUpdateParamsApiKey from .play_ht_voice_update_params_api_user_id import PlayHtVoiceUpdateParamsApiUserId +from .play_ht_voice_update_params_experimental_remove_silence import PlayHtVoiceUpdateParamsExperimentalRemoveSilence from .play_ht_voice_update_params_quality import PlayHtVoiceUpdateParamsQuality from .play_ht_voice_update_params_speed import PlayHtVoiceUpdateParamsSpeed from .play_ht_voice_update_params_temperature import PlayHtVoiceUpdateParamsTemperature +from .play_ht_voice_update_params_text_guidance import PlayHtVoiceUpdateParamsTextGuidance +from .play_ht_voice_update_params_top_p import PlayHtVoiceUpdateParamsTopP from .play_ht_voice_update_params_version import PlayHtVoiceUpdateParamsVersion +from .play_ht_voice_update_params_voice_guidance import PlayHtVoiceUpdateParamsVoiceGuidance from .play_ht_voice_update_params_voice_id import PlayHtVoiceUpdateParamsVoiceId from .play_ht_voice_version import PlayHtVoiceVersion from .prompt import Prompt @@ -536,6 +543,7 @@ "ElevenLabsVoiceParams", "ElevenLabsVoiceUpdateParams", "ElevenLabsVoiceUpdateParamsApiKey", + "ElevenLabsVoiceUpdateParamsExperimentalInputStreaming", "ElevenLabsVoiceUpdateParamsModelId", "ElevenLabsVoiceUpdateParamsOptimizeStreamingLatency", "ElevenLabsVoiceUpdateParamsSimilarityBoost", @@ -606,10 +614,14 @@ "PlayHtVoiceUpdateParams", "PlayHtVoiceUpdateParamsApiKey", "PlayHtVoiceUpdateParamsApiUserId", + "PlayHtVoiceUpdateParamsExperimentalRemoveSilence", "PlayHtVoiceUpdateParamsQuality", "PlayHtVoiceUpdateParamsSpeed", "PlayHtVoiceUpdateParamsTemperature", + "PlayHtVoiceUpdateParamsTextGuidance", + "PlayHtVoiceUpdateParamsTopP", "PlayHtVoiceUpdateParamsVersion", + "PlayHtVoiceUpdateParamsVoiceGuidance", "PlayHtVoiceUpdateParamsVoiceId", "PlayHtVoiceVersion", "Prompt", diff --git a/src/vocode/types/agent.py b/src/vocode/types/agent.py index 57d7424..0123472 100644 --- a/src/vocode/types/agent.py +++ b/src/vocode/types/agent.py @@ -42,6 +42,7 @@ class Agent(pydantic.BaseModel): ask_if_human_present_on_idle: typing.Optional[bool] openai_account_connection: typing.Optional[OpenAiAccountConnection] run_do_not_call_detection: typing.Optional[bool] + llm_temperature: typing.Optional[float] def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} diff --git a/src/vocode/types/call.py b/src/vocode/types/call.py index f25251b..8788b53 100644 --- a/src/vocode/types/call.py +++ b/src/vocode/types/call.py @@ -43,6 +43,7 @@ class Call(pydantic.BaseModel): context: typing.Optional[typing.Dict[str, str]] run_do_not_call_detection: typing.Optional[bool] telephony_account_connection: typing.Optional[TwilioAccountConnection] + telephony_params: typing.Optional[typing.Dict[str, str]] def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} diff --git a/src/vocode/types/call_stage_outcome.py b/src/vocode/types/call_stage_outcome.py index d60f965..450478d 100644 --- a/src/vocode/types/call_stage_outcome.py +++ b/src/vocode/types/call_stage_outcome.py @@ -8,6 +8,7 @@ class CallStageOutcome(str, enum.Enum): HUMAN_UNANSWERED = "human_unanswered" + CALL_DID_NOT_CONNECT = "call_did_not_connect" HUMAN_DISCONNECTED = "human_disconnected" BOT_DISCONNECTED = "bot_disconnected" TRANSFER_UNANSWERED = "transfer_unanswered" @@ -16,6 +17,7 @@ class CallStageOutcome(str, enum.Enum): def visit( self, human_unanswered: typing.Callable[[], T_Result], + call_did_not_connect: typing.Callable[[], T_Result], human_disconnected: typing.Callable[[], T_Result], bot_disconnected: typing.Callable[[], T_Result], transfer_unanswered: typing.Callable[[], T_Result], @@ -23,6 +25,8 @@ def visit( ) -> T_Result: if self is CallStageOutcome.HUMAN_UNANSWERED: return human_unanswered() + if self is CallStageOutcome.CALL_DID_NOT_CONNECT: + return call_did_not_connect() if self is CallStageOutcome.HUMAN_DISCONNECTED: return human_disconnected() if self is CallStageOutcome.BOT_DISCONNECTED: diff --git a/src/vocode/types/create_call_agent_params.py b/src/vocode/types/create_call_agent_params.py index 0779312..ebb05c9 100644 --- a/src/vocode/types/create_call_agent_params.py +++ b/src/vocode/types/create_call_agent_params.py @@ -40,6 +40,7 @@ class CreateCallAgentParams(pydantic.BaseModel): ask_if_human_present_on_idle: typing.Optional[bool] openai_account_connection: typing.Optional[CreateCallAgentParamsOpenaiAccountConnection] run_do_not_call_detection: typing.Optional[bool] + llm_temperature: typing.Optional[float] def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} diff --git a/src/vocode/types/eleven_labs_voice.py b/src/vocode/types/eleven_labs_voice.py index e281c64..f9d8e47 100644 --- a/src/vocode/types/eleven_labs_voice.py +++ b/src/vocode/types/eleven_labs_voice.py @@ -20,6 +20,7 @@ class ElevenLabsVoice(pydantic.BaseModel): api_key: typing.Optional[str] optimize_streaming_latency: typing.Optional[int] model_id: typing.Optional[str] + experimental_input_streaming: typing.Optional[bool] def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} diff --git a/src/vocode/types/eleven_labs_voice_update_params_experimental_input_streaming.py b/src/vocode/types/eleven_labs_voice_update_params_experimental_input_streaming.py new file mode 100644 index 0000000..bac6f96 --- /dev/null +++ b/src/vocode/types/eleven_labs_voice_update_params_experimental_input_streaming.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .undefined import Undefined + +ElevenLabsVoiceUpdateParamsExperimentalInputStreaming = typing.Union[bool, Undefined] diff --git a/src/vocode/types/event_type.py b/src/vocode/types/event_type.py index 380b68d..283acc4 100644 --- a/src/vocode/types/event_type.py +++ b/src/vocode/types/event_type.py @@ -15,6 +15,7 @@ class EventType(str, enum.Enum): EVENT_ACTION = "event_action" EVENT_PHONE_CALL_CONNECTED = "event_phone_call_connected" EVENT_PHONE_CALL_ENDED = "event_phone_call_ended" + EVENT_PHONE_CALL_DID_NOT_CONNECT = "event_phone_call_did_not_connect" EVENT_TRANSCRIPT = "event_transcript" EVENT_RECORDING = "event_recording" EVENT_HUMAN_DETECTION = "event_human_detection" @@ -25,6 +26,7 @@ def visit( event_action: typing.Callable[[], T_Result], event_phone_call_connected: typing.Callable[[], T_Result], event_phone_call_ended: typing.Callable[[], T_Result], + event_phone_call_did_not_connect: typing.Callable[[], T_Result], event_transcript: typing.Callable[[], T_Result], event_recording: typing.Callable[[], T_Result], event_human_detection: typing.Callable[[], T_Result], @@ -37,6 +39,8 @@ def visit( return event_phone_call_connected() if self is EventType.EVENT_PHONE_CALL_ENDED: return event_phone_call_ended() + if self is EventType.EVENT_PHONE_CALL_DID_NOT_CONNECT: + return event_phone_call_did_not_connect() if self is EventType.EVENT_TRANSCRIPT: return event_transcript() if self is EventType.EVENT_RECORDING: diff --git a/src/vocode/types/normalized_agent.py b/src/vocode/types/normalized_agent.py index b014b43..a3811a3 100644 --- a/src/vocode/types/normalized_agent.py +++ b/src/vocode/types/normalized_agent.py @@ -39,6 +39,7 @@ class NormalizedAgent(pydantic.BaseModel): ask_if_human_present_on_idle: typing.Optional[bool] openai_account_connection: typing.Optional[NormalizedAgentOpenaiAccountConnection] run_do_not_call_detection: typing.Optional[bool] + llm_temperature: typing.Optional[float] def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} diff --git a/src/vocode/types/normalized_call.py b/src/vocode/types/normalized_call.py index d816f77..6054820 100644 --- a/src/vocode/types/normalized_call.py +++ b/src/vocode/types/normalized_call.py @@ -42,6 +42,7 @@ class NormalizedCall(pydantic.BaseModel): context: typing.Optional[typing.Dict[str, str]] run_do_not_call_detection: typing.Optional[bool] telephony_account_connection: typing.Optional[NormalizedCallTelephonyAccountConnection] + telephony_params: typing.Optional[typing.Dict[str, str]] def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} diff --git a/src/vocode/types/normalized_call_stage_outcome.py b/src/vocode/types/normalized_call_stage_outcome.py index d31c4f8..c3395cc 100644 --- a/src/vocode/types/normalized_call_stage_outcome.py +++ b/src/vocode/types/normalized_call_stage_outcome.py @@ -8,6 +8,7 @@ class NormalizedCallStageOutcome(str, enum.Enum): HUMAN_UNANSWERED = "human_unanswered" + CALL_DID_NOT_CONNECT = "call_did_not_connect" HUMAN_DISCONNECTED = "human_disconnected" BOT_DISCONNECTED = "bot_disconnected" TRANSFER_UNANSWERED = "transfer_unanswered" @@ -16,6 +17,7 @@ class NormalizedCallStageOutcome(str, enum.Enum): def visit( self, human_unanswered: typing.Callable[[], T_Result], + call_did_not_connect: typing.Callable[[], T_Result], human_disconnected: typing.Callable[[], T_Result], bot_disconnected: typing.Callable[[], T_Result], transfer_unanswered: typing.Callable[[], T_Result], @@ -23,6 +25,8 @@ def visit( ) -> T_Result: if self is NormalizedCallStageOutcome.HUMAN_UNANSWERED: return human_unanswered() + if self is NormalizedCallStageOutcome.CALL_DID_NOT_CONNECT: + return call_did_not_connect() if self is NormalizedCallStageOutcome.HUMAN_DISCONNECTED: return human_disconnected() if self is NormalizedCallStageOutcome.BOT_DISCONNECTED: diff --git a/src/vocode/types/play_ht_voice.py b/src/vocode/types/play_ht_voice.py index bc5576f..33f9c19 100644 --- a/src/vocode/types/play_ht_voice.py +++ b/src/vocode/types/play_ht_voice.py @@ -23,6 +23,10 @@ class PlayHtVoice(pydantic.BaseModel): speed: typing.Optional[float] quality: typing.Optional[PlayHtVoiceQuality] temperature: typing.Optional[float] + top_p: typing.Optional[float] + text_guidance: typing.Optional[float] + voice_guidance: typing.Optional[float] + experimental_remove_silence: typing.Optional[bool] def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} diff --git a/src/vocode/types/play_ht_voice_update_params_experimental_remove_silence.py b/src/vocode/types/play_ht_voice_update_params_experimental_remove_silence.py new file mode 100644 index 0000000..f4747ee --- /dev/null +++ b/src/vocode/types/play_ht_voice_update_params_experimental_remove_silence.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .undefined import Undefined + +PlayHtVoiceUpdateParamsExperimentalRemoveSilence = typing.Union[bool, Undefined] diff --git a/src/vocode/types/play_ht_voice_update_params_text_guidance.py b/src/vocode/types/play_ht_voice_update_params_text_guidance.py new file mode 100644 index 0000000..bc5cf27 --- /dev/null +++ b/src/vocode/types/play_ht_voice_update_params_text_guidance.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .undefined import Undefined + +PlayHtVoiceUpdateParamsTextGuidance = typing.Union[float, Undefined] diff --git a/src/vocode/types/play_ht_voice_update_params_top_p.py b/src/vocode/types/play_ht_voice_update_params_top_p.py new file mode 100644 index 0000000..cc356a6 --- /dev/null +++ b/src/vocode/types/play_ht_voice_update_params_top_p.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .undefined import Undefined + +PlayHtVoiceUpdateParamsTopP = typing.Union[float, Undefined] diff --git a/src/vocode/types/play_ht_voice_update_params_voice_guidance.py b/src/vocode/types/play_ht_voice_update_params_voice_guidance.py new file mode 100644 index 0000000..37277c8 --- /dev/null +++ b/src/vocode/types/play_ht_voice_update_params_voice_guidance.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .undefined import Undefined + +PlayHtVoiceUpdateParamsVoiceGuidance = typing.Union[float, Undefined]