Skip to content

Commit a56673c

Browse files
feat: [CORE-1804][apps/api] Add fetch API schema
1 parent 8ff9f32 commit a56673c

File tree

9 files changed

+431
-5
lines changed

9 files changed

+431
-5
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: 19
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-215bc4361122162181eecce83c0dbdda7c45a21801e7addb75102e8011413069.yml
3-
openapi_spec_hash: c4fadc5bb6b84cd3988c8d864b67bf61
4-
config_hash: a106b247c7cdf02ac1033077402cfe2d
1+
configured_endpoints: 20
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-b20f9fea14d79990ab1af3d276f931e026cd955ac623ec6ace80b2af90de170f.yml
3+
openapi_spec_hash: 943ff4b3297014503fdc9854544cb9a4
4+
config_hash: 55c54fdafc9e80be584829b5724b00ab

api.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ Methods:
2727
- <code title="get /v1/extensions/{id}">client.extensions.<a href="./src/browserbase/resources/extensions.py">retrieve</a>(id) -> <a href="./src/browserbase/types/extension.py">Extension</a></code>
2828
- <code title="delete /v1/extensions/{id}">client.extensions.<a href="./src/browserbase/resources/extensions.py">delete</a>(id) -> None</code>
2929

30+
# FetchAPI
31+
32+
Types:
33+
34+
```python
35+
from browserbase.types import FetchAPICreateResponse
36+
```
37+
38+
Methods:
39+
40+
- <code title="post /v1/fetch">client.fetch_api.<a href="./src/browserbase/resources/fetch_api.py">create</a>(\*\*<a href="src/browserbase/types/fetch_api_create_params.py">params</a>) -> <a href="./src/browserbase/types/fetch_api_create_response.py">FetchAPICreateResponse</a></code>
41+
3042
# Projects
3143

3244
Types:

src/browserbase/_client.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@
3131
)
3232

3333
if TYPE_CHECKING:
34-
from .resources import contexts, projects, sessions, extensions
34+
from .resources import contexts, projects, sessions, fetch_api, extensions
3535
from .resources.contexts import ContextsResource, AsyncContextsResource
3636
from .resources.projects import ProjectsResource, AsyncProjectsResource
37+
from .resources.fetch_api import FetchAPIResource, AsyncFetchAPIResource
3738
from .resources.extensions import ExtensionsResource, AsyncExtensionsResource
3839
from .resources.sessions.sessions import SessionsResource, AsyncSessionsResource
3940

@@ -116,6 +117,12 @@ def extensions(self) -> ExtensionsResource:
116117

117118
return ExtensionsResource(self)
118119

120+
@cached_property
121+
def fetch_api(self) -> FetchAPIResource:
122+
from .resources.fetch_api import FetchAPIResource
123+
124+
return FetchAPIResource(self)
125+
119126
@cached_property
120127
def projects(self) -> ProjectsResource:
121128
from .resources.projects import ProjectsResource
@@ -308,6 +315,12 @@ def extensions(self) -> AsyncExtensionsResource:
308315

309316
return AsyncExtensionsResource(self)
310317

318+
@cached_property
319+
def fetch_api(self) -> AsyncFetchAPIResource:
320+
from .resources.fetch_api import AsyncFetchAPIResource
321+
322+
return AsyncFetchAPIResource(self)
323+
311324
@cached_property
312325
def projects(self) -> AsyncProjectsResource:
313326
from .resources.projects import AsyncProjectsResource
@@ -451,6 +464,12 @@ def extensions(self) -> extensions.ExtensionsResourceWithRawResponse:
451464

452465
return ExtensionsResourceWithRawResponse(self._client.extensions)
453466

467+
@cached_property
468+
def fetch_api(self) -> fetch_api.FetchAPIResourceWithRawResponse:
469+
from .resources.fetch_api import FetchAPIResourceWithRawResponse
470+
471+
return FetchAPIResourceWithRawResponse(self._client.fetch_api)
472+
454473
@cached_property
455474
def projects(self) -> projects.ProjectsResourceWithRawResponse:
456475
from .resources.projects import ProjectsResourceWithRawResponse
@@ -482,6 +501,12 @@ def extensions(self) -> extensions.AsyncExtensionsResourceWithRawResponse:
482501

