Skip to content

Commit 074f06d

Browse files
feat(api): manual updates
1 parent 8b5256c commit 074f06d

File tree

8 files changed

+332
-6
lines changed

8 files changed

+332
-6
lines changed

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 18
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-c14a7d6b23a7fd42a26a7c55a668d1dcd2e4b58354b878e696bc959d808c71c9.yml
3-
openapi_spec_hash: a0878bab95e435f9ce0d2418f0784d06
4-
config_hash: b3ca4ec5b02e5333af51ebc2e9fdef1b
1+
configured_endpoints: 20
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-be7a4aeebb1605262935b4b3ab446a95b1fad8a7d18098943dd548c8a486ef13.yml
3+
openapi_spec_hash: 047517d5a996009459c04f2fe3b0d3f9
4+
config_hash: 5a44f3aad0ead6985fbdf0294c79286b

api.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Methods:
1111
- <code title="post /v1/contexts">client.contexts.<a href="./src/browserbase/resources/contexts.py">create</a>(\*\*<a href="src/browserbase/types/context_create_params.py">params</a>) -> <a href="./src/browserbase/types/context_create_response.py">ContextCreateResponse</a></code>
1212
- <code title="get /v1/contexts/{id}">client.contexts.<a href="./src/browserbase/resources/contexts.py">retrieve</a>(id) -> <a href="./src/browserbase/types/context_retrieve_response.py">ContextRetrieveResponse</a></code>
1313
- <code title="put /v1/contexts/{id}">client.contexts.<a href="./src/browserbase/resources/contexts.py">update</a>(id) -> <a href="./src/browserbase/types/context_update_response.py">ContextUpdateResponse</a></code>
14+
- <code title="delete /v1/contexts/{id}">client.contexts.<a href="./src/browserbase/resources/contexts.py">delete</a>(id) -> None</code>
1415

1516
# Extensions
1617

@@ -67,6 +68,7 @@ Methods:
6768
Methods:
6869

6970
- <code title="get /v1/sessions/{id}/downloads">client.sessions.downloads.<a href="./src/browserbase/resources/sessions/downloads.py">list</a>(id) -> BinaryAPIResponse</code>
71+
- <code title="delete /v1/sessions/{id}/downloads">client.sessions.downloads.<a href="./src/browserbase/resources/sessions/downloads.py">delete</a>(id) -> None</code>
7072

7173
## Logs
7274

src/browserbase/resources/contexts.py

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import httpx
66

77
from ..types import context_create_params
8-
from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
8+
from .._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
99
from .._utils import maybe_transform, async_maybe_transform
1010
from .._compat import cached_property
1111
from .._resource import SyncAPIResource, AsyncAPIResource
@@ -145,6 +145,40 @@ def update(
145145
cast_to=ContextUpdateResponse,
146146
)
147147

148+
def delete(
149+
self,
150+
id: str,
151+
*,
152+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
153+
# The extra values given here take precedence over values defined on the client or passed to this method.
154+
extra_headers: Headers | None = None,
155+
extra_query: Query | None = None,
156+
extra_body: Body | None = None,
157+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
158+
) -> None:
159+
"""
160+
Delete a Context
161+
162+
Args:
163+
extra_headers: Send extra headers
164+
165+
extra_query: Add additional query parameters to the request
166+
167+
extra_body: Add additional JSON properties to the request
168+
169+
timeout: Override the client-level default timeout for this request, in seconds
170+
"""
171+
if not id:
172+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
173+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
174+
return self._delete(
175+
f"/v1/contexts/{id}",
176+
options=make_request_options(
177+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
178+
),
179+
cast_to=NoneType,
180+
)
181+
148182

149183
class AsyncContextsResource(AsyncAPIResource):
150184
@cached_property
@@ -268,6 +302,40 @@ async def update(
268302
cast_to=ContextUpdateResponse,
269303
)
270304

305+
async def delete(
306+
self,
307+
id: str,
308+
*,
309+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
310+
# The extra values given here take precedence over values defined on the client or passed to this method.
311+
extra_headers: Headers | None = None,
312+
extra_query: Query | None = None,
313+
extra_body: Body | None = None,
314+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
315+
) -> None:
316+
"""
317+
Delete a Context
318+
319+
Args:
320+
extra_headers: Send extra headers
321+
322+
extra_query: Add additional query parameters to the request
323+
324+
extra_body: Add additional JSON properties to the request
325+
326+
timeout: Override the client-level default timeout for this request, in seconds
327+
"""
328+
if not id:
329+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
330+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
331+
return await self._delete(
332+
f"/v1/contexts/{id}",
333+
options=make_request_options(
334+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
335+
),
336+
cast_to=NoneType,
337+
)
338+
271339

