diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 656a2ef1..bfc26f9c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.1.0" + ".": "2.2.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 571d6bb0..774ad327 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,2 +1,2 @@ configured_endpoints: 15 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/brainbase-egrigokhan%2Fbrainbase-0c00485d66a3b7505f3247467ef293fa5fb43a64e90a8b03a4127a2d9b15e6ab.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/brainbase-egrigokhan%2Fbrainbase-ab4ce60666d2503f2b7028d55b9f75cc42a76a668cda26576e91b851ea650b0b.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ac18cb6..c96b72d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 2.2.0 (2025-02-04) + +Full Changelog: [v2.1.0...v2.2.0](https://github.com/BrainbaseHQ/brainbase-python-sdk/compare/v2.1.0...v2.2.0) + +### Features + +* **api:** update via SDK Studio ([#50](https://github.com/BrainbaseHQ/brainbase-python-sdk/issues/50)) ([a665c00](https://github.com/BrainbaseHQ/brainbase-python-sdk/commit/a665c00b172f0c41789098e6e50b959c5bb38c15)) +* **api:** update via SDK Studio ([#52](https://github.com/BrainbaseHQ/brainbase-python-sdk/issues/52)) ([95bff55](https://github.com/BrainbaseHQ/brainbase-python-sdk/commit/95bff55484b4d252fdd34cc1bd14f096059eaf45)) +* **api:** update via SDK Studio ([#53](https://github.com/BrainbaseHQ/brainbase-python-sdk/issues/53)) ([f84535e](https://github.com/BrainbaseHQ/brainbase-python-sdk/commit/f84535eec8e1162afe8f0046d32955cd904d7d78)) + ## 2.1.0 (2025-02-04) Full Changelog: [v2.0.0...v2.1.0](https://github.com/BrainbaseHQ/brainbase-python-sdk/compare/v2.0.0...v2.1.0) diff --git a/README.md b/README.md index 1cb07b51..140c6f48 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ client = Brainbase( api_key=os.environ.get("API_KEY"), # This is the default and can be omitted ) -client.workers.list() +workers = client.workers.list() ``` While you can provide an `api_key` keyword argument, @@ -54,7 +54,7 @@ client = AsyncBrainbase( async def main() -> None: - await client.workers.list() + workers = await client.workers.list() asyncio.run(main()) diff --git a/api.md b/api.md index 4e25a402..2022bf88 100644 --- a/api.md +++ b/api.md @@ -1,31 +1,64 @@ # Workers +Types: + +```python +from brainbase.types import ( + WorkerCreateResponse, + WorkerRetrieveResponse, + WorkerUpdateResponse, + WorkerListResponse, +) +``` + Methods: -- client.workers.create(\*\*params) -> None -- client.workers.retrieve(id) -> None -- client.workers.update(id, \*\*params) -> None -- client.workers.list() -> None +- client.workers.create(\*\*params) -> WorkerCreateResponse +- client.workers.retrieve(id) -> WorkerRetrieveResponse +- client.workers.update(id, \*\*params) -> WorkerUpdateResponse +- client.workers.list() -> WorkerListResponse - client.workers.delete(id) -> None ## Deployments ### Voice +Types: + +```python +from brainbase.types.workers.deployments import ( + VoiceCreateResponse, + VoiceRetrieveResponse, + VoiceUpdateResponse, + VoiceListResponse, +) +``` + Methods: -- client.workers.deployments.voice.create(worker_id, \*\*params) -> None -- client.workers.deployments.voice.retrieve(deployment_id, \*, worker_id) -> None -- client.workers.deployments.voice.update(deployment_id, \*, worker_id, \*\*params) -> None -- client.workers.deployments.voice.list(worker_id) -> None +- client.workers.deployments.voice.create(worker_id, \*\*params) -> VoiceCreateResponse +- client.workers.deployments.voice.retrieve(deployment_id, \*, worker_id) -> VoiceRetrieveResponse +- client.workers.deployments.voice.update(deployment_id, \*, worker_id, \*\*params) -> VoiceUpdateResponse +- client.workers.deployments.voice.list(worker_id) -> VoiceListResponse - client.workers.deployments.voice.delete(deployment_id, \*, worker_id) -> None ## Flows +Types: + +```python +from brainbase.types.workers import ( + FlowCreateResponse, + FlowRetrieveResponse, + FlowUpdateResponse, + FlowListResponse, +) +``` + Methods: -- client.workers.flows.create(worker_id, \*\*params) -> None -- client.workers.flows.retrieve(flow_id, \*, worker_id) -> None -- client.workers.flows.update(flow_id, \*, worker_id, \*\*params) -> None -- client.workers.flows.list(worker_id) -> None +- client.workers.flows.create(worker_id, \*\*params) -> FlowCreateResponse +- client.workers.flows.retrieve(flow_id, \*, worker_id) -> FlowRetrieveResponse +- client.workers.flows.update(flow_id, \*, worker_id, \*\*params) -> FlowUpdateResponse +- client.workers.flows.list(worker_id) -> FlowListResponse - client.workers.flows.delete(flow_id, \*, worker_id) -> None diff --git a/pyproject.toml b/pyproject.toml index de810e07..1b84e83a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "brainbase-labs" -version = "2.1.0" +version = "2.2.0" description = "The official Python library for the brainbase API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/brainbase/_version.py b/src/brainbase/_version.py index 006511eb..e1e891e2 100644 --- a/src/brainbase/_version.py +++ b/src/brainbase/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "brainbase" -__version__ = "2.1.0" # x-release-please-version +__version__ = "2.2.0" # x-release-please-version diff --git a/src/brainbase/resources/workers/deployments/voice.py b/src/brainbase/resources/workers/deployments/voice.py index 57cc1313..241c6123 100644 --- a/src/brainbase/resources/workers/deployments/voice.py +++ b/src/brainbase/resources/workers/deployments/voice.py @@ -19,6 +19,10 @@ ) from ...._base_client import make_request_options from ....types.workers.deployments import voice_create_params, voice_update_params +from ....types.workers.deployments.voice_list_response import VoiceListResponse +from ....types.workers.deployments.voice_create_response import VoiceCreateResponse +from ....types.workers.deployments.voice_update_response import VoiceUpdateResponse +from ....types.workers.deployments.voice_retrieve_response import VoiceRetrieveResponse __all__ = ["VoiceResource", "AsyncVoiceResource"] @@ -47,9 +51,7 @@ def create( self, worker_id: str, *, - flow_id: str, name: str, - config: object | NotGiven = NOT_GIVEN, phone_number: str | NotGiven = NOT_GIVEN, voice_id: str | NotGiven = NOT_GIVEN, voice_provider: str | NotGiven = NOT_GIVEN, @@ -59,11 +61,19 @@ def create( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> VoiceCreateResponse: """ Create a new voice deployment Args: + name: Name of the voice deployment + + phone_number: Phone number for the voice deployment + + voice_id: Voice ID for the deployment + + voice_provider: Voice provider service + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -74,14 +84,11 @@ def create( """ if not worker_id: raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._post( f"/api/workers/{worker_id}/deployments/voice", body=maybe_transform( { - "flow_id": flow_id, "name": name, - "config": config, "phone_number": phone_number, "voice_id": voice_id, "voice_provider": voice_provider, @@ -91,7 +98,7 @@ def create( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=VoiceCreateResponse, ) def retrieve( @@ -105,7 +112,7 @@ def retrieve( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> VoiceRetrieveResponse: """ Get a single voice deployment @@ -122,13 +129,12 @@ def retrieve( raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") if not deployment_id: raise ValueError(f"Expected a non-empty value for `deployment_id` but received {deployment_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._get( f"/api/workers/{worker_id}/deployments/voice/{deployment_id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=VoiceRetrieveResponse, ) def update( @@ -136,9 +142,7 @@ def update( deployment_id: str, *, worker_id: str, - config: object | NotGiven = NOT_GIVEN, - flow_id: str | NotGiven = NOT_GIVEN, - name: str | NotGiven = NOT_GIVEN, + name: str, phone_number: str | NotGiven = NOT_GIVEN, voice_id: str | NotGiven = NOT_GIVEN, voice_provider: str | NotGiven = NOT_GIVEN, @@ -148,11 +152,19 @@ def update( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> VoiceUpdateResponse: """ Update a voice deployment Args: + name: Name of the voice deployment + + phone_number: Phone number for the voice deployment + + voice_id: Voice ID for the deployment + + voice_provider: Voice provider service + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -165,13 +177,10 @@ def update( raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") if not deployment_id: raise ValueError(f"Expected a non-empty value for `deployment_id` but received {deployment_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._put( f"/api/workers/{worker_id}/deployments/voice/{deployment_id}", body=maybe_transform( { - "config": config, - "flow_id": flow_id, "name": name, "phone_number": phone_number, "voice_id": voice_id, @@ -182,7 +191,7 @@ def update( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=VoiceUpdateResponse, ) def list( @@ -195,7 +204,7 @@ def list( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> VoiceListResponse: """ Get all voice deployments for a worker @@ -210,13 +219,12 @@ def list( """ if not worker_id: raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._get( f"/api/workers/{worker_id}/deployments/voice", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=VoiceListResponse, ) def delete( @@ -281,9 +289,7 @@ async def create( self, worker_id: str, *, - flow_id: str, name: str, - config: object | NotGiven = NOT_GIVEN, phone_number: str | NotGiven = NOT_GIVEN, voice_id: str | NotGiven = NOT_GIVEN, voice_provider: str | NotGiven = NOT_GIVEN, @@ -293,11 +299,19 @@ async def create( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> VoiceCreateResponse: """ Create a new voice deployment Args: + name: Name of the voice deployment + + phone_number: Phone number for the voice deployment + + voice_id: Voice ID for the deployment + + voice_provider: Voice provider service + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -308,14 +322,11 @@ async def create( """ if not worker_id: raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._post( f"/api/workers/{worker_id}/deployments/voice", body=await async_maybe_transform( { - "flow_id": flow_id, "name": name, - "config": config, "phone_number": phone_number, "voice_id": voice_id, "voice_provider": voice_provider, @@ -325,7 +336,7 @@ async def create( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=VoiceCreateResponse, ) async def retrieve( @@ -339,7 +350,7 @@ async def retrieve( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> VoiceRetrieveResponse: """ Get a single voice deployment @@ -356,13 +367,12 @@ async def retrieve( raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") if not deployment_id: raise ValueError(f"Expected a non-empty value for `deployment_id` but received {deployment_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._get( f"/api/workers/{worker_id}/deployments/voice/{deployment_id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=VoiceRetrieveResponse, ) async def update( @@ -370,9 +380,7 @@ async def update( deployment_id: str, *, worker_id: str, - config: object | NotGiven = NOT_GIVEN, - flow_id: str | NotGiven = NOT_GIVEN, - name: str | NotGiven = NOT_GIVEN, + name: str, phone_number: str | NotGiven = NOT_GIVEN, voice_id: str | NotGiven = NOT_GIVEN, voice_provider: str | NotGiven = NOT_GIVEN, @@ -382,11 +390,19 @@ async def update( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> VoiceUpdateResponse: """ Update a voice deployment Args: + name: Name of the voice deployment + + phone_number: Phone number for the voice deployment + + voice_id: Voice ID for the deployment + + voice_provider: Voice provider service + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -399,13 +415,10 @@ async def update( raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") if not deployment_id: raise ValueError(f"Expected a non-empty value for `deployment_id` but received {deployment_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._put( f"/api/workers/{worker_id}/deployments/voice/{deployment_id}", body=await async_maybe_transform( { - "config": config, - "flow_id": flow_id, "name": name, "phone_number": phone_number, "voice_id": voice_id, @@ -416,7 +429,7 @@ async def update( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=VoiceUpdateResponse, ) async def list( @@ -429,7 +442,7 @@ async def list( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> VoiceListResponse: """ Get all voice deployments for a worker @@ -444,13 +457,12 @@ async def list( """ if not worker_id: raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._get( f"/api/workers/{worker_id}/deployments/voice", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=VoiceListResponse, ) async def delete( diff --git a/src/brainbase/resources/workers/flows.py b/src/brainbase/resources/workers/flows.py index f91b1a3b..0d2ef89f 100644 --- a/src/brainbase/resources/workers/flows.py +++ b/src/brainbase/resources/workers/flows.py @@ -19,6 +19,10 @@ ) from ..._base_client import make_request_options from ...types.workers import flow_create_params, flow_update_params +from ...types.workers.flow_list_response import FlowListResponse +from ...types.workers.flow_create_response import FlowCreateResponse +from ...types.workers.flow_update_response import FlowUpdateResponse +from ...types.workers.flow_retrieve_response import FlowRetrieveResponse __all__ = ["FlowsResource", "AsyncFlowsResource"] @@ -47,8 +51,8 @@ def create( self, worker_id: str, *, + code: str, name: str, - code: str | NotGiven = NOT_GIVEN, label: str | NotGiven = NOT_GIVEN, # 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. @@ -56,11 +60,17 @@ def create( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> FlowCreateResponse: """ Create a new flow Args: + code: Flow code + + name: Name of the flow + + label: Optional label for the flow + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -71,13 +81,12 @@ def create( """ if not worker_id: raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._post( f"/api/workers/{worker_id}/flows", body=maybe_transform( { - "name": name, "code": code, + "name": name, "label": label, }, flow_create_params.FlowCreateParams, @@ -85,7 +94,7 @@ def create( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=FlowCreateResponse, ) def retrieve( @@ -99,7 +108,7 @@ def retrieve( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> FlowRetrieveResponse: """ Get a single flow @@ -116,13 +125,12 @@ def retrieve( raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") if not flow_id: raise ValueError(f"Expected a non-empty value for `flow_id` but received {flow_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._get( f"/api/workers/{worker_id}/flows/{flow_id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=FlowRetrieveResponse, ) def update( @@ -139,11 +147,17 @@ def update( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> FlowUpdateResponse: """ Update a flow Args: + code: Flow code + + label: Optional label for the flow + + name: Name of the flow + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -156,7 +170,6 @@ def update( raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") if not flow_id: raise ValueError(f"Expected a non-empty value for `flow_id` but received {flow_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._put( f"/api/workers/{worker_id}/flows/{flow_id}", body=maybe_transform( @@ -170,7 +183,7 @@ def update( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=FlowUpdateResponse, ) def list( @@ -183,7 +196,7 @@ def list( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> FlowListResponse: """ Get all flows for a worker @@ -198,13 +211,12 @@ def list( """ if not worker_id: raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._get( f"/api/workers/{worker_id}/flows", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=FlowListResponse, ) def delete( @@ -269,8 +281,8 @@ async def create( self, worker_id: str, *, + code: str, name: str, - code: str | NotGiven = NOT_GIVEN, label: str | NotGiven = NOT_GIVEN, # 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. @@ -278,11 +290,17 @@ async def create( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> FlowCreateResponse: """ Create a new flow Args: + code: Flow code + + name: Name of the flow + + label: Optional label for the flow + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -293,13 +311,12 @@ async def create( """ if not worker_id: raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._post( f"/api/workers/{worker_id}/flows", body=await async_maybe_transform( { - "name": name, "code": code, + "name": name, "label": label, }, flow_create_params.FlowCreateParams, @@ -307,7 +324,7 @@ async def create( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=FlowCreateResponse, ) async def retrieve( @@ -321,7 +338,7 @@ async def retrieve( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> FlowRetrieveResponse: """ Get a single flow @@ -338,13 +355,12 @@ async def retrieve( raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") if not flow_id: raise ValueError(f"Expected a non-empty value for `flow_id` but received {flow_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._get( f"/api/workers/{worker_id}/flows/{flow_id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=FlowRetrieveResponse, ) async def update( @@ -361,11 +377,17 @@ async def update( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> FlowUpdateResponse: """ Update a flow Args: + code: Flow code + + label: Optional label for the flow + + name: Name of the flow + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -378,7 +400,6 @@ async def update( raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") if not flow_id: raise ValueError(f"Expected a non-empty value for `flow_id` but received {flow_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._put( f"/api/workers/{worker_id}/flows/{flow_id}", body=await async_maybe_transform( @@ -392,7 +413,7 @@ async def update( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=FlowUpdateResponse, ) async def list( @@ -405,7 +426,7 @@ async def list( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> FlowListResponse: """ Get all flows for a worker @@ -420,13 +441,12 @@ async def list( """ if not worker_id: raise ValueError(f"Expected a non-empty value for `worker_id` but received {worker_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._get( f"/api/workers/{worker_id}/flows", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=FlowListResponse, ) async def delete( diff --git a/src/brainbase/resources/workers/workers.py b/src/brainbase/resources/workers/workers.py index 323da4da..9c160fbb 100644 --- a/src/brainbase/resources/workers/workers.py +++ b/src/brainbase/resources/workers/workers.py @@ -35,6 +35,10 @@ DeploymentsResourceWithStreamingResponse, AsyncDeploymentsResourceWithStreamingResponse, ) +from ...types.worker_list_response import WorkerListResponse +from ...types.worker_create_response import WorkerCreateResponse +from ...types.worker_update_response import WorkerUpdateResponse +from ...types.worker_retrieve_response import WorkerRetrieveResponse __all__ = ["WorkersResource", "AsyncWorkersResource"] @@ -72,18 +76,21 @@ def create( *, name: str, description: str | NotGiven = NOT_GIVEN, - status: str | NotGiven = NOT_GIVEN, # 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: + ) -> WorkerCreateResponse: """ Create a new worker Args: + name: Name of the worker + + description: Description of the worker + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -92,21 +99,19 @@ def create( timeout: Override the client-level default timeout for this request, in seconds """ - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._post( "/api/workers", body=maybe_transform( { "name": name, "description": description, - "status": status, }, worker_create_params.WorkerCreateParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=WorkerCreateResponse, ) def retrieve( @@ -119,7 +124,7 @@ def retrieve( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> WorkerRetrieveResponse: """ Get a single worker @@ -134,13 +139,12 @@ def retrieve( """ if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._get( f"/api/workers/{id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=WorkerRetrieveResponse, ) def update( @@ -149,18 +153,21 @@ def update( *, description: str | NotGiven = NOT_GIVEN, name: str | NotGiven = NOT_GIVEN, - status: str | NotGiven = NOT_GIVEN, # 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: + ) -> WorkerUpdateResponse: """ Update a worker Args: + description: Description of the worker + + name: Name of the worker + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -171,21 +178,19 @@ def update( """ if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._post( f"/api/workers/{id}", body=maybe_transform( { "description": description, "name": name, - "status": status, }, worker_update_params.WorkerUpdateParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=WorkerUpdateResponse, ) def list( @@ -197,15 +202,14 @@ def list( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> WorkerListResponse: """Get all workers for the team""" - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return self._get( "/api/workers", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=WorkerListResponse, ) def delete( @@ -276,18 +280,21 @@ async def create( *, name: str, description: str | NotGiven = NOT_GIVEN, - status: str | NotGiven = NOT_GIVEN, # 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: + ) -> WorkerCreateResponse: """ Create a new worker Args: + name: Name of the worker + + description: Description of the worker + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -296,21 +303,19 @@ async def create( timeout: Override the client-level default timeout for this request, in seconds """ - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._post( "/api/workers", body=await async_maybe_transform( { "name": name, "description": description, - "status": status, }, worker_create_params.WorkerCreateParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=WorkerCreateResponse, ) async def retrieve( @@ -323,7 +328,7 @@ async def retrieve( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> WorkerRetrieveResponse: """ Get a single worker @@ -338,13 +343,12 @@ async def retrieve( """ if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._get( f"/api/workers/{id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=WorkerRetrieveResponse, ) async def update( @@ -353,18 +357,21 @@ async def update( *, description: str | NotGiven = NOT_GIVEN, name: str | NotGiven = NOT_GIVEN, - status: str | NotGiven = NOT_GIVEN, # 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: + ) -> WorkerUpdateResponse: """ Update a worker Args: + description: Description of the worker + + name: Name of the worker + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -375,21 +382,19 @@ async def update( """ if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._post( f"/api/workers/{id}", body=await async_maybe_transform( { "description": description, "name": name, - "status": status, }, worker_update_params.WorkerUpdateParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=WorkerUpdateResponse, ) async def list( @@ -401,15 +406,14 @@ async def list( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> None: + ) -> WorkerListResponse: """Get all workers for the team""" - extra_headers = {"Accept": "*/*", **(extra_headers or {})} return await self._get( "/api/workers", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=NoneType, + cast_to=WorkerListResponse, ) async def delete( diff --git a/src/brainbase/types/__init__.py b/src/brainbase/types/__init__.py index 065250e2..65b30e21 100644 --- a/src/brainbase/types/__init__.py +++ b/src/brainbase/types/__init__.py @@ -3,4 +3,8 @@ from __future__ import annotations from .worker_create_params import WorkerCreateParams as WorkerCreateParams +from .worker_list_response import WorkerListResponse as WorkerListResponse from .worker_update_params import WorkerUpdateParams as WorkerUpdateParams +from .worker_create_response import WorkerCreateResponse as WorkerCreateResponse +from .worker_update_response import WorkerUpdateResponse as WorkerUpdateResponse +from .worker_retrieve_response import WorkerRetrieveResponse as WorkerRetrieveResponse diff --git a/src/brainbase/types/worker_create_params.py b/src/brainbase/types/worker_create_params.py index 757c0420..d88172af 100644 --- a/src/brainbase/types/worker_create_params.py +++ b/src/brainbase/types/worker_create_params.py @@ -9,7 +9,7 @@ class WorkerCreateParams(TypedDict, total=False): name: Required[str] + """Name of the worker""" description: str - - status: str + """Description of the worker""" diff --git a/src/brainbase/types/worker_create_response.py b/src/brainbase/types/worker_create_response.py new file mode 100644 index 00000000..17b4799d --- /dev/null +++ b/src/brainbase/types/worker_create_response.py @@ -0,0 +1,36 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from datetime import datetime + +from pydantic import Field as FieldInfo + +from .._models import BaseModel + +__all__ = ["WorkerCreateResponse"] + + +class WorkerCreateResponse(BaseModel): + id: str + + created_at: datetime = FieldInfo(alias="createdAt") + + name: str + + team_id: str = FieldInfo(alias="teamId") + + updated_at: datetime = FieldInfo(alias="updatedAt") + + deployments_ids: Optional[List[str]] = FieldInfo(alias="deploymentsIds", default=None) + + description: Optional[str] = None + + flows_ids: Optional[List[str]] = FieldInfo(alias="flowsIds", default=None) + + integrations_ids: Optional[List[str]] = FieldInfo(alias="integrationsIds", default=None) + + last_refreshed_at: Optional[datetime] = FieldInfo(alias="lastRefreshedAt", default=None) + + resources_ids: Optional[List[str]] = FieldInfo(alias="resourcesIds", default=None) + + status: Optional[str] = None diff --git a/src/brainbase/types/worker_list_response.py b/src/brainbase/types/worker_list_response.py new file mode 100644 index 00000000..c5ef81f5 --- /dev/null +++ b/src/brainbase/types/worker_list_response.py @@ -0,0 +1,40 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from datetime import datetime +from typing_extensions import TypeAlias + +from pydantic import Field as FieldInfo + +from .._models import BaseModel + +__all__ = ["WorkerListResponse", "WorkerListResponseItem"] + + +class WorkerListResponseItem(BaseModel): + id: str + + created_at: datetime = FieldInfo(alias="createdAt") + + name: str + + team_id: str = FieldInfo(alias="teamId") + + updated_at: datetime = FieldInfo(alias="updatedAt") + + deployments_ids: Optional[List[str]] = FieldInfo(alias="deploymentsIds", default=None) + + description: Optional[str] = None + + flows_ids: Optional[List[str]] = FieldInfo(alias="flowsIds", default=None) + + integrations_ids: Optional[List[str]] = FieldInfo(alias="integrationsIds", default=None) + + last_refreshed_at: Optional[datetime] = FieldInfo(alias="lastRefreshedAt", default=None) + + resources_ids: Optional[List[str]] = FieldInfo(alias="resourcesIds", default=None) + + status: Optional[str] = None + + +WorkerListResponse: TypeAlias = List[WorkerListResponseItem] diff --git a/src/brainbase/types/worker_retrieve_response.py b/src/brainbase/types/worker_retrieve_response.py new file mode 100644 index 00000000..536eecd1 --- /dev/null +++ b/src/brainbase/types/worker_retrieve_response.py @@ -0,0 +1,36 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from datetime import datetime + +from pydantic import Field as FieldInfo + +from .._models import BaseModel + +__all__ = ["WorkerRetrieveResponse"] + + +class WorkerRetrieveResponse(BaseModel): + id: str + + created_at: datetime = FieldInfo(alias="createdAt") + + name: str + + team_id: str = FieldInfo(alias="teamId") + + updated_at: datetime = FieldInfo(alias="updatedAt") + + deployments_ids: Optional[List[str]] = FieldInfo(alias="deploymentsIds", default=None) + + description: Optional[str] = None + + flows_ids: Optional[List[str]] = FieldInfo(alias="flowsIds", default=None) + + integrations_ids: Optional[List[str]] = FieldInfo(alias="integrationsIds", default=None) + + last_refreshed_at: Optional[datetime] = FieldInfo(alias="lastRefreshedAt", default=None) + + resources_ids: Optional[List[str]] = FieldInfo(alias="resourcesIds", default=None) + + status: Optional[str] = None diff --git a/src/brainbase/types/worker_update_params.py b/src/brainbase/types/worker_update_params.py index bfa7a019..03231eba 100644 --- a/src/brainbase/types/worker_update_params.py +++ b/src/brainbase/types/worker_update_params.py @@ -9,7 +9,7 @@ class WorkerUpdateParams(TypedDict, total=False): description: str + """Description of the worker""" name: str - - status: str + """Name of the worker""" diff --git a/src/brainbase/types/worker_update_response.py b/src/brainbase/types/worker_update_response.py new file mode 100644 index 00000000..827ec460 --- /dev/null +++ b/src/brainbase/types/worker_update_response.py @@ -0,0 +1,36 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from datetime import datetime + +from pydantic import Field as FieldInfo + +from .._models import BaseModel + +__all__ = ["WorkerUpdateResponse"] + + +class WorkerUpdateResponse(BaseModel): + id: str + + created_at: datetime = FieldInfo(alias="createdAt") + + name: str + + team_id: str = FieldInfo(alias="teamId") + + updated_at: datetime = FieldInfo(alias="updatedAt") + + deployments_ids: Optional[List[str]] = FieldInfo(alias="deploymentsIds", default=None) + + description: Optional[str] = None + + flows_ids: Optional[List[str]] = FieldInfo(alias="flowsIds", default=None) + + integrations_ids: Optional[List[str]] = FieldInfo(alias="integrationsIds", default=None) + + last_refreshed_at: Optional[datetime] = FieldInfo(alias="lastRefreshedAt", default=None) + + resources_ids: Optional[List[str]] = FieldInfo(alias="resourcesIds", default=None) + + status: Optional[str] = None diff --git a/src/brainbase/types/workers/__init__.py b/src/brainbase/types/workers/__init__.py index 40ad3726..8d5debbd 100644 --- a/src/brainbase/types/workers/__init__.py +++ b/src/brainbase/types/workers/__init__.py @@ -3,4 +3,8 @@ from __future__ import annotations from .flow_create_params import FlowCreateParams as FlowCreateParams +from .flow_list_response import FlowListResponse as FlowListResponse from .flow_update_params import FlowUpdateParams as FlowUpdateParams +from .flow_create_response import FlowCreateResponse as FlowCreateResponse +from .flow_update_response import FlowUpdateResponse as FlowUpdateResponse +from .flow_retrieve_response import FlowRetrieveResponse as FlowRetrieveResponse diff --git a/src/brainbase/types/workers/deployments/__init__.py b/src/brainbase/types/workers/deployments/__init__.py index 1fb49e95..dbdb876a 100644 --- a/src/brainbase/types/workers/deployments/__init__.py +++ b/src/brainbase/types/workers/deployments/__init__.py @@ -3,4 +3,8 @@ from __future__ import annotations from .voice_create_params import VoiceCreateParams as VoiceCreateParams +from .voice_list_response import VoiceListResponse as VoiceListResponse from .voice_update_params import VoiceUpdateParams as VoiceUpdateParams +from .voice_create_response import VoiceCreateResponse as VoiceCreateResponse +from .voice_update_response import VoiceUpdateResponse as VoiceUpdateResponse +from .voice_retrieve_response import VoiceRetrieveResponse as VoiceRetrieveResponse diff --git a/src/brainbase/types/workers/deployments/voice_create_params.py b/src/brainbase/types/workers/deployments/voice_create_params.py index b877d0aa..b32012d6 100644 --- a/src/brainbase/types/workers/deployments/voice_create_params.py +++ b/src/brainbase/types/workers/deployments/voice_create_params.py @@ -10,14 +10,14 @@ class VoiceCreateParams(TypedDict, total=False): - flow_id: Required[Annotated[str, PropertyInfo(alias="flowId")]] - name: Required[str] - - config: object + """Name of the voice deployment""" phone_number: Annotated[str, PropertyInfo(alias="phoneNumber")] + """Phone number for the voice deployment""" voice_id: Annotated[str, PropertyInfo(alias="voiceId")] + """Voice ID for the deployment""" voice_provider: Annotated[str, PropertyInfo(alias="voiceProvider")] + """Voice provider service""" diff --git a/src/brainbase/types/workers/deployments/voice_create_response.py b/src/brainbase/types/workers/deployments/voice_create_response.py new file mode 100644 index 00000000..2c9a7960 --- /dev/null +++ b/src/brainbase/types/workers/deployments/voice_create_response.py @@ -0,0 +1,21 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Optional + +from pydantic import Field as FieldInfo + +from ...._models import BaseModel + +__all__ = ["VoiceCreateResponse"] + + +class VoiceCreateResponse(BaseModel): + id: str + + delegate_aux_deployments_id: Optional[str] = FieldInfo(alias="delegate_aux_deploymentsId", default=None) + + phone_number: Optional[str] = FieldInfo(alias="phoneNumber", default=None) + + voice_id: Optional[str] = FieldInfo(alias="voiceId", default=None) + + voice_provider: Optional[str] = FieldInfo(alias="voiceProvider", default=None) diff --git a/src/brainbase/types/workers/deployments/voice_list_response.py b/src/brainbase/types/workers/deployments/voice_list_response.py new file mode 100644 index 00000000..d54f167d --- /dev/null +++ b/src/brainbase/types/workers/deployments/voice_list_response.py @@ -0,0 +1,25 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from typing_extensions import TypeAlias + +from pydantic import Field as FieldInfo + +from ...._models import BaseModel + +__all__ = ["VoiceListResponse", "VoiceListResponseItem"] + + +class VoiceListResponseItem(BaseModel): + id: str + + delegate_aux_deployments_id: Optional[str] = FieldInfo(alias="delegate_aux_deploymentsId", default=None) + + phone_number: Optional[str] = FieldInfo(alias="phoneNumber", default=None) + + voice_id: Optional[str] = FieldInfo(alias="voiceId", default=None) + + voice_provider: Optional[str] = FieldInfo(alias="voiceProvider", default=None) + + +VoiceListResponse: TypeAlias = List[VoiceListResponseItem] diff --git a/src/brainbase/types/workers/deployments/voice_retrieve_response.py b/src/brainbase/types/workers/deployments/voice_retrieve_response.py new file mode 100644 index 00000000..15fc4abe --- /dev/null +++ b/src/brainbase/types/workers/deployments/voice_retrieve_response.py @@ -0,0 +1,21 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Optional + +from pydantic import Field as FieldInfo + +from ...._models import BaseModel + +__all__ = ["VoiceRetrieveResponse"] + + +class VoiceRetrieveResponse(BaseModel): + id: str + + delegate_aux_deployments_id: Optional[str] = FieldInfo(alias="delegate_aux_deploymentsId", default=None) + + phone_number: Optional[str] = FieldInfo(alias="phoneNumber", default=None) + + voice_id: Optional[str] = FieldInfo(alias="voiceId", default=None) + + voice_provider: Optional[str] = FieldInfo(alias="voiceProvider", default=None) diff --git a/src/brainbase/types/workers/deployments/voice_update_params.py b/src/brainbase/types/workers/deployments/voice_update_params.py index b8bc8109..9d8bbb99 100644 --- a/src/brainbase/types/workers/deployments/voice_update_params.py +++ b/src/brainbase/types/workers/deployments/voice_update_params.py @@ -12,14 +12,14 @@ class VoiceUpdateParams(TypedDict, total=False): worker_id: Required[Annotated[str, PropertyInfo(alias="workerId")]] - config: object - - flow_id: Annotated[str, PropertyInfo(alias="flowId")] - - name: str + name: Required[str] + """Name of the voice deployment""" phone_number: Annotated[str, PropertyInfo(alias="phoneNumber")] + """Phone number for the voice deployment""" voice_id: Annotated[str, PropertyInfo(alias="voiceId")] + """Voice ID for the deployment""" voice_provider: Annotated[str, PropertyInfo(alias="voiceProvider")] + """Voice provider service""" diff --git a/src/brainbase/types/workers/deployments/voice_update_response.py b/src/brainbase/types/workers/deployments/voice_update_response.py new file mode 100644 index 00000000..67d8460f --- /dev/null +++ b/src/brainbase/types/workers/deployments/voice_update_response.py @@ -0,0 +1,21 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Optional + +from pydantic import Field as FieldInfo + +from ...._models import BaseModel + +__all__ = ["VoiceUpdateResponse"] + + +class VoiceUpdateResponse(BaseModel): + id: str + + delegate_aux_deployments_id: Optional[str] = FieldInfo(alias="delegate_aux_deploymentsId", default=None) + + phone_number: Optional[str] = FieldInfo(alias="phoneNumber", default=None) + + voice_id: Optional[str] = FieldInfo(alias="voiceId", default=None) + + voice_provider: Optional[str] = FieldInfo(alias="voiceProvider", default=None) diff --git a/src/brainbase/types/workers/flow_create_params.py b/src/brainbase/types/workers/flow_create_params.py index 8d5a2517..935ba6ab 100644 --- a/src/brainbase/types/workers/flow_create_params.py +++ b/src/brainbase/types/workers/flow_create_params.py @@ -8,8 +8,11 @@ class FlowCreateParams(TypedDict, total=False): - name: Required[str] + code: Required[str] + """Flow code""" - code: str + name: Required[str] + """Name of the flow""" label: str + """Optional label for the flow""" diff --git a/src/brainbase/types/workers/flow_create_response.py b/src/brainbase/types/workers/flow_create_response.py new file mode 100644 index 00000000..137ea9d5 --- /dev/null +++ b/src/brainbase/types/workers/flow_create_response.py @@ -0,0 +1,30 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from datetime import datetime + +from pydantic import Field as FieldInfo + +from ..._models import BaseModel + +__all__ = ["FlowCreateResponse"] + + +class FlowCreateResponse(BaseModel): + id: str + + code: str + + created_at: datetime = FieldInfo(alias="createdAt") + + name: str + + updated_at: datetime = FieldInfo(alias="updatedAt") + + version: int + + worker_id: str = FieldInfo(alias="workerId") + + deployments_ids: Optional[List[str]] = FieldInfo(alias="deploymentsIds", default=None) + + label: Optional[str] = None diff --git a/src/brainbase/types/workers/flow_list_response.py b/src/brainbase/types/workers/flow_list_response.py new file mode 100644 index 00000000..9b56bcca --- /dev/null +++ b/src/brainbase/types/workers/flow_list_response.py @@ -0,0 +1,34 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from datetime import datetime +from typing_extensions import TypeAlias + +from pydantic import Field as FieldInfo + +from ..._models import BaseModel + +__all__ = ["FlowListResponse", "FlowListResponseItem"] + + +class FlowListResponseItem(BaseModel): + id: str + + code: str + + created_at: datetime = FieldInfo(alias="createdAt") + + name: str + + updated_at: datetime = FieldInfo(alias="updatedAt") + + version: int + + worker_id: str = FieldInfo(alias="workerId") + + deployments_ids: Optional[List[str]] = FieldInfo(alias="deploymentsIds", default=None) + + label: Optional[str] = None + + +FlowListResponse: TypeAlias = List[FlowListResponseItem] diff --git a/src/brainbase/types/workers/flow_retrieve_response.py b/src/brainbase/types/workers/flow_retrieve_response.py new file mode 100644 index 00000000..d588ed23 --- /dev/null +++ b/src/brainbase/types/workers/flow_retrieve_response.py @@ -0,0 +1,30 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from datetime import datetime + +from pydantic import Field as FieldInfo + +from ..._models import BaseModel + +__all__ = ["FlowRetrieveResponse"] + + +class FlowRetrieveResponse(BaseModel): + id: str + + code: str + + created_at: datetime = FieldInfo(alias="createdAt") + + name: str + + updated_at: datetime = FieldInfo(alias="updatedAt") + + version: int + + worker_id: str = FieldInfo(alias="workerId") + + deployments_ids: Optional[List[str]] = FieldInfo(alias="deploymentsIds", default=None) + + label: Optional[str] = None diff --git a/src/brainbase/types/workers/flow_update_params.py b/src/brainbase/types/workers/flow_update_params.py index e8b884cc..582b8bd6 100644 --- a/src/brainbase/types/workers/flow_update_params.py +++ b/src/brainbase/types/workers/flow_update_params.py @@ -13,7 +13,10 @@ class FlowUpdateParams(TypedDict, total=False): worker_id: Required[Annotated[str, PropertyInfo(alias="workerId")]] code: str + """Flow code""" label: str + """Optional label for the flow""" name: str + """Name of the flow""" diff --git a/src/brainbase/types/workers/flow_update_response.py b/src/brainbase/types/workers/flow_update_response.py new file mode 100644 index 00000000..0f10031b --- /dev/null +++ b/src/brainbase/types/workers/flow_update_response.py @@ -0,0 +1,30 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from datetime import datetime + +from pydantic import Field as FieldInfo + +from ..._models import BaseModel + +__all__ = ["FlowUpdateResponse"] + + +class FlowUpdateResponse(BaseModel): + id: str + + code: str + + created_at: datetime = FieldInfo(alias="createdAt") + + name: str + + updated_at: datetime = FieldInfo(alias="updatedAt") + + version: int + + worker_id: str = FieldInfo(alias="workerId") + + deployments_ids: Optional[List[str]] = FieldInfo(alias="deploymentsIds", default=None) + + label: Optional[str] = None diff --git a/tests/api_resources/test_workers.py b/tests/api_resources/test_workers.py index 2a9a36aa..28d15c32 100644 --- a/tests/api_resources/test_workers.py +++ b/tests/api_resources/test_workers.py @@ -8,6 +8,13 @@ import pytest from brainbase import Brainbase, AsyncBrainbase +from tests.utils import assert_matches_type +from brainbase.types import ( + WorkerListResponse, + WorkerCreateResponse, + WorkerUpdateResponse, + WorkerRetrieveResponse, +) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -21,7 +28,7 @@ def test_method_create(self, client: Brainbase) -> None: worker = client.workers.create( name="name", ) - assert worker is None + assert_matches_type(WorkerCreateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -29,9 +36,8 @@ def test_method_create_with_all_params(self, client: Brainbase) -> None: worker = client.workers.create( name="name", description="description", - status="status", ) - assert worker is None + assert_matches_type(WorkerCreateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -43,7 +49,7 @@ def test_raw_response_create(self, client: Brainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = response.parse() - assert worker is None + assert_matches_type(WorkerCreateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -55,7 +61,7 @@ def test_streaming_response_create(self, client: Brainbase) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = response.parse() - assert worker is None + assert_matches_type(WorkerCreateResponse, worker, path=["response"]) assert cast(Any, response.is_closed) is True @@ -65,7 +71,7 @@ def test_method_retrieve(self, client: Brainbase) -> None: worker = client.workers.retrieve( "id", ) - assert worker is None + assert_matches_type(WorkerRetrieveResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -77,7 +83,7 @@ def test_raw_response_retrieve(self, client: Brainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = response.parse() - assert worker is None + assert_matches_type(WorkerRetrieveResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -89,7 +95,7 @@ def test_streaming_response_retrieve(self, client: Brainbase) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = response.parse() - assert worker is None + assert_matches_type(WorkerRetrieveResponse, worker, path=["response"]) assert cast(Any, response.is_closed) is True @@ -107,7 +113,7 @@ def test_method_update(self, client: Brainbase) -> None: worker = client.workers.update( id="id", ) - assert worker is None + assert_matches_type(WorkerUpdateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -116,9 +122,8 @@ def test_method_update_with_all_params(self, client: Brainbase) -> None: id="id", description="description", name="name", - status="status", ) - assert worker is None + assert_matches_type(WorkerUpdateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -130,7 +135,7 @@ def test_raw_response_update(self, client: Brainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = response.parse() - assert worker is None + assert_matches_type(WorkerUpdateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -142,7 +147,7 @@ def test_streaming_response_update(self, client: Brainbase) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = response.parse() - assert worker is None + assert_matches_type(WorkerUpdateResponse, worker, path=["response"]) assert cast(Any, response.is_closed) is True @@ -158,7 +163,7 @@ def test_path_params_update(self, client: Brainbase) -> None: @parametrize def test_method_list(self, client: Brainbase) -> None: worker = client.workers.list() - assert worker is None + assert_matches_type(WorkerListResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -168,7 +173,7 @@ def test_raw_response_list(self, client: Brainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = response.parse() - assert worker is None + assert_matches_type(WorkerListResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -178,7 +183,7 @@ def test_streaming_response_list(self, client: Brainbase) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = response.parse() - assert worker is None + assert_matches_type(WorkerListResponse, worker, path=["response"]) assert cast(Any, response.is_closed) is True @@ -234,7 +239,7 @@ async def test_method_create(self, async_client: AsyncBrainbase) -> None: worker = await async_client.workers.create( name="name", ) - assert worker is None + assert_matches_type(WorkerCreateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -242,9 +247,8 @@ async def test_method_create_with_all_params(self, async_client: AsyncBrainbase) worker = await async_client.workers.create( name="name", description="description", - status="status", ) - assert worker is None + assert_matches_type(WorkerCreateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -256,7 +260,7 @@ async def test_raw_response_create(self, async_client: AsyncBrainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = await response.parse() - assert worker is None + assert_matches_type(WorkerCreateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -268,7 +272,7 @@ async def test_streaming_response_create(self, async_client: AsyncBrainbase) -> assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = await response.parse() - assert worker is None + assert_matches_type(WorkerCreateResponse, worker, path=["response"]) assert cast(Any, response.is_closed) is True @@ -278,7 +282,7 @@ async def test_method_retrieve(self, async_client: AsyncBrainbase) -> None: worker = await async_client.workers.retrieve( "id", ) - assert worker is None + assert_matches_type(WorkerRetrieveResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -290,7 +294,7 @@ async def test_raw_response_retrieve(self, async_client: AsyncBrainbase) -> None assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = await response.parse() - assert worker is None + assert_matches_type(WorkerRetrieveResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -302,7 +306,7 @@ async def test_streaming_response_retrieve(self, async_client: AsyncBrainbase) - assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = await response.parse() - assert worker is None + assert_matches_type(WorkerRetrieveResponse, worker, path=["response"]) assert cast(Any, response.is_closed) is True @@ -320,7 +324,7 @@ async def test_method_update(self, async_client: AsyncBrainbase) -> None: worker = await async_client.workers.update( id="id", ) - assert worker is None + assert_matches_type(WorkerUpdateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -329,9 +333,8 @@ async def test_method_update_with_all_params(self, async_client: AsyncBrainbase) id="id", description="description", name="name", - status="status", ) - assert worker is None + assert_matches_type(WorkerUpdateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -343,7 +346,7 @@ async def test_raw_response_update(self, async_client: AsyncBrainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = await response.parse() - assert worker is None + assert_matches_type(WorkerUpdateResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -355,7 +358,7 @@ async def test_streaming_response_update(self, async_client: AsyncBrainbase) -> assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = await response.parse() - assert worker is None + assert_matches_type(WorkerUpdateResponse, worker, path=["response"]) assert cast(Any, response.is_closed) is True @@ -371,7 +374,7 @@ async def test_path_params_update(self, async_client: AsyncBrainbase) -> None: @parametrize async def test_method_list(self, async_client: AsyncBrainbase) -> None: worker = await async_client.workers.list() - assert worker is None + assert_matches_type(WorkerListResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -381,7 +384,7 @@ async def test_raw_response_list(self, async_client: AsyncBrainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = await response.parse() - assert worker is None + assert_matches_type(WorkerListResponse, worker, path=["response"]) @pytest.mark.skip() @parametrize @@ -391,7 +394,7 @@ async def test_streaming_response_list(self, async_client: AsyncBrainbase) -> No assert response.http_request.headers.get("X-Stainless-Lang") == "python" worker = await response.parse() - assert worker is None + assert_matches_type(WorkerListResponse, worker, path=["response"]) assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/workers/deployments/test_voice.py b/tests/api_resources/workers/deployments/test_voice.py index 2dcae328..7bdabc59 100644 --- a/tests/api_resources/workers/deployments/test_voice.py +++ b/tests/api_resources/workers/deployments/test_voice.py @@ -8,6 +8,13 @@ import pytest from brainbase import Brainbase, AsyncBrainbase +from tests.utils import assert_matches_type +from brainbase.types.workers.deployments import ( + VoiceListResponse, + VoiceCreateResponse, + VoiceUpdateResponse, + VoiceRetrieveResponse, +) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -20,52 +27,47 @@ class TestVoice: def test_method_create(self, client: Brainbase) -> None: voice = client.workers.deployments.voice.create( worker_id="workerId", - flow_id="flowId", name="name", ) - assert voice is None + assert_matches_type(VoiceCreateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize def test_method_create_with_all_params(self, client: Brainbase) -> None: voice = client.workers.deployments.voice.create( worker_id="workerId", - flow_id="flowId", name="name", - config={}, phone_number="phoneNumber", voice_id="voiceId", voice_provider="voiceProvider", ) - assert voice is None + assert_matches_type(VoiceCreateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize def test_raw_response_create(self, client: Brainbase) -> None: response = client.workers.deployments.voice.with_raw_response.create( worker_id="workerId", - flow_id="flowId", name="name", ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = response.parse() - assert voice is None + assert_matches_type(VoiceCreateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize def test_streaming_response_create(self, client: Brainbase) -> None: with client.workers.deployments.voice.with_streaming_response.create( worker_id="workerId", - flow_id="flowId", name="name", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = response.parse() - assert voice is None + assert_matches_type(VoiceCreateResponse, voice, path=["response"]) assert cast(Any, response.is_closed) is True @@ -75,7 +77,6 @@ def test_path_params_create(self, client: Brainbase) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `worker_id` but received ''"): client.workers.deployments.voice.with_raw_response.create( worker_id="", - flow_id="flowId", name="name", ) @@ -86,7 +87,7 @@ def test_method_retrieve(self, client: Brainbase) -> None: deployment_id="deploymentId", worker_id="workerId", ) - assert voice is None + assert_matches_type(VoiceRetrieveResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -99,7 +100,7 @@ def test_raw_response_retrieve(self, client: Brainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = response.parse() - assert voice is None + assert_matches_type(VoiceRetrieveResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -112,7 +113,7 @@ def test_streaming_response_retrieve(self, client: Brainbase) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = response.parse() - assert voice is None + assert_matches_type(VoiceRetrieveResponse, voice, path=["response"]) assert cast(Any, response.is_closed) is True @@ -137,8 +138,9 @@ def test_method_update(self, client: Brainbase) -> None: voice = client.workers.deployments.voice.update( deployment_id="deploymentId", worker_id="workerId", + name="name", ) - assert voice is None + assert_matches_type(VoiceUpdateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -146,14 +148,12 @@ def test_method_update_with_all_params(self, client: Brainbase) -> None: voice = client.workers.deployments.voice.update( deployment_id="deploymentId", worker_id="workerId", - config={}, - flow_id="flowId", name="name", phone_number="phoneNumber", voice_id="voiceId", voice_provider="voiceProvider", ) - assert voice is None + assert_matches_type(VoiceUpdateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -161,12 +161,13 @@ def test_raw_response_update(self, client: Brainbase) -> None: response = client.workers.deployments.voice.with_raw_response.update( deployment_id="deploymentId", worker_id="workerId", + name="name", ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = response.parse() - assert voice is None + assert_matches_type(VoiceUpdateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -174,12 +175,13 @@ def test_streaming_response_update(self, client: Brainbase) -> None: with client.workers.deployments.voice.with_streaming_response.update( deployment_id="deploymentId", worker_id="workerId", + name="name", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = response.parse() - assert voice is None + assert_matches_type(VoiceUpdateResponse, voice, path=["response"]) assert cast(Any, response.is_closed) is True @@ -190,12 +192,14 @@ def test_path_params_update(self, client: Brainbase) -> None: client.workers.deployments.voice.with_raw_response.update( deployment_id="deploymentId", worker_id="", + name="name", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `deployment_id` but received ''"): client.workers.deployments.voice.with_raw_response.update( deployment_id="", worker_id="workerId", + name="name", ) @pytest.mark.skip() @@ -204,7 +208,7 @@ def test_method_list(self, client: Brainbase) -> None: voice = client.workers.deployments.voice.list( "workerId", ) - assert voice is None + assert_matches_type(VoiceListResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -216,7 +220,7 @@ def test_raw_response_list(self, client: Brainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = response.parse() - assert voice is None + assert_matches_type(VoiceListResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -228,7 +232,7 @@ def test_streaming_response_list(self, client: Brainbase) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = response.parse() - assert voice is None + assert_matches_type(VoiceListResponse, voice, path=["response"]) assert cast(Any, response.is_closed) is True @@ -301,52 +305,47 @@ class TestAsyncVoice: async def test_method_create(self, async_client: AsyncBrainbase) -> None: voice = await async_client.workers.deployments.voice.create( worker_id="workerId", - flow_id="flowId", name="name", ) - assert voice is None + assert_matches_type(VoiceCreateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize async def test_method_create_with_all_params(self, async_client: AsyncBrainbase) -> None: voice = await async_client.workers.deployments.voice.create( worker_id="workerId", - flow_id="flowId", name="name", - config={}, phone_number="phoneNumber", voice_id="voiceId", voice_provider="voiceProvider", ) - assert voice is None + assert_matches_type(VoiceCreateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize async def test_raw_response_create(self, async_client: AsyncBrainbase) -> None: response = await async_client.workers.deployments.voice.with_raw_response.create( worker_id="workerId", - flow_id="flowId", name="name", ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = await response.parse() - assert voice is None + assert_matches_type(VoiceCreateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize async def test_streaming_response_create(self, async_client: AsyncBrainbase) -> None: async with async_client.workers.deployments.voice.with_streaming_response.create( worker_id="workerId", - flow_id="flowId", name="name", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = await response.parse() - assert voice is None + assert_matches_type(VoiceCreateResponse, voice, path=["response"]) assert cast(Any, response.is_closed) is True @@ -356,7 +355,6 @@ async def test_path_params_create(self, async_client: AsyncBrainbase) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `worker_id` but received ''"): await async_client.workers.deployments.voice.with_raw_response.create( worker_id="", - flow_id="flowId", name="name", ) @@ -367,7 +365,7 @@ async def test_method_retrieve(self, async_client: AsyncBrainbase) -> None: deployment_id="deploymentId", worker_id="workerId", ) - assert voice is None + assert_matches_type(VoiceRetrieveResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -380,7 +378,7 @@ async def test_raw_response_retrieve(self, async_client: AsyncBrainbase) -> None assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = await response.parse() - assert voice is None + assert_matches_type(VoiceRetrieveResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -393,7 +391,7 @@ async def test_streaming_response_retrieve(self, async_client: AsyncBrainbase) - assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = await response.parse() - assert voice is None + assert_matches_type(VoiceRetrieveResponse, voice, path=["response"]) assert cast(Any, response.is_closed) is True @@ -418,8 +416,9 @@ async def test_method_update(self, async_client: AsyncBrainbase) -> None: voice = await async_client.workers.deployments.voice.update( deployment_id="deploymentId", worker_id="workerId", + name="name", ) - assert voice is None + assert_matches_type(VoiceUpdateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -427,14 +426,12 @@ async def test_method_update_with_all_params(self, async_client: AsyncBrainbase) voice = await async_client.workers.deployments.voice.update( deployment_id="deploymentId", worker_id="workerId", - config={}, - flow_id="flowId", name="name", phone_number="phoneNumber", voice_id="voiceId", voice_provider="voiceProvider", ) - assert voice is None + assert_matches_type(VoiceUpdateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -442,12 +439,13 @@ async def test_raw_response_update(self, async_client: AsyncBrainbase) -> None: response = await async_client.workers.deployments.voice.with_raw_response.update( deployment_id="deploymentId", worker_id="workerId", + name="name", ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = await response.parse() - assert voice is None + assert_matches_type(VoiceUpdateResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -455,12 +453,13 @@ async def test_streaming_response_update(self, async_client: AsyncBrainbase) -> async with async_client.workers.deployments.voice.with_streaming_response.update( deployment_id="deploymentId", worker_id="workerId", + name="name", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = await response.parse() - assert voice is None + assert_matches_type(VoiceUpdateResponse, voice, path=["response"]) assert cast(Any, response.is_closed) is True @@ -471,12 +470,14 @@ async def test_path_params_update(self, async_client: AsyncBrainbase) -> None: await async_client.workers.deployments.voice.with_raw_response.update( deployment_id="deploymentId", worker_id="", + name="name", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `deployment_id` but received ''"): await async_client.workers.deployments.voice.with_raw_response.update( deployment_id="", worker_id="workerId", + name="name", ) @pytest.mark.skip() @@ -485,7 +486,7 @@ async def test_method_list(self, async_client: AsyncBrainbase) -> None: voice = await async_client.workers.deployments.voice.list( "workerId", ) - assert voice is None + assert_matches_type(VoiceListResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -497,7 +498,7 @@ async def test_raw_response_list(self, async_client: AsyncBrainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = await response.parse() - assert voice is None + assert_matches_type(VoiceListResponse, voice, path=["response"]) @pytest.mark.skip() @parametrize @@ -509,7 +510,7 @@ async def test_streaming_response_list(self, async_client: AsyncBrainbase) -> No assert response.http_request.headers.get("X-Stainless-Lang") == "python" voice = await response.parse() - assert voice is None + assert_matches_type(VoiceListResponse, voice, path=["response"]) assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/workers/test_flows.py b/tests/api_resources/workers/test_flows.py index d529a7aa..e4d645ca 100644 --- a/tests/api_resources/workers/test_flows.py +++ b/tests/api_resources/workers/test_flows.py @@ -8,6 +8,13 @@ import pytest from brainbase import Brainbase, AsyncBrainbase +from tests.utils import assert_matches_type +from brainbase.types.workers import ( + FlowListResponse, + FlowCreateResponse, + FlowUpdateResponse, + FlowRetrieveResponse, +) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -20,46 +27,49 @@ class TestFlows: def test_method_create(self, client: Brainbase) -> None: flow = client.workers.flows.create( worker_id="workerId", + code="code", name="name", ) - assert flow is None + assert_matches_type(FlowCreateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize def test_method_create_with_all_params(self, client: Brainbase) -> None: flow = client.workers.flows.create( worker_id="workerId", - name="name", code="code", + name="name", label="label", ) - assert flow is None + assert_matches_type(FlowCreateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize def test_raw_response_create(self, client: Brainbase) -> None: response = client.workers.flows.with_raw_response.create( worker_id="workerId", + code="code", name="name", ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = response.parse() - assert flow is None + assert_matches_type(FlowCreateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize def test_streaming_response_create(self, client: Brainbase) -> None: with client.workers.flows.with_streaming_response.create( worker_id="workerId", + code="code", name="name", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = response.parse() - assert flow is None + assert_matches_type(FlowCreateResponse, flow, path=["response"]) assert cast(Any, response.is_closed) is True @@ -69,6 +79,7 @@ def test_path_params_create(self, client: Brainbase) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `worker_id` but received ''"): client.workers.flows.with_raw_response.create( worker_id="", + code="code", name="name", ) @@ -79,7 +90,7 @@ def test_method_retrieve(self, client: Brainbase) -> None: flow_id="flowId", worker_id="workerId", ) - assert flow is None + assert_matches_type(FlowRetrieveResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -92,7 +103,7 @@ def test_raw_response_retrieve(self, client: Brainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = response.parse() - assert flow is None + assert_matches_type(FlowRetrieveResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -105,7 +116,7 @@ def test_streaming_response_retrieve(self, client: Brainbase) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = response.parse() - assert flow is None + assert_matches_type(FlowRetrieveResponse, flow, path=["response"]) assert cast(Any, response.is_closed) is True @@ -131,7 +142,7 @@ def test_method_update(self, client: Brainbase) -> None: flow_id="flowId", worker_id="workerId", ) - assert flow is None + assert_matches_type(FlowUpdateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -143,7 +154,7 @@ def test_method_update_with_all_params(self, client: Brainbase) -> None: label="label", name="name", ) - assert flow is None + assert_matches_type(FlowUpdateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -156,7 +167,7 @@ def test_raw_response_update(self, client: Brainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = response.parse() - assert flow is None + assert_matches_type(FlowUpdateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -169,7 +180,7 @@ def test_streaming_response_update(self, client: Brainbase) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = response.parse() - assert flow is None + assert_matches_type(FlowUpdateResponse, flow, path=["response"]) assert cast(Any, response.is_closed) is True @@ -194,7 +205,7 @@ def test_method_list(self, client: Brainbase) -> None: flow = client.workers.flows.list( "workerId", ) - assert flow is None + assert_matches_type(FlowListResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -206,7 +217,7 @@ def test_raw_response_list(self, client: Brainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = response.parse() - assert flow is None + assert_matches_type(FlowListResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -218,7 +229,7 @@ def test_streaming_response_list(self, client: Brainbase) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = response.parse() - assert flow is None + assert_matches_type(FlowListResponse, flow, path=["response"]) assert cast(Any, response.is_closed) is True @@ -291,46 +302,49 @@ class TestAsyncFlows: async def test_method_create(self, async_client: AsyncBrainbase) -> None: flow = await async_client.workers.flows.create( worker_id="workerId", + code="code", name="name", ) - assert flow is None + assert_matches_type(FlowCreateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize async def test_method_create_with_all_params(self, async_client: AsyncBrainbase) -> None: flow = await async_client.workers.flows.create( worker_id="workerId", - name="name", code="code", + name="name", label="label", ) - assert flow is None + assert_matches_type(FlowCreateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize async def test_raw_response_create(self, async_client: AsyncBrainbase) -> None: response = await async_client.workers.flows.with_raw_response.create( worker_id="workerId", + code="code", name="name", ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = await response.parse() - assert flow is None + assert_matches_type(FlowCreateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize async def test_streaming_response_create(self, async_client: AsyncBrainbase) -> None: async with async_client.workers.flows.with_streaming_response.create( worker_id="workerId", + code="code", name="name", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = await response.parse() - assert flow is None + assert_matches_type(FlowCreateResponse, flow, path=["response"]) assert cast(Any, response.is_closed) is True @@ -340,6 +354,7 @@ async def test_path_params_create(self, async_client: AsyncBrainbase) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `worker_id` but received ''"): await async_client.workers.flows.with_raw_response.create( worker_id="", + code="code", name="name", ) @@ -350,7 +365,7 @@ async def test_method_retrieve(self, async_client: AsyncBrainbase) -> None: flow_id="flowId", worker_id="workerId", ) - assert flow is None + assert_matches_type(FlowRetrieveResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -363,7 +378,7 @@ async def test_raw_response_retrieve(self, async_client: AsyncBrainbase) -> None assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = await response.parse() - assert flow is None + assert_matches_type(FlowRetrieveResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -376,7 +391,7 @@ async def test_streaming_response_retrieve(self, async_client: AsyncBrainbase) - assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = await response.parse() - assert flow is None + assert_matches_type(FlowRetrieveResponse, flow, path=["response"]) assert cast(Any, response.is_closed) is True @@ -402,7 +417,7 @@ async def test_method_update(self, async_client: AsyncBrainbase) -> None: flow_id="flowId", worker_id="workerId", ) - assert flow is None + assert_matches_type(FlowUpdateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -414,7 +429,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncBrainbase) label="label", name="name", ) - assert flow is None + assert_matches_type(FlowUpdateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -427,7 +442,7 @@ async def test_raw_response_update(self, async_client: AsyncBrainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = await response.parse() - assert flow is None + assert_matches_type(FlowUpdateResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -440,7 +455,7 @@ async def test_streaming_response_update(self, async_client: AsyncBrainbase) -> assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = await response.parse() - assert flow is None + assert_matches_type(FlowUpdateResponse, flow, path=["response"]) assert cast(Any, response.is_closed) is True @@ -465,7 +480,7 @@ async def test_method_list(self, async_client: AsyncBrainbase) -> None: flow = await async_client.workers.flows.list( "workerId", ) - assert flow is None + assert_matches_type(FlowListResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -477,7 +492,7 @@ async def test_raw_response_list(self, async_client: AsyncBrainbase) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = await response.parse() - assert flow is None + assert_matches_type(FlowListResponse, flow, path=["response"]) @pytest.mark.skip() @parametrize @@ -489,7 +504,7 @@ async def test_streaming_response_list(self, async_client: AsyncBrainbase) -> No assert response.http_request.headers.get("X-Stainless-Lang") == "python" flow = await response.parse() - assert flow is None + assert_matches_type(FlowListResponse, flow, path=["response"]) assert cast(Any, response.is_closed) is True