483502
return AsyncExtensionsResourceWithRawResponse(self._client.extensions)
484503

504+
@cached_property
505+
def fetch_api(self) -> fetch_api.AsyncFetchAPIResourceWithRawResponse:
506+
from .resources.fetch_api import AsyncFetchAPIResourceWithRawResponse
507+
508+
return AsyncFetchAPIResourceWithRawResponse(self._client.fetch_api)
509+
485510
@cached_property
486511
def projects(self) -> projects.AsyncProjectsResourceWithRawResponse:
487512
from .resources.projects import AsyncProjectsResourceWithRawResponse
@@ -513,6 +538,12 @@ def extensions(self) -> extensions.ExtensionsResourceWithStreamingResponse:
513538

514539
return ExtensionsResourceWithStreamingResponse(self._client.extensions)
515540

541+
@cached_property
542+
def fetch_api(self) -> fetch_api.FetchAPIResourceWithStreamingResponse:
543+
from .resources.fetch_api import FetchAPIResourceWithStreamingResponse
544+
545+
return FetchAPIResourceWithStreamingResponse(self._client.fetch_api)
546+
516547
@cached_property
517548
def projects(self) -> projects.ProjectsResourceWithStreamingResponse:
518549
from .resources.projects import ProjectsResourceWithStreamingResponse
@@ -544,6 +575,12 @@ def extensions(self) -> extensions.AsyncExtensionsResourceWithStreamingResponse:
544575

545576
return AsyncExtensionsResourceWithStreamingResponse(self._client.extensions)
546577

578+
@cached_property
579+
def fetch_api(self) -> fetch_api.AsyncFetchAPIResourceWithStreamingResponse:
580+
from .resources.fetch_api import AsyncFetchAPIResourceWithStreamingResponse
581+
582+
return AsyncFetchAPIResourceWithStreamingResponse(self._client.fetch_api)
583+
547584
@cached_property
548585
def projects(self) -> projects.AsyncProjectsResourceWithStreamingResponse:
549586
from .resources.projects import AsyncProjectsResourceWithStreamingResponse

src/browserbase/resources/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@
2424
SessionsResourceWithStreamingResponse,
2525
AsyncSessionsResourceWithStreamingResponse,
2626
)
27+
from .fetch_api import (
28+
FetchAPIResource,
29+
AsyncFetchAPIResource,
30+
FetchAPIResourceWithRawResponse,
31+
AsyncFetchAPIResourceWithRawResponse,
32+
FetchAPIResourceWithStreamingResponse,
33+
AsyncFetchAPIResourceWithStreamingResponse,
34+
)
2735
from .extensions import (
2836
ExtensionsResource,
2937
AsyncExtensionsResource,
@@ -46,6 +54,12 @@
4654
"AsyncExtensionsResourceWithRawResponse",
4755
"ExtensionsResourceWithStreamingResponse",
4856
"AsyncExtensionsResourceWithStreamingResponse",
57+
"FetchAPIResource",
58+
"AsyncFetchAPIResource",
59+
"FetchAPIResourceWithRawResponse",
60+
"AsyncFetchAPIResourceWithRawResponse",
61+
"FetchAPIResourceWithStreamingResponse",
62+
"AsyncFetchAPIResourceWithStreamingResponse",
4963
"ProjectsResource",
5064
"AsyncProjectsResource",
5165
"ProjectsResourceWithRawResponse",
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
import httpx
6+
7+
from ..types import fetch_api_create_params
8+
from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
9+
from .._utils import maybe_transform, async_maybe_transform
10+
from .._compat import cached_property
11+
from .._resource import SyncAPIResource, AsyncAPIResource
12+
from .._response import (
13+
to_raw_response_wrapper,
14+
to_streamed_response_wrapper,
15+
async_to_raw_response_wrapper,
16+
async_to_streamed_response_wrapper,
17+
)
18+
from .._base_client import make_request_options
19+
from ..types.fetch_api_create_response import FetchAPICreateResponse
20+
21+
__all__ = ["FetchAPIResource", "AsyncFetchAPIResource"]
22+
23+
24+
class FetchAPIResource(SyncAPIResource):
25+
@cached_property
26+
def with_raw_response(self) -> FetchAPIResourceWithRawResponse:
27+
"""
28+
This property can be used as a prefix for any HTTP method call to return
29+
the raw response object instead of the parsed content.
30+
31+
For more information, see https://www.github.com/browserbase/sdk-python#accessing-raw-response-data-eg-headers
32+
"""
33+
return FetchAPIResourceWithRawResponse(self)
34+
35+
@cached_property
36+
def with_streaming_response(self) -> FetchAPIResourceWithStreamingResponse:
37+
"""
38+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
39+
40+
For more information, see https://www.github.com/browserbase/sdk-python#with_streaming_response
41+
"""
42+
return FetchAPIResourceWithStreamingResponse(self)
43+
44+
def create(
45+
self,
46+
*,
47+
url: str,
48+
allow_insecure_ssl: bool | Omit = omit,
49+
allow_redirects: bool | Omit = omit,
50+
proxies: bool | Omit = omit,
51+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
52+
# The extra values given here take precedence over values defined on the client or passed to this method.
53+
extra_headers: Headers | None = None,
54+
extra_query: Query | None = None,
55+
extra_body: Body | None = None,
56+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
57+
) -> FetchAPICreateResponse:
58+
"""
59+
Fetch a page and return its content, headers, and metadata.
60+
61+
Args:
62+
url: The URL to fetch
63+
64+
allow_insecure_ssl: Whether to bypass TLS certificate verification
65+
66+
allow_redirects: Whether to follow HTTP redirects
67+
68+
proxies: Whether to enable proxy support for the request
69+
70+
extra_headers: Send extra headers
71+
72+
extra_query: Add additional query parameters to the request
73+
74+
extra_body: Add additional JSON properties to the request
75+
76+
timeout: Override the client-level default timeout for this request, in seconds
77+
"""
78+
return self._post(
79+
"/v1/fetch",
80+
body=maybe_transform(
81+
{
82+
"url": url,
83+
"allow_insecure_ssl": allow_insecure_ssl,
84+
"allow_redirects": allow_redirects,
85+
"proxies": proxies,
86+
},
87+
fetch_api_create_params.FetchAPICreateParams,
88+
),
89+
options=make_request_options(
90+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
91+
),
92+
cast_to=FetchAPICreateResponse,
93+
)
94+
95+
96+
class AsyncFetchAPIResource(AsyncAPIResource):
97+
@cached_property
98+
def with_raw_response(self) -> AsyncFetchAPIResourceWithRawResponse:
99+
"""
100+
This property can be used as a prefix for any HTTP method call to return
101+
the raw response object instead of the parsed content.
102+
103+
For more information, see https://www.github.com/browserbase/sdk-python#accessing-raw-response-data-eg-headers
104+
"""
105+
return AsyncFetchAPIResourceWithRawResponse(self)
106+
107+
@cached_property
108+
def with_streaming_response(self) -> AsyncFetchAPIResourceWithStreamingResponse:
109+
"""
110+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
111+
112+
For more information, see https://www.github.com/browserbase/sdk-python#with_streaming_response
113+
"""
114+
return AsyncFetchAPIResourceWithStreamingResponse(self)
115+
116+
async def create(
117+
self,
118+
*,
119+
url: str,
120+
allow_insecure_ssl: bool | Omit = omit,
121+
allow_redirects: bool | Omit = omit,
122+
proxies: bool | Omit = omit,
123+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
124+
# The extra values given here take precedence over values defined on the client or passed to this method.
125+
extra_headers: Headers | None = None,
126+
extra_query: Query | None = None,
127+
extra_body: Body | None = None,
128+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
129+
) -> FetchAPICreateResponse:
130+
"""
131+
Fetch a page and return its content, headers, and metadata.
132+
133+
Args:
134+
url: The URL to fetch
135+
136+
allow_insecure_ssl: Whether to bypass TLS certificate verification
137+
138+
allow_redirects: Whether to follow HTTP redirects
139+
140+
proxies: Whether to enable proxy support for the request
141+
142+
extra_headers: Send extra headers
143+
144+
extra_query: Add additional query parameters to the request
145+
146+
extra_body: Add additional JSON properties to the request
147+
148+
timeout: Override the client-level default timeout for this request, in seconds
149+
"""
150+
return await self._post(
151+
"/v1/fetch",
152+
body=await async_maybe_transform(
153+
{
154+
"url": url,
155+
"allow_insecure_ssl": allow_insecure_ssl,
156+
"allow_redirects": allow_redirects,
157+
"proxies": proxies,
158+
},
159+
fetch_api_create_params.FetchAPICreateParams,
160+
),
161+
options=make_request_options(
162+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
163+
),
164+
cast_to=FetchAPICreateResponse,
165+
)
166+
167+
168+
class FetchAPIResourceWithRawResponse:
169+
def __init__(self, fetch_api: FetchAPIResource) -> None:
170+
self._fetch_api = fetch_api
171+
172+
self.create = to_raw_response_wrapper(
173+
fetch_api.create,
174+
)
175+
176+
177+
class AsyncFetchAPIResourceWithRawResponse:
178+
def __init__(self, fetch_api: AsyncFetchAPIResource) -> None:
179+
self._fetch_api = fetch_api
180+
181+
self.create = async_to_raw_response_wrapper(
182+
fetch_api.create,
183+
)
184+
185+
186+
class FetchAPIResourceWithStreamingResponse:
187+
def __init__(self, fetch_api: FetchAPIResource) -> None:
188+
self._fetch_api = fetch_api
189+
190+
self.create = to_streamed_response_wrapper(
191+
fetch_api.create,
192+
)
193+
194+
195+
class AsyncFetchAPIResourceWithStreamingResponse:
196+
def __init__(self, fetch_api: AsyncFetchAPIResource) -> None:
197+
self._fetch_api = fetch_api
198+
199+
self.create = async_to_streamed_response_wrapper(
200+
fetch_api.create,
201+
)

src/browserbase/types/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,7 @@
1717
from .context_create_response import ContextCreateResponse as ContextCreateResponse
1818
from .context_update_response import ContextUpdateResponse as ContextUpdateResponse
1919
from .extension_create_params import ExtensionCreateParams as ExtensionCreateParams
20+
from .fetch_api_create_params import FetchAPICreateParams as FetchAPICreateParams
2021
from .session_create_response import SessionCreateResponse as SessionCreateResponse
22+
from .fetch_api_create_response import FetchAPICreateResponse as FetchAPICreateResponse
2123
from .session_retrieve_response import SessionRetrieveResponse as SessionRetrieveResponse
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
from typing_extensions import Required, Annotated, TypedDict
6+
7+
from .._utils import PropertyInfo
8+
9+
__all__ = ["FetchAPICreateParams"]
10+
11+
12+
class FetchAPICreateParams(TypedDict, total=False):
13+
url: Required[str]
14+
"""The URL to fetch"""
15+
16+
allow_insecure_ssl: Annotated[bool, PropertyInfo(alias="allowInsecureSsl")]
17+
"""Whether to bypass TLS certificate verification"""
18+
19+
allow_redirects: Annotated[bool, PropertyInfo(alias="allowRedirects")]
20+
"""Whether to follow HTTP redirects"""
21+
22+
proxies: bool
23+
"""Whether to enable proxy support for the request"""

0 commit comments

Comments
 (0)