272340
class ContextsResourceWithRawResponse:
273341
def __init__(self, contexts: ContextsResource) -> None:
@@ -282,6 +350,9 @@ def __init__(self, contexts: ContextsResource) -> None:
282350
self.update = to_raw_response_wrapper(
283351
contexts.update,
284352
)
353+
self.delete = to_raw_response_wrapper(
354+
contexts.delete,
355+
)
285356

286357

287358
class AsyncContextsResourceWithRawResponse:
@@ -297,6 +368,9 @@ def __init__(self, contexts: AsyncContextsResource) -> None:
297368
self.update = async_to_raw_response_wrapper(
298369
contexts.update,
299370
)
371+
self.delete = async_to_raw_response_wrapper(
372+
contexts.delete,
373+
)
300374

301375

302376
class ContextsResourceWithStreamingResponse:
@@ -312,6 +386,9 @@ def __init__(self, contexts: ContextsResource) -> None:
312386
self.update = to_streamed_response_wrapper(
313387
contexts.update,
314388
)
389+
self.delete = to_streamed_response_wrapper(
390+
contexts.delete,
391+
)
315392

316393

317394
class AsyncContextsResourceWithStreamingResponse:
@@ -327,3 +404,6 @@ def __init__(self, contexts: AsyncContextsResource) -> None:
327404
self.update = async_to_streamed_response_wrapper(
328405
contexts.update,
329406
)
407+
self.delete = async_to_streamed_response_wrapper(
408+
contexts.delete,
409+
)

src/browserbase/resources/sessions/downloads.py

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@
44

55
import httpx
66

7-
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
7+
from ..._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
88
from ..._compat import cached_property
99
from ..._resource import SyncAPIResource, AsyncAPIResource
1010
from ..._response import (
1111
BinaryAPIResponse,
1212
AsyncBinaryAPIResponse,
1313
StreamedBinaryAPIResponse,
1414
AsyncStreamedBinaryAPIResponse,
15+
to_raw_response_wrapper,
16+
to_streamed_response_wrapper,
17+
async_to_raw_response_wrapper,
1518
to_custom_raw_response_wrapper,
19+
async_to_streamed_response_wrapper,
1620
to_custom_streamed_response_wrapper,
1721
async_to_custom_raw_response_wrapper,
1822
async_to_custom_streamed_response_wrapper,
@@ -76,6 +80,40 @@ def list(
7680
cast_to=BinaryAPIResponse,
7781
)
7882

83+
def delete(
84+
self,
85+
id: str,
86+
*,
87+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
88+
# The extra values given here take precedence over values defined on the client or passed to this method.
89+
extra_headers: Headers | None = None,
90+
extra_query: Query | None = None,
91+
extra_body: Body | None = None,
92+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
93+
) -> None:
94+
"""
95+
Delete Session Downloads
96+
97+
Args:
98+
extra_headers: Send extra headers
99+
100+
extra_query: Add additional query parameters to the request
101+
102+
extra_body: Add additional JSON properties to the request
103+
104+
timeout: Override the client-level default timeout for this request, in seconds
105+
"""
106+
if not id:
107+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
108+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
109+
return self._delete(
110+
f"/v1/sessions/{id}/downloads",
111+
options=make_request_options(
112+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
113+
),
114+
cast_to=NoneType,
115+
)
116+
79117

80118
class AsyncDownloadsResource(AsyncAPIResource):
81119
@cached_property
@@ -131,6 +169,40 @@ async def list(
131169
cast_to=AsyncBinaryAPIResponse,
132170
)
133171

172+
async def delete(
173+
self,
174+
id: str,
175+
*,
176+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
177+
# The extra values given here take precedence over values defined on the client or passed to this method.
178+
extra_headers: Headers | None = None,
179+
extra_query: Query | None = None,
180+
extra_body: Body | None = None,
181+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
182+
) -> None:
183+
"""
184+
Delete Session Downloads
185+
186+
Args:
187+
extra_headers: Send extra headers
188+
189+
extra_query: Add additional query parameters to the request
190+
191+
extra_body: Add additional JSON properties to the request
192+
193+
timeout: Override the client-level default timeout for this request, in seconds
194+
"""
195+
if not id:
196+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
197+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
198+
return await self._delete(
199+
f"/v1/sessions/{id}/downloads",
200+
options=make_request_options(
201+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
202+
),
203+
cast_to=NoneType,
204+
)
205+
134206

135207
class DownloadsResourceWithRawResponse:
136208
def __init__(self, downloads: DownloadsResource) -> None:
@@ -140,6 +212,9 @@ def __init__(self, downloads: DownloadsResource) -> None:
140212
downloads.list,
141213
BinaryAPIResponse,
142214
)
215+
self.delete = to_raw_response_wrapper(
216+
downloads.delete,
217+
)
143218

