diff --git a/.release-please-manifest.json b/.release-please-manifest.json index c9071251..3bb35cb9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "5.40.0" + ".": "5.41.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 6b613698..2046a177 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 76 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/retell/retell-356ae1b31c09ea2eaf1c24a93ff146e80880922a019050d6e0b6f3af2a59f565.yml +configured_endpoints: 78 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/retell/retell-adebb862ab8e9696e1ddf4d31eca1083463b0c0f394beac34fdd68b1eda50692.yml openapi_spec_hash: 0b21f22e97c2740d2402c697d933dbd7 -config_hash: 563668cc30bc4847932ba265108c000c +config_hash: c623d861855875b89ec85b087daf7f22 diff --git a/CHANGELOG.md b/CHANGELOG.md index 70f3a78f..ffc77fc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 5.41.0 (2026-05-21) + +Full Changelog: [v5.40.0...v5.41.0](https://github.com/RetellAI/retell-python-sdk/compare/v5.40.0...v5.41.0) + +### Features + +* **api:** api update ([bac6318](https://github.com/RetellAI/retell-python-sdk/commit/bac63189e8fc23dc646e5922fe239849eb1dd57f)) + ## 5.40.0 (2026-05-18) Full Changelog: [v5.39.1...v5.40.0](https://github.com/RetellAI/retell-python-sdk/compare/v5.39.1...v5.40.0) diff --git a/api.md b/api.md index 88c28c53..9073cb85 100644 --- a/api.md +++ b/api.md @@ -58,7 +58,12 @@ Methods: Types: ```python -from retell.types import AgentResponse, AgentListResponse, AgentGetVersionsResponse +from retell.types import ( + AgentResponse, + AgentListResponse, + AgentCreateVersionResponse, + AgentGetVersionsResponse, +) ``` Methods: @@ -68,6 +73,8 @@ Methods: - client.agent.update(agent_id, \*\*params) -> AgentResponse - client.agent.list(\*\*params) -> AgentListResponse - client.agent.delete(agent_id) -> None +- client.agent.create_version(agent_id, \*\*params) -> AgentCreateVersionResponse +- client.agent.delete_version(agent_id, \*\*params) -> None - client.agent.get_versions(agent_id) -> AgentGetVersionsResponse - client.agent.publish(agent_id, \*\*params) -> None @@ -76,7 +83,12 @@ Methods: Types: ```python -from retell.types import ChatAgentResponse, ChatAgentListResponse, ChatAgentGetVersionsResponse +from retell.types import ( + ChatAgentResponse, + ChatAgentListResponse, + ChatAgentCreateVersionResponse, + ChatAgentGetVersionsResponse, +) ``` Methods: @@ -86,6 +98,8 @@ Methods: - client.chat_agent.update(agent_id, \*\*params) -> ChatAgentResponse - client.chat_agent.list(\*\*params) -> ChatAgentListResponse - client.chat_agent.delete(agent_id) -> None +- client.chat_agent.create_version(agent_id, \*\*params) -> ChatAgentCreateVersionResponse +- client.chat_agent.delete_version(agent_id, \*\*params) -> None - client.chat_agent.get_versions(agent_id) -> ChatAgentGetVersionsResponse - client.chat_agent.publish(agent_id, \*\*params) -> None diff --git a/pyproject.toml b/pyproject.toml index 6049ff72..71adb380 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "retell-sdk" -version = "5.40.0" +version = "5.41.0" description = "The official Python library for the retell API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/retell/_version.py b/src/retell/_version.py index 6f7f2ba4..f43a4665 100644 --- a/src/retell/_version.py +++ b/src/retell/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "retell" -__version__ = "5.40.0" # x-release-please-version +__version__ = "5.41.0" # x-release-please-version diff --git a/src/retell/resources/agent.py b/src/retell/resources/agent.py index a4dbefc9..84043b0f 100644 --- a/src/retell/resources/agent.py +++ b/src/retell/resources/agent.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import List, Union, Iterable, Optional +from typing import Any, List, Union, Iterable, Optional, cast from typing_extensions import Literal import httpx @@ -13,6 +13,8 @@ agent_update_params, agent_publish_params, agent_retrieve_params, + agent_create_version_params, + agent_delete_version_params, ) from .._types import Body, Omit, Query, Headers, NoneType, NotGiven, SequenceNotStr, omit, not_given from .._utils import path_template, maybe_transform, async_maybe_transform @@ -28,6 +30,7 @@ from ..types.agent_response import AgentResponse from ..types.agent_list_response import AgentListResponse from ..types.agent_get_versions_response import AgentGetVersionsResponse +from ..types.agent_create_version_response import AgentCreateVersionResponse __all__ = ["AgentResource", "AsyncAgentResource"] @@ -1360,6 +1363,91 @@ def delete( cast_to=NoneType, ) + def create_version( + self, + agent_id: str, + *, + base_version: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> AgentCreateVersionResponse: + """ + Create a new draft agent version from a base version. + + Args: + base_version: Existing version used as the base when creating a new draft. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not agent_id: + raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}") + return cast( + AgentCreateVersionResponse, + self._post( + path_template("/create-agent-version/{agent_id}", agent_id=agent_id), + body=maybe_transform( + {"base_version": base_version}, agent_create_version_params.AgentCreateVersionParams + ), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=cast( + Any, AgentCreateVersionResponse + ), # Union types cannot be passed in as arguments in the type system + ), + ) + + def delete_version( + self, + agent_id: str, + *, + version: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> None: + """ + Delete a specific agent version. + + Args: + version: Version to delete. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not agent_id: + raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}") + extra_headers = {"Accept": "*/*", **(extra_headers or {})} + return self._delete( + path_template("/delete-agent-version/{agent_id}", agent_id=agent_id), + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + query=maybe_transform({"version": version}, agent_delete_version_params.AgentDeleteVersionParams), + ), + cast_to=NoneType, + ) + def get_versions( self, agent_id: str, @@ -2765,6 +2853,93 @@ async def delete( cast_to=NoneType, ) + async def create_version( + self, + agent_id: str, + *, + base_version: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> AgentCreateVersionResponse: + """ + Create a new draft agent version from a base version. + + Args: + base_version: Existing version used as the base when creating a new draft. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not agent_id: + raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}") + return cast( + AgentCreateVersionResponse, + await self._post( + path_template("/create-agent-version/{agent_id}", agent_id=agent_id), + body=await async_maybe_transform( + {"base_version": base_version}, agent_create_version_params.AgentCreateVersionParams + ), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=cast( + Any, AgentCreateVersionResponse + ), # Union types cannot be passed in as arguments in the type system + ), + ) + + async def delete_version( + self, + agent_id: str, + *, + version: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> None: + """ + Delete a specific agent version. + + Args: + version: Version to delete. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not agent_id: + raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}") + extra_headers = {"Accept": "*/*", **(extra_headers or {})} + return await self._delete( + path_template("/delete-agent-version/{agent_id}", agent_id=agent_id), + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + query=await async_maybe_transform( + {"version": version}, agent_delete_version_params.AgentDeleteVersionParams + ), + ), + cast_to=NoneType, + ) + async def get_versions( self, agent_id: str, @@ -2861,6 +3036,12 @@ def __init__(self, agent: AgentResource) -> None: self.delete = to_raw_response_wrapper( agent.delete, ) + self.create_version = to_raw_response_wrapper( + agent.create_version, + ) + self.delete_version = to_raw_response_wrapper( + agent.delete_version, + ) self.get_versions = to_raw_response_wrapper( agent.get_versions, ) @@ -2888,6 +3069,12 @@ def __init__(self, agent: AsyncAgentResource) -> None: self.delete = async_to_raw_response_wrapper( agent.delete, ) + self.create_version = async_to_raw_response_wrapper( + agent.create_version, + ) + self.delete_version = async_to_raw_response_wrapper( + agent.delete_version, + ) self.get_versions = async_to_raw_response_wrapper( agent.get_versions, ) @@ -2915,6 +3102,12 @@ def __init__(self, agent: AgentResource) -> None: self.delete = to_streamed_response_wrapper( agent.delete, ) + self.create_version = to_streamed_response_wrapper( + agent.create_version, + ) + self.delete_version = to_streamed_response_wrapper( + agent.delete_version, + ) self.get_versions = to_streamed_response_wrapper( agent.get_versions, ) @@ -2942,6 +3135,12 @@ def __init__(self, agent: AsyncAgentResource) -> None: self.delete = async_to_streamed_response_wrapper( agent.delete, ) + self.create_version = async_to_streamed_response_wrapper( + agent.create_version, + ) + self.delete_version = async_to_streamed_response_wrapper( + agent.delete_version, + ) self.get_versions = async_to_streamed_response_wrapper( agent.get_versions, ) diff --git a/src/retell/resources/chat_agent.py b/src/retell/resources/chat_agent.py index 53845b27..395dd9cb 100644 --- a/src/retell/resources/chat_agent.py +++ b/src/retell/resources/chat_agent.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import List, Union, Iterable, Optional +from typing import Any, List, Union, Iterable, Optional, cast from typing_extensions import Literal import httpx @@ -13,6 +13,8 @@ chat_agent_update_params, chat_agent_publish_params, chat_agent_retrieve_params, + chat_agent_create_version_params, + chat_agent_delete_version_params, ) from .._types import Body, Omit, Query, Headers, NoneType, NotGiven, omit, not_given from .._utils import path_template, maybe_transform, async_maybe_transform @@ -28,6 +30,7 @@ from ..types.chat_agent_response import ChatAgentResponse from ..types.chat_agent_list_response import ChatAgentListResponse from ..types.chat_agent_get_versions_response import ChatAgentGetVersionsResponse +from ..types.chat_agent_create_version_response import ChatAgentCreateVersionResponse __all__ = ["ChatAgentResource", "AsyncChatAgentResource"] @@ -814,6 +817,93 @@ def delete( cast_to=NoneType, ) + def create_version( + self, + agent_id: str, + *, + base_version: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> ChatAgentCreateVersionResponse: + """ + Create a new draft agent version from a base version. + + Args: + base_version: Existing version used as the base when creating a new draft. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not agent_id: + raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}") + return cast( + ChatAgentCreateVersionResponse, + self._post( + path_template("/create-agent-version/{agent_id}", agent_id=agent_id), + body=maybe_transform( + {"base_version": base_version}, chat_agent_create_version_params.ChatAgentCreateVersionParams + ), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=cast( + Any, ChatAgentCreateVersionResponse + ), # Union types cannot be passed in as arguments in the type system + ), + ) + + def delete_version( + self, + agent_id: str, + *, + version: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> None: + """ + Delete a specific agent version. + + Args: + version: Version to delete. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not agent_id: + raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}") + extra_headers = {"Accept": "*/*", **(extra_headers or {})} + return self._delete( + path_template("/delete-agent-version/{agent_id}", agent_id=agent_id), + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + query=maybe_transform( + {"version": version}, chat_agent_delete_version_params.ChatAgentDeleteVersionParams + ), + ), + cast_to=NoneType, + ) + def get_versions( self, agent_id: str, @@ -1675,6 +1765,93 @@ async def delete( cast_to=NoneType, ) + async def create_version( + self, + agent_id: str, + *, + base_version: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> ChatAgentCreateVersionResponse: + """ + Create a new draft agent version from a base version. + + Args: + base_version: Existing version used as the base when creating a new draft. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not agent_id: + raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}") + return cast( + ChatAgentCreateVersionResponse, + await self._post( + path_template("/create-agent-version/{agent_id}", agent_id=agent_id), + body=await async_maybe_transform( + {"base_version": base_version}, chat_agent_create_version_params.ChatAgentCreateVersionParams + ), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=cast( + Any, ChatAgentCreateVersionResponse + ), # Union types cannot be passed in as arguments in the type system + ), + ) + + async def delete_version( + self, + agent_id: str, + *, + version: int, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = not_given, + ) -> None: + """ + Delete a specific agent version. + + Args: + version: Version to delete. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + if not agent_id: + raise ValueError(f"Expected a non-empty value for `agent_id` but received {agent_id!r}") + extra_headers = {"Accept": "*/*", **(extra_headers or {})} + return await self._delete( + path_template("/delete-agent-version/{agent_id}", agent_id=agent_id), + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + query=await async_maybe_transform( + {"version": version}, chat_agent_delete_version_params.ChatAgentDeleteVersionParams + ), + ), + cast_to=NoneType, + ) + async def get_versions( self, agent_id: str, @@ -1771,6 +1948,12 @@ def __init__(self, chat_agent: ChatAgentResource) -> None: self.delete = to_raw_response_wrapper( chat_agent.delete, ) + self.create_version = to_raw_response_wrapper( + chat_agent.create_version, + ) + self.delete_version = to_raw_response_wrapper( + chat_agent.delete_version, + ) self.get_versions = to_raw_response_wrapper( chat_agent.get_versions, ) @@ -1798,6 +1981,12 @@ def __init__(self, chat_agent: AsyncChatAgentResource) -> None: self.delete = async_to_raw_response_wrapper( chat_agent.delete, ) + self.create_version = async_to_raw_response_wrapper( + chat_agent.create_version, + ) + self.delete_version = async_to_raw_response_wrapper( + chat_agent.delete_version, + ) self.get_versions = async_to_raw_response_wrapper( chat_agent.get_versions, ) @@ -1825,6 +2014,12 @@ def __init__(self, chat_agent: ChatAgentResource) -> None: self.delete = to_streamed_response_wrapper( chat_agent.delete, ) + self.create_version = to_streamed_response_wrapper( + chat_agent.create_version, + ) + self.delete_version = to_streamed_response_wrapper( + chat_agent.delete_version, + ) self.get_versions = to_streamed_response_wrapper( chat_agent.get_versions, ) @@ -1852,6 +2047,12 @@ def __init__(self, chat_agent: AsyncChatAgentResource) -> None: self.delete = async_to_streamed_response_wrapper( chat_agent.delete, ) + self.create_version = async_to_streamed_response_wrapper( + chat_agent.create_version, + ) + self.delete_version = async_to_streamed_response_wrapper( + chat_agent.delete_version, + ) self.get_versions = async_to_streamed_response_wrapper( chat_agent.get_versions, ) diff --git a/src/retell/types/__init__.py b/src/retell/types/__init__.py index 711358b4..2d6232db 100644 --- a/src/retell/types/__init__.py +++ b/src/retell/types/__init__.py @@ -53,6 +53,8 @@ from .phone_number_list_response import PhoneNumberListResponse as PhoneNumberListResponse from .phone_number_update_params import PhoneNumberUpdateParams as PhoneNumberUpdateParams from .test_list_test_runs_params import TestListTestRunsParams as TestListTestRunsParams +from .agent_create_version_params import AgentCreateVersionParams as AgentCreateVersionParams +from .agent_delete_version_params import AgentDeleteVersionParams as AgentDeleteVersionParams from .agent_get_versions_response import AgentGetVersionsResponse as AgentGetVersionsResponse from .call_create_web_call_params import CallCreateWebCallParams as CallCreateWebCallParams from .chat_create_sms_chat_params import ChatCreateSMSChatParams as ChatCreateSMSChatParams @@ -62,6 +64,7 @@ from .playground_completion_params import PlaygroundCompletionParams as PlaygroundCompletionParams from .test_list_batch_tests_params import TestListBatchTestsParams as TestListBatchTestsParams from .test_list_test_runs_response import TestListTestRunsResponse as TestListTestRunsResponse +from .agent_create_version_response import AgentCreateVersionResponse as AgentCreateVersionResponse from .call_create_phone_call_params import CallCreatePhoneCallParams as CallCreatePhoneCallParams from .concurrency_retrieve_response import ConcurrencyRetrieveResponse as ConcurrencyRetrieveResponse from .conversation_flow_list_params import ConversationFlowListParams as ConversationFlowListParams @@ -75,9 +78,12 @@ from .conversation_flow_list_response import ConversationFlowListResponse as ConversationFlowListResponse from .conversation_flow_update_params import ConversationFlowUpdateParams as ConversationFlowUpdateParams from .mcp_tool_get_mcp_tools_response import McpToolGetMcpToolsResponse as McpToolGetMcpToolsResponse +from .chat_agent_create_version_params import ChatAgentCreateVersionParams as ChatAgentCreateVersionParams +from .chat_agent_delete_version_params import ChatAgentDeleteVersionParams as ChatAgentDeleteVersionParams from .chat_agent_get_versions_response import ChatAgentGetVersionsResponse as ChatAgentGetVersionsResponse from .conversation_flow_retrieve_params import ConversationFlowRetrieveParams as ConversationFlowRetrieveParams from .knowledge_base_add_sources_params import KnowledgeBaseAddSourcesParams as KnowledgeBaseAddSourcesParams +from .chat_agent_create_version_response import ChatAgentCreateVersionResponse as ChatAgentCreateVersionResponse from .chat_create_chat_completion_params import ChatCreateChatCompletionParams as ChatCreateChatCompletionParams from .batch_call_create_batch_call_params import BatchCallCreateBatchCallParams as BatchCallCreateBatchCallParams from .chat_create_chat_completion_response import ChatCreateChatCompletionResponse as ChatCreateChatCompletionResponse diff --git a/src/retell/types/agent_create_version_params.py b/src/retell/types/agent_create_version_params.py new file mode 100644 index 00000000..86388f83 --- /dev/null +++ b/src/retell/types/agent_create_version_params.py @@ -0,0 +1,12 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing_extensions import Required, TypedDict + +__all__ = ["AgentCreateVersionParams"] + + +class AgentCreateVersionParams(TypedDict, total=False): + base_version: Required[int] + """Existing version used as the base when creating a new draft.""" diff --git a/src/retell/types/agent_create_version_response.py b/src/retell/types/agent_create_version_response.py new file mode 100644 index 00000000..9cd4286a --- /dev/null +++ b/src/retell/types/agent_create_version_response.py @@ -0,0 +1,11 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Union +from typing_extensions import TypeAlias + +from .agent_response import AgentResponse +from .chat_agent_response import ChatAgentResponse + +__all__ = ["AgentCreateVersionResponse"] + +AgentCreateVersionResponse: TypeAlias = Union[AgentResponse, ChatAgentResponse] diff --git a/src/retell/types/agent_delete_version_params.py b/src/retell/types/agent_delete_version_params.py new file mode 100644 index 00000000..3857e293 --- /dev/null +++ b/src/retell/types/agent_delete_version_params.py @@ -0,0 +1,12 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing_extensions import Required, TypedDict + +__all__ = ["AgentDeleteVersionParams"] + + +class AgentDeleteVersionParams(TypedDict, total=False): + version: Required[int] + """Version to delete.""" diff --git a/src/retell/types/chat_agent_create_version_params.py b/src/retell/types/chat_agent_create_version_params.py new file mode 100644 index 00000000..942e0839 --- /dev/null +++ b/src/retell/types/chat_agent_create_version_params.py @@ -0,0 +1,12 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing_extensions import Required, TypedDict + +__all__ = ["ChatAgentCreateVersionParams"] + + +class ChatAgentCreateVersionParams(TypedDict, total=False): + base_version: Required[int] + """Existing version used as the base when creating a new draft.""" diff --git a/src/retell/types/chat_agent_create_version_response.py b/src/retell/types/chat_agent_create_version_response.py new file mode 100644 index 00000000..0fddeda4 --- /dev/null +++ b/src/retell/types/chat_agent_create_version_response.py @@ -0,0 +1,11 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Union +from typing_extensions import TypeAlias + +from .agent_response import AgentResponse +from .chat_agent_response import ChatAgentResponse + +__all__ = ["ChatAgentCreateVersionResponse"] + +ChatAgentCreateVersionResponse: TypeAlias = Union[AgentResponse, ChatAgentResponse] diff --git a/src/retell/types/chat_agent_delete_version_params.py b/src/retell/types/chat_agent_delete_version_params.py new file mode 100644 index 00000000..a9a7fe96 --- /dev/null +++ b/src/retell/types/chat_agent_delete_version_params.py @@ -0,0 +1,12 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing_extensions import Required, TypedDict + +__all__ = ["ChatAgentDeleteVersionParams"] + + +class ChatAgentDeleteVersionParams(TypedDict, total=False): + version: Required[int] + """Version to delete.""" diff --git a/tests/api_resources/test_agent.py b/tests/api_resources/test_agent.py index 8d060ebe..f2bf5eb1 100644 --- a/tests/api_resources/test_agent.py +++ b/tests/api_resources/test_agent.py @@ -13,6 +13,7 @@ AgentResponse, AgentListResponse, AgentGetVersionsResponse, + AgentCreateVersionResponse, ) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -477,6 +478,98 @@ def test_path_params_delete(self, client: Retell) -> None: "", ) + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_create_version(self, client: Retell) -> None: + agent = client.agent.create_version( + agent_id="agent_xxx", + base_version=12, + ) + assert_matches_type(AgentCreateVersionResponse, agent, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_raw_response_create_version(self, client: Retell) -> None: + response = client.agent.with_raw_response.create_version( + agent_id="agent_xxx", + base_version=12, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + agent = response.parse() + assert_matches_type(AgentCreateVersionResponse, agent, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_streaming_response_create_version(self, client: Retell) -> None: + with client.agent.with_streaming_response.create_version( + agent_id="agent_xxx", + base_version=12, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + agent = response.parse() + assert_matches_type(AgentCreateVersionResponse, agent, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_path_params_create_version(self, client: Retell) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `agent_id` but received ''"): + client.agent.with_raw_response.create_version( + agent_id="", + base_version=12, + ) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_delete_version(self, client: Retell) -> None: + agent = client.agent.delete_version( + agent_id="agent_xxx", + version=1, + ) + assert agent is None + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_raw_response_delete_version(self, client: Retell) -> None: + response = client.agent.with_raw_response.delete_version( + agent_id="agent_xxx", + version=1, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + agent = response.parse() + assert agent is None + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_streaming_response_delete_version(self, client: Retell) -> None: + with client.agent.with_streaming_response.delete_version( + agent_id="agent_xxx", + version=1, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + agent = response.parse() + assert agent is None + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_path_params_delete_version(self, client: Retell) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `agent_id` but received ''"): + client.agent.with_raw_response.delete_version( + agent_id="", + version=1, + ) + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_get_versions(self, client: Retell) -> None: @@ -1037,6 +1130,98 @@ async def test_path_params_delete(self, async_client: AsyncRetell) -> None: "", ) + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_create_version(self, async_client: AsyncRetell) -> None: + agent = await async_client.agent.create_version( + agent_id="agent_xxx", + base_version=12, + ) + assert_matches_type(AgentCreateVersionResponse, agent, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_raw_response_create_version(self, async_client: AsyncRetell) -> None: + response = await async_client.agent.with_raw_response.create_version( + agent_id="agent_xxx", + base_version=12, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + agent = await response.parse() + assert_matches_type(AgentCreateVersionResponse, agent, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_streaming_response_create_version(self, async_client: AsyncRetell) -> None: + async with async_client.agent.with_streaming_response.create_version( + agent_id="agent_xxx", + base_version=12, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + agent = await response.parse() + assert_matches_type(AgentCreateVersionResponse, agent, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_path_params_create_version(self, async_client: AsyncRetell) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `agent_id` but received ''"): + await async_client.agent.with_raw_response.create_version( + agent_id="", + base_version=12, + ) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_delete_version(self, async_client: AsyncRetell) -> None: + agent = await async_client.agent.delete_version( + agent_id="agent_xxx", + version=1, + ) + assert agent is None + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_raw_response_delete_version(self, async_client: AsyncRetell) -> None: + response = await async_client.agent.with_raw_response.delete_version( + agent_id="agent_xxx", + version=1, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + agent = await response.parse() + assert agent is None + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_streaming_response_delete_version(self, async_client: AsyncRetell) -> None: + async with async_client.agent.with_streaming_response.delete_version( + agent_id="agent_xxx", + version=1, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + agent = await response.parse() + assert agent is None + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_path_params_delete_version(self, async_client: AsyncRetell) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `agent_id` but received ''"): + await async_client.agent.with_raw_response.delete_version( + agent_id="", + version=1, + ) + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_get_versions(self, async_client: AsyncRetell) -> None: diff --git a/tests/api_resources/test_chat_agent.py b/tests/api_resources/test_chat_agent.py index 7c987ecb..7618a953 100644 --- a/tests/api_resources/test_chat_agent.py +++ b/tests/api_resources/test_chat_agent.py @@ -13,6 +13,7 @@ ChatAgentResponse, ChatAgentListResponse, ChatAgentGetVersionsResponse, + ChatAgentCreateVersionResponse, ) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -344,6 +345,98 @@ def test_path_params_delete(self, client: Retell) -> None: "", ) + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_create_version(self, client: Retell) -> None: + chat_agent = client.chat_agent.create_version( + agent_id="agent_xxx", + base_version=12, + ) + assert_matches_type(ChatAgentCreateVersionResponse, chat_agent, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_raw_response_create_version(self, client: Retell) -> None: + response = client.chat_agent.with_raw_response.create_version( + agent_id="agent_xxx", + base_version=12, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + chat_agent = response.parse() + assert_matches_type(ChatAgentCreateVersionResponse, chat_agent, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_streaming_response_create_version(self, client: Retell) -> None: + with client.chat_agent.with_streaming_response.create_version( + agent_id="agent_xxx", + base_version=12, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + chat_agent = response.parse() + assert_matches_type(ChatAgentCreateVersionResponse, chat_agent, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_path_params_create_version(self, client: Retell) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `agent_id` but received ''"): + client.chat_agent.with_raw_response.create_version( + agent_id="", + base_version=12, + ) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_delete_version(self, client: Retell) -> None: + chat_agent = client.chat_agent.delete_version( + agent_id="agent_xxx", + version=1, + ) + assert chat_agent is None + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_raw_response_delete_version(self, client: Retell) -> None: + response = client.chat_agent.with_raw_response.delete_version( + agent_id="agent_xxx", + version=1, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + chat_agent = response.parse() + assert chat_agent is None + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_streaming_response_delete_version(self, client: Retell) -> None: + with client.chat_agent.with_streaming_response.delete_version( + agent_id="agent_xxx", + version=1, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + chat_agent = response.parse() + assert chat_agent is None + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_path_params_delete_version(self, client: Retell) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `agent_id` but received ''"): + client.chat_agent.with_raw_response.delete_version( + agent_id="", + version=1, + ) + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_get_versions(self, client: Retell) -> None: @@ -771,6 +864,98 @@ async def test_path_params_delete(self, async_client: AsyncRetell) -> None: "", ) + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_create_version(self, async_client: AsyncRetell) -> None: + chat_agent = await async_client.chat_agent.create_version( + agent_id="agent_xxx", + base_version=12, + ) + assert_matches_type(ChatAgentCreateVersionResponse, chat_agent, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_raw_response_create_version(self, async_client: AsyncRetell) -> None: + response = await async_client.chat_agent.with_raw_response.create_version( + agent_id="agent_xxx", + base_version=12, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + chat_agent = await response.parse() + assert_matches_type(ChatAgentCreateVersionResponse, chat_agent, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_streaming_response_create_version(self, async_client: AsyncRetell) -> None: + async with async_client.chat_agent.with_streaming_response.create_version( + agent_id="agent_xxx", + base_version=12, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + chat_agent = await response.parse() + assert_matches_type(ChatAgentCreateVersionResponse, chat_agent, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_path_params_create_version(self, async_client: AsyncRetell) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `agent_id` but received ''"): + await async_client.chat_agent.with_raw_response.create_version( + agent_id="", + base_version=12, + ) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_delete_version(self, async_client: AsyncRetell) -> None: + chat_agent = await async_client.chat_agent.delete_version( + agent_id="agent_xxx", + version=1, + ) + assert chat_agent is None + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_raw_response_delete_version(self, async_client: AsyncRetell) -> None: + response = await async_client.chat_agent.with_raw_response.delete_version( + agent_id="agent_xxx", + version=1, + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + chat_agent = await response.parse() + assert chat_agent is None + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_streaming_response_delete_version(self, async_client: AsyncRetell) -> None: + async with async_client.chat_agent.with_streaming_response.delete_version( + agent_id="agent_xxx", + version=1, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + chat_agent = await response.parse() + assert chat_agent is None + + assert cast(Any, response.is_closed) is True + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_path_params_delete_version(self, async_client: AsyncRetell) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `agent_id` but received ''"): + await async_client.chat_agent.with_raw_response.delete_version( + agent_id="", + version=1, + ) + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_get_versions(self, async_client: AsyncRetell) -> None: