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