# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # pyformat: disable """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from . import errors, models, types, utils from ._hooks import AfterParseErrorContext, HookContext, ResponseContext from .basesdk import AsyncBaseSDK, BaseSDK from .types import OptionalNullable, UNSET, agents, interactions from .types.agents import agent as agents_agent, agenttool as agents_agenttool from .utils import get_security_from_env, response_helpers from .utils.unmarshal_json_response import unmarshal_json_response import httpx from typing import Any, Iterable, List, Mapping, Optional, Union, cast class Agents(BaseSDK): @property def with_raw_response(self): return AgentsWithRawResponse(self) @property def with_streaming_response(self): return AgentsWithStreamingResponse(self) def create( self, *, api_version: Optional[str] = None, id: Optional[str] = None, base_agent: Optional[str] = None, system_instruction: Optional[str] = None, description: Optional[str] = None, tools: Optional[ Union[ Iterable[agents_agenttool.AgentTool], Iterable[agents_agenttool.AgentToolParam], ] ] = None, base_environment: Optional[ Union[agents_agent.BaseEnvironment, agents_agent.BaseEnvironmentParam] ] = None, extra_headers: Optional[Mapping[str, str]] = None, extra_query: Optional[Mapping[str, Any]] = None, extra_body: Optional[Mapping[str, Any]] = None, timeout: Optional[Union[float, httpx.Timeout]] = None, ) -> agents.Agent: r"""Creates a new Agent (Typed version for SDK). :param api_version: Which version of the API to use. :param id: The unique identifier for the agent. :param base_agent: The base agent to extend. :param system_instruction: System instruction for the agent. :param description: Agent description for developers to quickly read and understand. :param tools: The tools available to the agent. :param base_environment: The environment configuration for the agent. :param extra_headers: Additional headers to set or replace on requests. :param extra_query: Additional query parameters to append to requests. :param extra_body: Additional JSON object fields to merge into request bodies. :param timeout: Override the default request timeout configuration for this method in seconds """ base_url = None url_variables = None retries: OptionalNullable[utils.RetryConfig] = UNSET server_url = None http_headers = extra_headers timeout_ms = self._coerce_timeout_ms(timeout) if timeout_ms is None: timeout_ms = self.sdk_configuration.timeout_ms if server_url is not None: base_url = server_url else: base_url = self._get_url(base_url, url_variables) request = models.CreateAgentRequest( api_version=api_version, body=agents.Agent( id=id, base_agent=base_agent, system_instruction=system_instruction, description=description, tools=utils.get_pydantic_model(tools, Optional[List[agents.AgentTool]]), base_environment=utils.get_pydantic_model( base_environment, Optional[agents.BaseEnvironment] ), ), ) _speakeasy_response_mode, http_headers = response_helpers.consume_response_mode( http_headers ) req = self._build_request( method="POST", path="/{api_version}/agents", base_url=base_url, url_variables=url_variables, request=request, request_body_required=True, request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, extra_query_params=extra_query, _globals=models.CreateAgentGlobals( api_version=self.sdk_configuration.globals.api_version, ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( request.body, False, False, "json", agents.Agent, extra_body=extra_body ), allow_empty_value=None, timeout_ms=timeout_ms, ) if retries == UNSET: if self.sdk_configuration.retry_config is not UNSET: retries = self.sdk_configuration.retry_config else: retries = utils.RetryConfig( "attempt-count-backoff", utils.BackoffStrategy(500, 8000, 2, 30000), True, max_retries=4, ) retry_config = None if isinstance(retries, utils.RetryConfig): retry_config = (retries, ["408", "409", "429", "5XX"]) def _speakeasy_parse_response(http_res): if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "5XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "default", "application/json"): return unmarshal_json_response(agents.Agent, http_res, validate=False) raise errors.GenAiDefaultError("Unexpected response received", http_res) _speakeasy_hook_ctx = HookContext( config=self.sdk_configuration, base_url=base_url or "", operation_id="CreateAgent", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, types.Security ), response=ResponseContext(mode=_speakeasy_response_mode, execution="sync"), ) http_res = self.do_request( hook_ctx=_speakeasy_hook_ctx, request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=_speakeasy_response_mode == "streaming", retry_config=retry_config, ) if _speakeasy_response_mode != "parsed": _speakeasy_response_cls = ( response_helpers.StreamedAPIResponse if _speakeasy_response_mode == "streaming" else response_helpers.APIResponse ) return cast( Any, _speakeasy_response_cls( raw=http_res, parser=_speakeasy_parse_response, mode="buffered", client_ref=self, hook_ctx=AfterParseErrorContext(_speakeasy_hook_ctx), hooks=self.sdk_configuration.__dict__.get("_hooks"), ), ) try: return _speakeasy_parse_response(http_res) except Exception as parse_exc_: response_helpers.raise_parse_error( self.sdk_configuration.__dict__["_hooks"], AfterParseErrorContext(_speakeasy_hook_ctx), http_res, parse_exc_, ) def list( self, *, api_version: Optional[str] = None, page_size: Optional[int] = None, page_token: Optional[str] = None, parent: Optional[str] = None, extra_headers: Optional[Mapping[str, str]] = None, extra_query: Optional[Mapping[str, Any]] = None, timeout: Optional[Union[float, httpx.Timeout]] = None, ) -> agents.AgentListResponse: r"""Lists all Agents. :param api_version: Which version of the API to use. :param page_size: :param page_token: :param parent: :param extra_headers: Additional headers to set or replace on requests. :param extra_query: Additional query parameters to append to requests. :param timeout: Override the default request timeout configuration for this method in seconds """ base_url = None url_variables = None retries: OptionalNullable[utils.RetryConfig] = UNSET server_url = None http_headers = extra_headers timeout_ms = self._coerce_timeout_ms(timeout) if timeout_ms is None: timeout_ms = self.sdk_configuration.timeout_ms if server_url is not None: base_url = server_url else: base_url = self._get_url(base_url, url_variables) request = models.ListAgentsRequest( api_version=api_version, page_size=page_size, page_token=page_token, parent=parent, ) _speakeasy_response_mode, http_headers = response_helpers.consume_response_mode( http_headers ) req = self._build_request( method="GET", path="/{api_version}/agents", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, extra_query_params=extra_query, _globals=models.ListAgentsGlobals( api_version=self.sdk_configuration.globals.api_version, ), security=self.sdk_configuration.security, allow_empty_value=None, timeout_ms=timeout_ms, ) if retries == UNSET: if self.sdk_configuration.retry_config is not UNSET: retries = self.sdk_configuration.retry_config else: retries = utils.RetryConfig( "attempt-count-backoff", utils.BackoffStrategy(500, 8000, 2, 30000), True, max_retries=4, ) retry_config = None if isinstance(retries, utils.RetryConfig): retry_config = (retries, ["408", "409", "429", "5XX"]) def _speakeasy_parse_response(http_res): if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "5XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "default", "application/json"): return unmarshal_json_response( agents.AgentListResponse, http_res, validate=False ) raise errors.GenAiDefaultError("Unexpected response received", http_res) _speakeasy_hook_ctx = HookContext( config=self.sdk_configuration, base_url=base_url or "", operation_id="ListAgents", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, types.Security ), response=ResponseContext(mode=_speakeasy_response_mode, execution="sync"), ) http_res = self.do_request( hook_ctx=_speakeasy_hook_ctx, request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=_speakeasy_response_mode == "streaming", retry_config=retry_config, ) if _speakeasy_response_mode != "parsed": _speakeasy_response_cls = ( response_helpers.StreamedAPIResponse if _speakeasy_response_mode == "streaming" else response_helpers.APIResponse ) return cast( Any, _speakeasy_response_cls( raw=http_res, parser=_speakeasy_parse_response, mode="buffered", client_ref=self, hook_ctx=AfterParseErrorContext(_speakeasy_hook_ctx), hooks=self.sdk_configuration.__dict__.get("_hooks"), ), ) try: return _speakeasy_parse_response(http_res) except Exception as parse_exc_: response_helpers.raise_parse_error( self.sdk_configuration.__dict__["_hooks"], AfterParseErrorContext(_speakeasy_hook_ctx), http_res, parse_exc_, ) def get( self, id: str, *, api_version: Optional[str] = None, extra_headers: Optional[Mapping[str, str]] = None, extra_query: Optional[Mapping[str, Any]] = None, timeout: Optional[Union[float, httpx.Timeout]] = None, ) -> agents.Agent: r"""Gets a specific Agent. :param id: :param api_version: Which version of the API to use. :param extra_headers: Additional headers to set or replace on requests. :param extra_query: Additional query parameters to append to requests. :param timeout: Override the default request timeout configuration for this method in seconds """ base_url = None url_variables = None retries: OptionalNullable[utils.RetryConfig] = UNSET server_url = None http_headers = extra_headers timeout_ms = self._coerce_timeout_ms(timeout) if timeout_ms is None: timeout_ms = self.sdk_configuration.timeout_ms if server_url is not None: base_url = server_url else: base_url = self._get_url(base_url, url_variables) request = models.GetAgentRequest( api_version=api_version, id=id, ) _speakeasy_response_mode, http_headers = response_helpers.consume_response_mode( http_headers ) req = self._build_request( method="GET", path="/{api_version}/agents/{id}", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, extra_query_params=extra_query, _globals=models.GetAgentGlobals( api_version=self.sdk_configuration.globals.api_version, ), security=self.sdk_configuration.security, allow_empty_value=None, timeout_ms=timeout_ms, ) if retries == UNSET: if self.sdk_configuration.retry_config is not UNSET: retries = self.sdk_configuration.retry_config else: retries = utils.RetryConfig( "attempt-count-backoff", utils.BackoffStrategy(500, 8000, 2, 30000), True, max_retries=4, ) retry_config = None if isinstance(retries, utils.RetryConfig): retry_config = (retries, ["408", "409", "429", "5XX"]) def _speakeasy_parse_response(http_res): if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "5XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "default", "application/json"): return unmarshal_json_response(agents.Agent, http_res, validate=False) raise errors.GenAiDefaultError("Unexpected response received", http_res) _speakeasy_hook_ctx = HookContext( config=self.sdk_configuration, base_url=base_url or "", operation_id="GetAgent", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, types.Security ), response=ResponseContext(mode=_speakeasy_response_mode, execution="sync"), ) http_res = self.do_request( hook_ctx=_speakeasy_hook_ctx, request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=_speakeasy_response_mode == "streaming", retry_config=retry_config, ) if _speakeasy_response_mode != "parsed": _speakeasy_response_cls = ( response_helpers.StreamedAPIResponse if _speakeasy_response_mode == "streaming" else response_helpers.APIResponse ) return cast( Any, _speakeasy_response_cls( raw=http_res, parser=_speakeasy_parse_response, mode="buffered", client_ref=self, hook_ctx=AfterParseErrorContext(_speakeasy_hook_ctx), hooks=self.sdk_configuration.__dict__.get("_hooks"), ), ) try: return _speakeasy_parse_response(http_res) except Exception as parse_exc_: response_helpers.raise_parse_error( self.sdk_configuration.__dict__["_hooks"], AfterParseErrorContext(_speakeasy_hook_ctx), http_res, parse_exc_, ) def delete( self, id: str, *, api_version: Optional[str] = None, extra_headers: Optional[Mapping[str, str]] = None, extra_query: Optional[Mapping[str, Any]] = None, timeout: Optional[Union[float, httpx.Timeout]] = None, ) -> interactions.Empty: r"""Deletes an Agent. :param id: :param api_version: Which version of the API to use. :param extra_headers: Additional headers to set or replace on requests. :param extra_query: Additional query parameters to append to requests. :param timeout: Override the default request timeout configuration for this method in seconds """ base_url = None url_variables = None retries: OptionalNullable[utils.RetryConfig] = UNSET server_url = None http_headers = extra_headers timeout_ms = self._coerce_timeout_ms(timeout) if timeout_ms is None: timeout_ms = self.sdk_configuration.timeout_ms if server_url is not None: base_url = server_url else: base_url = self._get_url(base_url, url_variables) request = models.DeleteAgentRequest( api_version=api_version, id=id, ) _speakeasy_response_mode, http_headers = response_helpers.consume_response_mode( http_headers ) req = self._build_request( method="DELETE", path="/{api_version}/agents/{id}", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, extra_query_params=extra_query, _globals=models.DeleteAgentGlobals( api_version=self.sdk_configuration.globals.api_version, ), security=self.sdk_configuration.security, allow_empty_value=None, timeout_ms=timeout_ms, ) if retries == UNSET: if self.sdk_configuration.retry_config is not UNSET: retries = self.sdk_configuration.retry_config else: retries = utils.RetryConfig( "attempt-count-backoff", utils.BackoffStrategy(500, 8000, 2, 30000), True, max_retries=4, ) retry_config = None if isinstance(retries, utils.RetryConfig): retry_config = (retries, ["408", "409", "429", "5XX"]) def _speakeasy_parse_response(http_res): if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "5XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "default", "application/json"): return unmarshal_json_response( interactions.Empty, http_res, validate=False ) raise errors.GenAiDefaultError("Unexpected response received", http_res) _speakeasy_hook_ctx = HookContext( config=self.sdk_configuration, base_url=base_url or "", operation_id="DeleteAgent", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, types.Security ), response=ResponseContext(mode=_speakeasy_response_mode, execution="sync"), ) http_res = self.do_request( hook_ctx=_speakeasy_hook_ctx, request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=_speakeasy_response_mode == "streaming", retry_config=retry_config, ) if _speakeasy_response_mode != "parsed": _speakeasy_response_cls = ( response_helpers.StreamedAPIResponse if _speakeasy_response_mode == "streaming" else response_helpers.APIResponse ) return cast( Any, _speakeasy_response_cls( raw=http_res, parser=_speakeasy_parse_response, mode="buffered", client_ref=self, hook_ctx=AfterParseErrorContext(_speakeasy_hook_ctx), hooks=self.sdk_configuration.__dict__.get("_hooks"), ), ) try: return _speakeasy_parse_response(http_res) except Exception as parse_exc_: response_helpers.raise_parse_error( self.sdk_configuration.__dict__["_hooks"], AfterParseErrorContext(_speakeasy_hook_ctx), http_res, parse_exc_, ) class AgentsWithRawResponse: def __init__(self, sdk: Agents) -> None: self._sdk = sdk self.create = response_helpers.to_raw_response_wrapper( sdk.create, "extra_headers" ) self.list = response_helpers.to_raw_response_wrapper(sdk.list, "extra_headers") self.get = response_helpers.to_raw_response_wrapper(sdk.get, "extra_headers") self.delete = response_helpers.to_raw_response_wrapper( sdk.delete, "extra_headers" ) class AgentsWithStreamingResponse: def __init__(self, sdk: Agents) -> None: self._sdk = sdk self.create = response_helpers.to_streamed_response_wrapper( sdk.create, "extra_headers" ) self.list = response_helpers.to_streamed_response_wrapper( sdk.list, "extra_headers" ) self.get = response_helpers.to_streamed_response_wrapper( sdk.get, "extra_headers" ) self.delete = response_helpers.to_streamed_response_wrapper( sdk.delete, "extra_headers" ) class AsyncAgents(AsyncBaseSDK): @property def with_raw_response(self): return AsyncAgentsWithRawResponse(self) @property def with_streaming_response(self): return AsyncAgentsWithStreamingResponse(self) async def create( self, *, api_version: Optional[str] = None, id: Optional[str] = None, base_agent: Optional[str] = None, system_instruction: Optional[str] = None, description: Optional[str] = None, tools: Optional[ Union[ Iterable[agents_agenttool.AgentTool], Iterable[agents_agenttool.AgentToolParam], ] ] = None, base_environment: Optional[ Union[agents_agent.BaseEnvironment, agents_agent.BaseEnvironmentParam] ] = None, extra_headers: Optional[Mapping[str, str]] = None, extra_query: Optional[Mapping[str, Any]] = None, extra_body: Optional[Mapping[str, Any]] = None, timeout: Optional[Union[float, httpx.Timeout]] = None, ) -> agents.Agent: r"""Creates a new Agent (Typed version for SDK). :param api_version: Which version of the API to use. :param id: The unique identifier for the agent. :param base_agent: The base agent to extend. :param system_instruction: System instruction for the agent. :param description: Agent description for developers to quickly read and understand. :param tools: The tools available to the agent. :param base_environment: The environment configuration for the agent. :param extra_headers: Additional headers to set or replace on requests. :param extra_query: Additional query parameters to append to requests. :param extra_body: Additional JSON object fields to merge into request bodies. :param timeout: Override the default request timeout configuration for this method in seconds """ base_url = None url_variables = None retries: OptionalNullable[utils.RetryConfig] = UNSET server_url = None http_headers = extra_headers timeout_ms = self._coerce_timeout_ms(timeout) if timeout_ms is None: timeout_ms = self.sdk_configuration.timeout_ms if server_url is not None: base_url = server_url else: base_url = self._get_url(base_url, url_variables) request = models.CreateAgentRequest( api_version=api_version, body=agents.Agent( id=id, base_agent=base_agent, system_instruction=system_instruction, description=description, tools=utils.get_pydantic_model(tools, Optional[List[agents.AgentTool]]), base_environment=utils.get_pydantic_model( base_environment, Optional[agents.BaseEnvironment] ), ), ) _speakeasy_response_mode, http_headers = response_helpers.consume_response_mode( http_headers ) req = self._build_request_async( method="POST", path="/{api_version}/agents", base_url=base_url, url_variables=url_variables, request=request, request_body_required=True, request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, extra_query_params=extra_query, _globals=models.CreateAgentGlobals( api_version=self.sdk_configuration.globals.api_version, ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( request.body, False, False, "json", agents.Agent, extra_body=extra_body ), allow_empty_value=None, timeout_ms=timeout_ms, ) if retries == UNSET: if self.sdk_configuration.retry_config is not UNSET: retries = self.sdk_configuration.retry_config else: retries = utils.RetryConfig( "attempt-count-backoff", utils.BackoffStrategy(500, 8000, 2, 30000), True, max_retries=4, ) retry_config = None if isinstance(retries, utils.RetryConfig): retry_config = (retries, ["408", "409", "429", "5XX"]) async def _speakeasy_parse_response(http_res): if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "5XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "default", "application/json"): return unmarshal_json_response(agents.Agent, http_res, validate=False) raise errors.GenAiDefaultError("Unexpected response received", http_res) _speakeasy_hook_ctx = HookContext( config=self.sdk_configuration, base_url=base_url or "", operation_id="CreateAgent", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, types.Security ), response=ResponseContext(mode=_speakeasy_response_mode, execution="async"), ) http_res = await self.do_request_async( hook_ctx=_speakeasy_hook_ctx, request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=_speakeasy_response_mode == "streaming", retry_config=retry_config, ) if _speakeasy_response_mode != "parsed": _speakeasy_response_cls = ( response_helpers.AsyncStreamedAPIResponse if _speakeasy_response_mode == "streaming" else response_helpers.AsyncAPIResponse ) return cast( Any, _speakeasy_response_cls( raw=http_res, parser=_speakeasy_parse_response, mode="buffered", client_ref=self, hook_ctx=AfterParseErrorContext(_speakeasy_hook_ctx), hooks=self.sdk_configuration.__dict__.get("_hooks"), async_hooks=self.sdk_configuration.__dict__.get("_async_hooks"), ), ) try: return await _speakeasy_parse_response(http_res) except Exception as parse_exc_: await response_helpers.raise_parse_error_async( self.sdk_configuration.__dict__.get("_async_hooks"), self.sdk_configuration.__dict__.get("_hooks"), AfterParseErrorContext(_speakeasy_hook_ctx), http_res, parse_exc_, ) async def list( self, *, api_version: Optional[str] = None, page_size: Optional[int] = None, page_token: Optional[str] = None, parent: Optional[str] = None, extra_headers: Optional[Mapping[str, str]] = None, extra_query: Optional[Mapping[str, Any]] = None, timeout: Optional[Union[float, httpx.Timeout]] = None, ) -> agents.AgentListResponse: r"""Lists all Agents. :param api_version: Which version of the API to use. :param page_size: :param page_token: :param parent: :param extra_headers: Additional headers to set or replace on requests. :param extra_query: Additional query parameters to append to requests. :param timeout: Override the default request timeout configuration for this method in seconds """ base_url = None url_variables = None retries: OptionalNullable[utils.RetryConfig] = UNSET server_url = None http_headers = extra_headers timeout_ms = self._coerce_timeout_ms(timeout) if timeout_ms is None: timeout_ms = self.sdk_configuration.timeout_ms if server_url is not None: base_url = server_url else: base_url = self._get_url(base_url, url_variables) request = models.ListAgentsRequest( api_version=api_version, page_size=page_size, page_token=page_token, parent=parent, ) _speakeasy_response_mode, http_headers = response_helpers.consume_response_mode( http_headers ) req = self._build_request_async( method="GET", path="/{api_version}/agents", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, extra_query_params=extra_query, _globals=models.ListAgentsGlobals( api_version=self.sdk_configuration.globals.api_version, ), security=self.sdk_configuration.security, allow_empty_value=None, timeout_ms=timeout_ms, ) if retries == UNSET: if self.sdk_configuration.retry_config is not UNSET: retries = self.sdk_configuration.retry_config else: retries = utils.RetryConfig( "attempt-count-backoff", utils.BackoffStrategy(500, 8000, 2, 30000), True, max_retries=4, ) retry_config = None if isinstance(retries, utils.RetryConfig): retry_config = (retries, ["408", "409", "429", "5XX"]) async def _speakeasy_parse_response(http_res): if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "5XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "default", "application/json"): return unmarshal_json_response( agents.AgentListResponse, http_res, validate=False ) raise errors.GenAiDefaultError("Unexpected response received", http_res) _speakeasy_hook_ctx = HookContext( config=self.sdk_configuration, base_url=base_url or "", operation_id="ListAgents", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, types.Security ), response=ResponseContext(mode=_speakeasy_response_mode, execution="async"), ) http_res = await self.do_request_async( hook_ctx=_speakeasy_hook_ctx, request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=_speakeasy_response_mode == "streaming", retry_config=retry_config, ) if _speakeasy_response_mode != "parsed": _speakeasy_response_cls = ( response_helpers.AsyncStreamedAPIResponse if _speakeasy_response_mode == "streaming" else response_helpers.AsyncAPIResponse ) return cast( Any, _speakeasy_response_cls( raw=http_res, parser=_speakeasy_parse_response, mode="buffered", client_ref=self, hook_ctx=AfterParseErrorContext(_speakeasy_hook_ctx), hooks=self.sdk_configuration.__dict__.get("_hooks"), async_hooks=self.sdk_configuration.__dict__.get("_async_hooks"), ), ) try: return await _speakeasy_parse_response(http_res) except Exception as parse_exc_: await response_helpers.raise_parse_error_async( self.sdk_configuration.__dict__.get("_async_hooks"), self.sdk_configuration.__dict__.get("_hooks"), AfterParseErrorContext(_speakeasy_hook_ctx), http_res, parse_exc_, ) async def get( self, id: str, *, api_version: Optional[str] = None, extra_headers: Optional[Mapping[str, str]] = None, extra_query: Optional[Mapping[str, Any]] = None, timeout: Optional[Union[float, httpx.Timeout]] = None, ) -> agents.Agent: r"""Gets a specific Agent. :param id: :param api_version: Which version of the API to use. :param extra_headers: Additional headers to set or replace on requests. :param extra_query: Additional query parameters to append to requests. :param timeout: Override the default request timeout configuration for this method in seconds """ base_url = None url_variables = None retries: OptionalNullable[utils.RetryConfig] = UNSET server_url = None http_headers = extra_headers timeout_ms = self._coerce_timeout_ms(timeout) if timeout_ms is None: timeout_ms = self.sdk_configuration.timeout_ms if server_url is not None: base_url = server_url else: base_url = self._get_url(base_url, url_variables) request = models.GetAgentRequest( api_version=api_version, id=id, ) _speakeasy_response_mode, http_headers = response_helpers.consume_response_mode( http_headers ) req = self._build_request_async( method="GET", path="/{api_version}/agents/{id}", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, extra_query_params=extra_query, _globals=models.GetAgentGlobals( api_version=self.sdk_configuration.globals.api_version, ), security=self.sdk_configuration.security, allow_empty_value=None, timeout_ms=timeout_ms, ) if retries == UNSET: if self.sdk_configuration.retry_config is not UNSET: retries = self.sdk_configuration.retry_config else: retries = utils.RetryConfig( "attempt-count-backoff", utils.BackoffStrategy(500, 8000, 2, 30000), True, max_retries=4, ) retry_config = None if isinstance(retries, utils.RetryConfig): retry_config = (retries, ["408", "409", "429", "5XX"]) async def _speakeasy_parse_response(http_res): if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "5XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "default", "application/json"): return unmarshal_json_response(agents.Agent, http_res, validate=False) raise errors.GenAiDefaultError("Unexpected response received", http_res) _speakeasy_hook_ctx = HookContext( config=self.sdk_configuration, base_url=base_url or "", operation_id="GetAgent", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, types.Security ), response=ResponseContext(mode=_speakeasy_response_mode, execution="async"), ) http_res = await self.do_request_async( hook_ctx=_speakeasy_hook_ctx, request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=_speakeasy_response_mode == "streaming", retry_config=retry_config, ) if _speakeasy_response_mode != "parsed": _speakeasy_response_cls = ( response_helpers.AsyncStreamedAPIResponse if _speakeasy_response_mode == "streaming" else response_helpers.AsyncAPIResponse ) return cast( Any, _speakeasy_response_cls( raw=http_res, parser=_speakeasy_parse_response, mode="buffered", client_ref=self, hook_ctx=AfterParseErrorContext(_speakeasy_hook_ctx), hooks=self.sdk_configuration.__dict__.get("_hooks"), async_hooks=self.sdk_configuration.__dict__.get("_async_hooks"), ), ) try: return await _speakeasy_parse_response(http_res) except Exception as parse_exc_: await response_helpers.raise_parse_error_async( self.sdk_configuration.__dict__.get("_async_hooks"), self.sdk_configuration.__dict__.get("_hooks"), AfterParseErrorContext(_speakeasy_hook_ctx), http_res, parse_exc_, ) async def delete( self, id: str, *, api_version: Optional[str] = None, extra_headers: Optional[Mapping[str, str]] = None, extra_query: Optional[Mapping[str, Any]] = None, timeout: Optional[Union[float, httpx.Timeout]] = None, ) -> interactions.Empty: r"""Deletes an Agent. :param id: :param api_version: Which version of the API to use. :param extra_headers: Additional headers to set or replace on requests. :param extra_query: Additional query parameters to append to requests. :param timeout: Override the default request timeout configuration for this method in seconds """ base_url = None url_variables = None retries: OptionalNullable[utils.RetryConfig] = UNSET server_url = None http_headers = extra_headers timeout_ms = self._coerce_timeout_ms(timeout) if timeout_ms is None: timeout_ms = self.sdk_configuration.timeout_ms if server_url is not None: base_url = server_url else: base_url = self._get_url(base_url, url_variables) request = models.DeleteAgentRequest( api_version=api_version, id=id, ) _speakeasy_response_mode, http_headers = response_helpers.consume_response_mode( http_headers ) req = self._build_request_async( method="DELETE", path="/{api_version}/agents/{id}", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, extra_query_params=extra_query, _globals=models.DeleteAgentGlobals( api_version=self.sdk_configuration.globals.api_version, ), security=self.sdk_configuration.security, allow_empty_value=None, timeout_ms=timeout_ms, ) if retries == UNSET: if self.sdk_configuration.retry_config is not UNSET: retries = self.sdk_configuration.retry_config else: retries = utils.RetryConfig( "attempt-count-backoff", utils.BackoffStrategy(500, 8000, 2, 30000), True, max_retries=4, ) retry_config = None if isinstance(retries, utils.RetryConfig): retry_config = (retries, ["408", "409", "429", "5XX"]) async def _speakeasy_parse_response(http_res): if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "5XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GenAiDefaultError( "API error occurred", http_res, http_res_text ) if utils.match_response(http_res, "default", "application/json"): return unmarshal_json_response( interactions.Empty, http_res, validate=False ) raise errors.GenAiDefaultError("Unexpected response received", http_res) _speakeasy_hook_ctx = HookContext( config=self.sdk_configuration, base_url=base_url or "", operation_id="DeleteAgent", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, types.Security ), response=ResponseContext(mode=_speakeasy_response_mode, execution="async"), ) http_res = await self.do_request_async( hook_ctx=_speakeasy_hook_ctx, request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=_speakeasy_response_mode == "streaming", retry_config=retry_config, ) if _speakeasy_response_mode != "parsed": _speakeasy_response_cls = ( response_helpers.AsyncStreamedAPIResponse if _speakeasy_response_mode == "streaming" else response_helpers.AsyncAPIResponse ) return cast( Any, _speakeasy_response_cls( raw=http_res, parser=_speakeasy_parse_response, mode="buffered", client_ref=self, hook_ctx=AfterParseErrorContext(_speakeasy_hook_ctx), hooks=self.sdk_configuration.__dict__.get("_hooks"), async_hooks=self.sdk_configuration.__dict__.get("_async_hooks"), ), ) try: return await _speakeasy_parse_response(http_res) except Exception as parse_exc_: await response_helpers.raise_parse_error_async( self.sdk_configuration.__dict__.get("_async_hooks"), self.sdk_configuration.__dict__.get("_hooks"), AfterParseErrorContext(_speakeasy_hook_ctx), http_res, parse_exc_, ) class AsyncAgentsWithRawResponse: def __init__(self, sdk: AsyncAgents) -> None: self._sdk = sdk self.create = response_helpers.async_to_raw_response_wrapper( sdk.create, "extra_headers" ) self.list = response_helpers.async_to_raw_response_wrapper( sdk.list, "extra_headers" ) self.get = response_helpers.async_to_raw_response_wrapper( sdk.get, "extra_headers" ) self.delete = response_helpers.async_to_raw_response_wrapper( sdk.delete, "extra_headers" ) class AsyncAgentsWithStreamingResponse: def __init__(self, sdk: AsyncAgents) -> None: self._sdk = sdk self.create = response_helpers.async_to_streamed_response_wrapper( sdk.create, "extra_headers" ) self.list = response_helpers.async_to_streamed_response_wrapper( sdk.list, "extra_headers" ) self.get = response_helpers.async_to_streamed_response_wrapper( sdk.get, "extra_headers" ) self.delete = response_helpers.async_to_streamed_response_wrapper( sdk.delete, "extra_headers" )