144219

145220
class AsyncDownloadsResourceWithRawResponse:
@@ -150,6 +225,9 @@ def __init__(self, downloads: AsyncDownloadsResource) -> None:
150225
downloads.list,
151226
AsyncBinaryAPIResponse,
152227
)
228+
self.delete = async_to_raw_response_wrapper(
229+
downloads.delete,
230+
)
153231

154232

155233
class DownloadsResourceWithStreamingResponse:
@@ -160,6 +238,9 @@ def __init__(self, downloads: DownloadsResource) -> None:
160238
downloads.list,
161239
StreamedBinaryAPIResponse,
162240
)
241+
self.delete = to_streamed_response_wrapper(
242+
downloads.delete,
243+
)
163244

164245

165246
class AsyncDownloadsResourceWithStreamingResponse:
@@ -170,3 +251,6 @@ def __init__(self, downloads: AsyncDownloadsResource) -> None:
170251
downloads.list,
171252
AsyncStreamedBinaryAPIResponse,
172253
)
254+
self.delete = async_to_streamed_response_wrapper(
255+
downloads.delete,
256+
)

src/browserbase/types/session_create_params.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,12 @@ class BrowserSettings(TypedDict, total=False):
144144
log_session: Annotated[bool, PropertyInfo(alias="logSession")]
145145
"""Enable or disable session logging. Defaults to `true`."""
146146

147+
os: Literal["windows", "mac", "linux", "mobile", "tablet"]
148+
"""Operating system for stealth mode.
149+
150+
Valid values: windows, mac, linux, mobile, tablet
151+
"""
152+
147153
record_session: Annotated[bool, PropertyInfo(alias="recordSession")]
148154
"""Enable or disable session recording. Defaults to `true`."""
149155

tests/api_resources/sessions/test_downloads.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,44 @@ def test_path_params_list(self, client: Browserbase) -> None:
7373
"",
7474
)
7575

76+
@parametrize
77+
def test_method_delete(self, client: Browserbase) -> None:
78+
download = client.sessions.downloads.delete(
79+
"id",
80+
)
81+
assert download is None
82+
83+
@parametrize
84+
def test_raw_response_delete(self, client: Browserbase) -> None:
85+
response = client.sessions.downloads.with_raw_response.delete(
86+
"id",
87+
)
88+
89+
assert response.is_closed is True
90+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
91+
download = response.parse()
92+
assert download is None
93+
94+
@parametrize
95+
def test_streaming_response_delete(self, client: Browserbase) -> None:
96+
with client.sessions.downloads.with_streaming_response.delete(
97+
"id",
98+
) as response:
99+
assert not response.is_closed
100+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
101+
102+
download = response.parse()
103+
assert download is None
104+
105+
assert cast(Any, response.is_closed) is True
106+
107+
@parametrize
108+
def test_path_params_delete(self, client: Browserbase) -> None:
109+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
110+
client.sessions.downloads.with_raw_response.delete(
111+
"",
112+
)
113+
76114

77115
class TestAsyncDownloads:
78116
parametrize = pytest.mark.parametrize(
@@ -128,3 +166,41 @@ async def test_path_params_list(self, async_client: AsyncBrowserbase) -> None:
128166
await async_client.sessions.downloads.with_raw_response.list(
129167
"",
130168
)
169+
170+
@parametrize
171+
async def test_method_delete(self, async_client: AsyncBrowserbase) -> None:
172+
download = await async_client.sessions.downloads.delete(
173+
"id",
174+
)
175+
assert download is None
176+
177+
@parametrize
178+
async def test_raw_response_delete(self, async_client: AsyncBrowserbase) -> None:
179+
response = await async_client.sessions.downloads.with_raw_response.delete(
180+
"id",
181+
)
182+
183+
assert response.is_closed is True
184+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
185+
download = await response.parse()
186+
assert download is None
187+
188+
@parametrize
189+
async def test_streaming_response_delete(self, async_client: AsyncBrowserbase) -> None:
190+
async with async_client.sessions.downloads.with_streaming_response.delete(
191+
"id",
192+
) as response:
193+
assert not response.is_closed
194+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
195+
196+
download = await response.parse()
197+
assert download is None
198+
199+
assert cast(Any, response.is_closed) is True
200+
201+
@parametrize
202+
async def test_path_params_delete(self, async_client: AsyncBrowserbase) -> None:
203+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
204+
await async_client.sessions.downloads.with_raw_response.delete(
205+
"",
206+
)

0 commit comments

Comments
 (0)