From 78347f5f2a251eca20ffeb1e5d78ee843ce74415 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sun, 27 Oct 2024 01:03:36 +0000
Subject: [PATCH 1/6] feat(api): update via SDK Studio (#16)
---
.stats.yml | 2 +-
.../resources/sessions/sessions.py | 6 +-
.../types/session_create_params.py | 63 +------------------
3 files changed, 7 insertions(+), 64 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index b492b7b..0e9ae69 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
configured_endpoints: 18
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-9af27d5ca04efd55b732756ee4c81b76331e5ee8ab8c74576a3eaf16faac44f1.yml
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-70bae250a6bae7dc6efc73ce837b3244eab63318b2d4de9a77ac8733e104df5b.yml
diff --git a/src/browserbase/resources/sessions/sessions.py b/src/browserbase/resources/sessions/sessions.py
index f50cf0d..d2c8d93 100644
--- a/src/browserbase/resources/sessions/sessions.py
+++ b/src/browserbase/resources/sessions/sessions.py
@@ -2,7 +2,7 @@
from __future__ import annotations
-from typing import Union, Iterable
+from typing import Union
from typing_extensions import Literal
import httpx
@@ -104,7 +104,7 @@ def create(
browser_settings: session_create_params.BrowserSettings | NotGiven = NOT_GIVEN,
extension_id: str | NotGiven = NOT_GIVEN,
keep_alive: bool | NotGiven = NOT_GIVEN,
- proxies: Union[bool, Iterable[session_create_params.ProxiesUnionMember1]] | NotGiven = NOT_GIVEN,
+ proxies: Union[bool, object] | NotGiven = NOT_GIVEN,
api_timeout: int | 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.
@@ -354,7 +354,7 @@ async def create(
browser_settings: session_create_params.BrowserSettings | NotGiven = NOT_GIVEN,
extension_id: str | NotGiven = NOT_GIVEN,
keep_alive: bool | NotGiven = NOT_GIVEN,
- proxies: Union[bool, Iterable[session_create_params.ProxiesUnionMember1]] | NotGiven = NOT_GIVEN,
+ proxies: Union[bool, object] | NotGiven = NOT_GIVEN,
api_timeout: int | 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.
diff --git a/src/browserbase/types/session_create_params.py b/src/browserbase/types/session_create_params.py
index fd43187..add0212 100644
--- a/src/browserbase/types/session_create_params.py
+++ b/src/browserbase/types/session_create_params.py
@@ -2,8 +2,8 @@
from __future__ import annotations
-from typing import List, Union, Iterable
-from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
+from typing import List, Union
+from typing_extensions import Literal, Required, Annotated, TypedDict
from .._utils import PropertyInfo
@@ -14,10 +14,6 @@
"BrowserSettingsFingerprint",
"BrowserSettingsFingerprintScreen",
"BrowserSettingsViewport",
- "ProxiesUnionMember1",
- "ProxiesUnionMember1BrowserbaseProxyConfig",
- "ProxiesUnionMember1BrowserbaseProxyConfigGeolocation",
- "ProxiesUnionMember1ExternalProxyConfig",
]
@@ -42,7 +38,7 @@ class SessionCreateParams(TypedDict, total=False):
This is available on the Startup plan only.
"""
- proxies: Union[bool, Iterable[ProxiesUnionMember1]]
+ proxies: Union[bool, object]
"""Proxy configuration.
Can be true for default proxy, or an array of proxy configurations.
@@ -131,56 +127,3 @@ class BrowserSettings(TypedDict, total=False):
"""Enable or disable captcha solving in the browser. Defaults to `true`."""
viewport: BrowserSettingsViewport
-
-
-class ProxiesUnionMember1BrowserbaseProxyConfigGeolocation(TypedDict, total=False):
- country: Required[str]
- """Country code in ISO 3166-1 alpha-2 format"""
-
- city: str
- """Name of the city. Use spaces for multi-word city names. Optional."""
-
- state: str
- """US state code (2 characters). Must also specify US as the country. Optional."""
-
-
-class ProxiesUnionMember1BrowserbaseProxyConfig(TypedDict, total=False):
- type: Required[Literal["browserbase"]]
- """Type of proxy.
-
- Always use 'browserbase' for the Browserbase managed proxy network.
- """
-
- domain_pattern: Annotated[str, PropertyInfo(alias="domainPattern")]
- """Domain pattern for which this proxy should be used.
-
- If omitted, defaults to all domains. Optional.
- """
-
- geolocation: ProxiesUnionMember1BrowserbaseProxyConfigGeolocation
- """Configuration for geolocation"""
-
-
-class ProxiesUnionMember1ExternalProxyConfig(TypedDict, total=False):
- server: Required[str]
- """Server URL for external proxy. Required."""
-
- type: Required[Literal["external"]]
- """Type of proxy. Always 'external' for this config."""
-
- domain_pattern: Annotated[str, PropertyInfo(alias="domainPattern")]
- """Domain pattern for which this proxy should be used.
-
- If omitted, defaults to all domains. Optional.
- """
-
- password: str
- """Password for external proxy authentication. Optional."""
-
- username: str
- """Username for external proxy authentication. Optional."""
-
-
-ProxiesUnionMember1: TypeAlias = Union[
- ProxiesUnionMember1BrowserbaseProxyConfig, ProxiesUnionMember1ExternalProxyConfig
-]
From b958c13c01fd9f0cedbb5723ee54574ad769b539 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sun, 27 Oct 2024 03:06:41 +0000
Subject: [PATCH 2/6] feat(api): update via SDK Studio (#18)
---
.stats.yml | 2 +-
src/browserbase/types/session.py | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 0e9ae69..770eba6 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
configured_endpoints: 18
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-70bae250a6bae7dc6efc73ce837b3244eab63318b2d4de9a77ac8733e104df5b.yml
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-69e3c041b63edae61bddbb624edc185621be0ad4b1355395616ce08bc8d74ef9.yml
diff --git a/src/browserbase/types/session.py b/src/browserbase/types/session.py
index a6803a7..ebc5c33 100644
--- a/src/browserbase/types/session.py
+++ b/src/browserbase/types/session.py
@@ -24,6 +24,9 @@ class Session(BaseModel):
project_id: str
"""The Project ID linked to the Session."""
+ proxy_bytes: int = FieldInfo(alias="proxyBytes")
+ """Bytes used via the [Proxy](/features/stealth-mode#proxies-and-residential-ips)"""
+
region: str
started_at: datetime
@@ -47,9 +50,6 @@ class Session(BaseModel):
memory_usage: Optional[int] = None
"""Memory used by the Session"""
- proxy_bytes: Optional[int] = None
- """Bytes used via the [Proxy](/features/stealth-mode#proxies-and-residential-ips)"""
-
selenium_remote_url: Optional[str] = FieldInfo(alias="seleniumRemoteUrl", default=None)
signing_key: Optional[str] = FieldInfo(alias="signingKey", default=None)
From 90ea00def3c88ff0b1a6d71b65abd155b230e2c0 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sun, 27 Oct 2024 03:09:07 +0000
Subject: [PATCH 3/6] feat(api): update via SDK Studio (#19)
---
.stats.yml | 2 +-
.../resources/sessions/sessions.py | 6 +-
src/browserbase/types/extension.py | 9 +--
src/browserbase/types/session.py | 46 +-------------
.../types/session_create_params.py | 63 ++++++++++++++++++-
5 files changed, 68 insertions(+), 58 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 770eba6..5c7b4fc 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
configured_endpoints: 18
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-69e3c041b63edae61bddbb624edc185621be0ad4b1355395616ce08bc8d74ef9.yml
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-0069ed71133ac7b0add07abd8562396c4b8e3c9a212e14a7586782eeed2ff373.yml
diff --git a/src/browserbase/resources/sessions/sessions.py b/src/browserbase/resources/sessions/sessions.py
index d2c8d93..f50cf0d 100644
--- a/src/browserbase/resources/sessions/sessions.py
+++ b/src/browserbase/resources/sessions/sessions.py
@@ -2,7 +2,7 @@
from __future__ import annotations
-from typing import Union
+from typing import Union, Iterable
from typing_extensions import Literal
import httpx
@@ -104,7 +104,7 @@ def create(
browser_settings: session_create_params.BrowserSettings | NotGiven = NOT_GIVEN,
extension_id: str | NotGiven = NOT_GIVEN,
keep_alive: bool | NotGiven = NOT_GIVEN,
- proxies: Union[bool, object] | NotGiven = NOT_GIVEN,
+ proxies: Union[bool, Iterable[session_create_params.ProxiesUnionMember1]] | NotGiven = NOT_GIVEN,
api_timeout: int | 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.
@@ -354,7 +354,7 @@ async def create(
browser_settings: session_create_params.BrowserSettings | NotGiven = NOT_GIVEN,
extension_id: str | NotGiven = NOT_GIVEN,
keep_alive: bool | NotGiven = NOT_GIVEN,
- proxies: Union[bool, object] | NotGiven = NOT_GIVEN,
+ proxies: Union[bool, Iterable[session_create_params.ProxiesUnionMember1]] | NotGiven = NOT_GIVEN,
api_timeout: int | 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.
diff --git a/src/browserbase/types/extension.py b/src/browserbase/types/extension.py
index 018c55e..da1a8b5 100644
--- a/src/browserbase/types/extension.py
+++ b/src/browserbase/types/extension.py
@@ -12,11 +12,6 @@
class Extension(BaseModel):
id: str
- created_at: datetime
+ created_at: datetime = FieldInfo(alias="createdAt")
- file_name: str = FieldInfo(alias="fileName")
-
- project_id: str = FieldInfo(alias="projectId")
- """The Project ID linked to the uploaded Extension."""
-
- updated_at: datetime
+ updated_at: datetime = FieldInfo(alias="updatedAt")
diff --git a/src/browserbase/types/session.py b/src/browserbase/types/session.py
index ebc5c33..c8d7fe4 100644
--- a/src/browserbase/types/session.py
+++ b/src/browserbase/types/session.py
@@ -1,8 +1,6 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-from typing import Optional
from datetime import datetime
-from typing_extensions import Literal
from pydantic import Field as FieldInfo
@@ -14,46 +12,6 @@
class Session(BaseModel):
id: str
- created_at: datetime
+ created_at: datetime = FieldInfo(alias="createdAt")
- expires_at: datetime
-
- keep_alive: bool
- """Indicates if the Session was created to be kept alive upon disconnections"""
-
- project_id: str
- """The Project ID linked to the Session."""
-
- proxy_bytes: int = FieldInfo(alias="proxyBytes")
- """Bytes used via the [Proxy](/features/stealth-mode#proxies-and-residential-ips)"""
-
- region: str
-
- started_at: datetime
-
- status: Literal["RUNNING", "ERROR", "TIMED_OUT", "COMPLETED"]
-
- updated_at: datetime
-
- avg_cpu_usage: Optional[int] = None
- """CPU used by the Session"""
-
- connect_url: Optional[str] = FieldInfo(alias="connectUrl", default=None)
-
- context_id: Optional[str] = None
- """Optional. The Context linked to the Session."""
-
- ended_at: Optional[datetime] = None
-
- is_idle: Optional[bool] = None
-
- memory_usage: Optional[int] = None
- """Memory used by the Session"""
-
- selenium_remote_url: Optional[str] = FieldInfo(alias="seleniumRemoteUrl", default=None)
-
- signing_key: Optional[str] = FieldInfo(alias="signingKey", default=None)
-
- viewport_height: Optional[int] = None
-
- viewport_width: Optional[int] = None
+ updated_at: datetime = FieldInfo(alias="updatedAt")
diff --git a/src/browserbase/types/session_create_params.py b/src/browserbase/types/session_create_params.py
index add0212..fd43187 100644
--- a/src/browserbase/types/session_create_params.py
+++ b/src/browserbase/types/session_create_params.py
@@ -2,8 +2,8 @@
from __future__ import annotations
-from typing import List, Union
-from typing_extensions import Literal, Required, Annotated, TypedDict
+from typing import List, Union, Iterable
+from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
from .._utils import PropertyInfo
@@ -14,6 +14,10 @@
"BrowserSettingsFingerprint",
"BrowserSettingsFingerprintScreen",
"BrowserSettingsViewport",
+ "ProxiesUnionMember1",
+ "ProxiesUnionMember1BrowserbaseProxyConfig",
+ "ProxiesUnionMember1BrowserbaseProxyConfigGeolocation",
+ "ProxiesUnionMember1ExternalProxyConfig",
]
@@ -38,7 +42,7 @@ class SessionCreateParams(TypedDict, total=False):
This is available on the Startup plan only.
"""
- proxies: Union[bool, object]
+ proxies: Union[bool, Iterable[ProxiesUnionMember1]]
"""Proxy configuration.
Can be true for default proxy, or an array of proxy configurations.
@@ -127,3 +131,56 @@ class BrowserSettings(TypedDict, total=False):
"""Enable or disable captcha solving in the browser. Defaults to `true`."""
viewport: BrowserSettingsViewport
+
+
+class ProxiesUnionMember1BrowserbaseProxyConfigGeolocation(TypedDict, total=False):
+ country: Required[str]
+ """Country code in ISO 3166-1 alpha-2 format"""
+
+ city: str
+ """Name of the city. Use spaces for multi-word city names. Optional."""
+
+ state: str
+ """US state code (2 characters). Must also specify US as the country. Optional."""
+
+
+class ProxiesUnionMember1BrowserbaseProxyConfig(TypedDict, total=False):
+ type: Required[Literal["browserbase"]]
+ """Type of proxy.
+
+ Always use 'browserbase' for the Browserbase managed proxy network.
+ """
+
+ domain_pattern: Annotated[str, PropertyInfo(alias="domainPattern")]
+ """Domain pattern for which this proxy should be used.
+
+ If omitted, defaults to all domains. Optional.
+ """
+
+ geolocation: ProxiesUnionMember1BrowserbaseProxyConfigGeolocation
+ """Configuration for geolocation"""
+
+
+class ProxiesUnionMember1ExternalProxyConfig(TypedDict, total=False):
+ server: Required[str]
+ """Server URL for external proxy. Required."""
+
+ type: Required[Literal["external"]]
+ """Type of proxy. Always 'external' for this config."""
+
+ domain_pattern: Annotated[str, PropertyInfo(alias="domainPattern")]
+ """Domain pattern for which this proxy should be used.
+
+ If omitted, defaults to all domains. Optional.
+ """
+
+ password: str
+ """Password for external proxy authentication. Optional."""
+
+ username: str
+ """Username for external proxy authentication. Optional."""
+
+
+ProxiesUnionMember1: TypeAlias = Union[
+ ProxiesUnionMember1BrowserbaseProxyConfig, ProxiesUnionMember1ExternalProxyConfig
+]
From 0b9561f5c8a91ea372ab68d5679e05e255f302c7 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sun, 27 Oct 2024 03:27:31 +0000
Subject: [PATCH 4/6] feat(api): update via SDK Studio (#20)
---
.stats.yml | 2 +-
api.md | 4 +-
.../resources/sessions/downloads.py | 4 +-
.../resources/sessions/sessions.py | 22 ++++--
src/browserbase/types/__init__.py | 1 +
.../types/session_create_params.py | 68 ++-----------------
.../types/session_create_response.py | 57 ++++++++++++++++
tests/api_resources/test_sessions.py | 23 ++++---
8 files changed, 98 insertions(+), 83 deletions(-)
create mode 100644 src/browserbase/types/session_create_response.py
diff --git a/.stats.yml b/.stats.yml
index 5c7b4fc..b9a6af2 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
configured_endpoints: 18
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-0069ed71133ac7b0add07abd8562396c4b8e3c9a212e14a7586782eeed2ff373.yml
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-0d0ad7d4de2fa0b930b8d72fe6539ab248c7ed684b2e12b327b3bc0a466f9cde.yml
diff --git a/api.md b/api.md
index 40594f6..3f21eb2 100644
--- a/api.md
+++ b/api.md
@@ -45,12 +45,12 @@ Methods:
Types:
```python
-from browserbase.types import Session, SessionLiveURLs, SessionListResponse
+from browserbase.types import Session, SessionLiveURLs, SessionCreateResponse, SessionListResponse
```
Methods:
-- client.sessions.create(\*\*params) -> Session
+- client.sessions.create(\*\*params) -> SessionCreateResponse
- client.sessions.retrieve(id) -> Session
- client.sessions.update(id, \*\*params) -> Session
- client.sessions.list(\*\*params) -> SessionListResponse
diff --git a/src/browserbase/resources/sessions/downloads.py b/src/browserbase/resources/sessions/downloads.py
index 5b60ffe..461163b 100644
--- a/src/browserbase/resources/sessions/downloads.py
+++ b/src/browserbase/resources/sessions/downloads.py
@@ -67,7 +67,7 @@ def list(
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
- extra_headers = {"Accept": "application/octet-stream", **(extra_headers or {})}
+ extra_headers = {"Accept": "application/zip", **(extra_headers or {})}
return self._get(
f"/v1/sessions/{id}/downloads",
options=make_request_options(
@@ -122,7 +122,7 @@ async def list(
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
- extra_headers = {"Accept": "application/octet-stream", **(extra_headers or {})}
+ extra_headers = {"Accept": "application/zip", **(extra_headers or {})}
return await self._get(
f"/v1/sessions/{id}/downloads",
options=make_request_options(
diff --git a/src/browserbase/resources/sessions/sessions.py b/src/browserbase/resources/sessions/sessions.py
index f50cf0d..d298c01 100644
--- a/src/browserbase/resources/sessions/sessions.py
+++ b/src/browserbase/resources/sessions/sessions.py
@@ -2,7 +2,6 @@
from __future__ import annotations
-from typing import Union, Iterable
from typing_extensions import Literal
import httpx
@@ -57,6 +56,7 @@
from ...types.session import Session
from ...types.session_live_urls import SessionLiveURLs
from ...types.session_list_response import SessionListResponse
+from ...types.session_create_response import SessionCreateResponse
__all__ = ["SessionsResource", "AsyncSessionsResource"]
@@ -104,7 +104,8 @@ def create(
browser_settings: session_create_params.BrowserSettings | NotGiven = NOT_GIVEN,
extension_id: str | NotGiven = NOT_GIVEN,
keep_alive: bool | NotGiven = NOT_GIVEN,
- proxies: Union[bool, Iterable[session_create_params.ProxiesUnionMember1]] | NotGiven = NOT_GIVEN,
+ proxies: object | NotGiven = NOT_GIVEN,
+ region: Literal["us-west-2", "us-east-1", "eu-central-1", "ap-southeast-1"] | NotGiven = NOT_GIVEN,
api_timeout: int | 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.
@@ -112,7 +113,7 @@ def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Session:
+ ) -> SessionCreateResponse:
"""Create a Session
Args:
@@ -130,6 +131,8 @@ def create(
proxies: Proxy configuration. Can be true for default proxy, or an array of proxy
configurations.
+ region: The region where the Session should run.
+
api_timeout: Duration in seconds after which the session will automatically end. Defaults to
the Project's `defaultTimeout`.
@@ -150,6 +153,7 @@ def create(
"extension_id": extension_id,
"keep_alive": keep_alive,
"proxies": proxies,
+ "region": region,
"timeout": api_timeout,
},
session_create_params.SessionCreateParams,
@@ -157,7 +161,7 @@ def create(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=Session,
+ cast_to=SessionCreateResponse,
)
def retrieve(
@@ -354,7 +358,8 @@ async def create(
browser_settings: session_create_params.BrowserSettings | NotGiven = NOT_GIVEN,
extension_id: str | NotGiven = NOT_GIVEN,
keep_alive: bool | NotGiven = NOT_GIVEN,
- proxies: Union[bool, Iterable[session_create_params.ProxiesUnionMember1]] | NotGiven = NOT_GIVEN,
+ proxies: object | NotGiven = NOT_GIVEN,
+ region: Literal["us-west-2", "us-east-1", "eu-central-1", "ap-southeast-1"] | NotGiven = NOT_GIVEN,
api_timeout: int | 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.
@@ -362,7 +367,7 @@ async def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Session:
+ ) -> SessionCreateResponse:
"""Create a Session
Args:
@@ -380,6 +385,8 @@ async def create(
proxies: Proxy configuration. Can be true for default proxy, or an array of proxy
configurations.
+ region: The region where the Session should run.
+
api_timeout: Duration in seconds after which the session will automatically end. Defaults to
the Project's `defaultTimeout`.
@@ -400,6 +407,7 @@ async def create(
"extension_id": extension_id,
"keep_alive": keep_alive,
"proxies": proxies,
+ "region": region,
"timeout": api_timeout,
},
session_create_params.SessionCreateParams,
@@ -407,7 +415,7 @@ async def create(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=Session,
+ cast_to=SessionCreateResponse,
)
async def retrieve(
diff --git a/src/browserbase/types/__init__.py b/src/browserbase/types/__init__.py
index fcbbf0a..ebc243d 100644
--- a/src/browserbase/types/__init__.py
+++ b/src/browserbase/types/__init__.py
@@ -17,3 +17,4 @@
from .context_create_response import ContextCreateResponse as ContextCreateResponse
from .context_update_response import ContextUpdateResponse as ContextUpdateResponse
from .extension_create_params import ExtensionCreateParams as ExtensionCreateParams
+from .session_create_response import SessionCreateResponse as SessionCreateResponse
diff --git a/src/browserbase/types/session_create_params.py b/src/browserbase/types/session_create_params.py
index fd43187..3b1920a 100644
--- a/src/browserbase/types/session_create_params.py
+++ b/src/browserbase/types/session_create_params.py
@@ -2,8 +2,8 @@
from __future__ import annotations
-from typing import List, Union, Iterable
-from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
+from typing import List
+from typing_extensions import Literal, Required, Annotated, TypedDict
from .._utils import PropertyInfo
@@ -14,10 +14,6 @@
"BrowserSettingsFingerprint",
"BrowserSettingsFingerprintScreen",
"BrowserSettingsViewport",
- "ProxiesUnionMember1",
- "ProxiesUnionMember1BrowserbaseProxyConfig",
- "ProxiesUnionMember1BrowserbaseProxyConfigGeolocation",
- "ProxiesUnionMember1ExternalProxyConfig",
]
@@ -42,12 +38,15 @@ class SessionCreateParams(TypedDict, total=False):
This is available on the Startup plan only.
"""
- proxies: Union[bool, Iterable[ProxiesUnionMember1]]
+ proxies: object
"""Proxy configuration.
Can be true for default proxy, or an array of proxy configurations.
"""
+ region: Literal["us-west-2", "us-east-1", "eu-central-1", "ap-southeast-1"]
+ """The region where the Session should run."""
+
api_timeout: Annotated[int, PropertyInfo(alias="timeout")]
"""Duration in seconds after which the session will automatically end.
@@ -59,7 +58,7 @@ class BrowserSettingsContext(TypedDict, total=False):
id: Required[str]
"""The Context ID."""
- persist: Required[bool]
+ persist: bool
"""Whether or not to persist the context after browsing. Defaults to `false`."""
@@ -131,56 +130,3 @@ class BrowserSettings(TypedDict, total=False):
"""Enable or disable captcha solving in the browser. Defaults to `true`."""
viewport: BrowserSettingsViewport
-
-
-class ProxiesUnionMember1BrowserbaseProxyConfigGeolocation(TypedDict, total=False):
- country: Required[str]
- """Country code in ISO 3166-1 alpha-2 format"""
-
- city: str
- """Name of the city. Use spaces for multi-word city names. Optional."""
-
- state: str
- """US state code (2 characters). Must also specify US as the country. Optional."""
-
-
-class ProxiesUnionMember1BrowserbaseProxyConfig(TypedDict, total=False):
- type: Required[Literal["browserbase"]]
- """Type of proxy.
-
- Always use 'browserbase' for the Browserbase managed proxy network.
- """
-
- domain_pattern: Annotated[str, PropertyInfo(alias="domainPattern")]
- """Domain pattern for which this proxy should be used.
-
- If omitted, defaults to all domains. Optional.
- """
-
- geolocation: ProxiesUnionMember1BrowserbaseProxyConfigGeolocation
- """Configuration for geolocation"""
-
-
-class ProxiesUnionMember1ExternalProxyConfig(TypedDict, total=False):
- server: Required[str]
- """Server URL for external proxy. Required."""
-
- type: Required[Literal["external"]]
- """Type of proxy. Always 'external' for this config."""
-
- domain_pattern: Annotated[str, PropertyInfo(alias="domainPattern")]
- """Domain pattern for which this proxy should be used.
-
- If omitted, defaults to all domains. Optional.
- """
-
- password: str
- """Password for external proxy authentication. Optional."""
-
- username: str
- """Username for external proxy authentication. Optional."""
-
-
-ProxiesUnionMember1: TypeAlias = Union[
- ProxiesUnionMember1BrowserbaseProxyConfig, ProxiesUnionMember1ExternalProxyConfig
-]
diff --git a/src/browserbase/types/session_create_response.py b/src/browserbase/types/session_create_response.py
new file mode 100644
index 0000000..8c9ae09
--- /dev/null
+++ b/src/browserbase/types/session_create_response.py
@@ -0,0 +1,57 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from pydantic import Field as FieldInfo
+
+from .._models import BaseModel
+
+__all__ = ["SessionCreateResponse"]
+
+
+class SessionCreateResponse(BaseModel):
+ id: str
+
+ connect_url: str = FieldInfo(alias="connectUrl")
+ """WebSocket URL to connect to the Session."""
+
+ created_at: datetime = FieldInfo(alias="createdAt")
+
+ expires_at: datetime = FieldInfo(alias="expiresAt")
+
+ keep_alive: bool = FieldInfo(alias="keepAlive")
+ """Indicates if the Session was created to be kept alive upon disconnections"""
+
+ project_id: str = FieldInfo(alias="projectId")
+ """The Project ID linked to the Session."""
+
+ proxy_bytes: int = FieldInfo(alias="proxyBytes")
+ """Bytes used via the [Proxy](/features/stealth-mode#proxies-and-residential-ips)"""
+
+ region: Literal["us-west-2", "us-east-1", "eu-central-1", "ap-southeast-1"]
+ """The region where the Session is running."""
+
+ selenium_remote_url: str = FieldInfo(alias="seleniumRemoteUrl")
+ """HTTP URL to connect to the Session."""
+
+ signing_key: str = FieldInfo(alias="signingKey")
+ """Signing key to use when connecting to the Session via HTTP."""
+
+ started_at: datetime = FieldInfo(alias="startedAt")
+
+ status: Literal["RUNNING", "ERROR", "TIMED_OUT", "COMPLETED"]
+
+ updated_at: datetime = FieldInfo(alias="updatedAt")
+
+ avg_cpu_usage: Optional[int] = FieldInfo(alias="avgCpuUsage", default=None)
+ """CPU used by the Session"""
+
+ context_id: Optional[str] = FieldInfo(alias="contextId", default=None)
+ """Optional. The Context linked to the Session."""
+
+ ended_at: Optional[datetime] = FieldInfo(alias="endedAt", default=None)
+
+ memory_usage: Optional[int] = FieldInfo(alias="memoryUsage", default=None)
+ """Memory used by the Session"""
diff --git a/tests/api_resources/test_sessions.py b/tests/api_resources/test_sessions.py
index 40b7173..dadadd4 100644
--- a/tests/api_resources/test_sessions.py
+++ b/tests/api_resources/test_sessions.py
@@ -13,6 +13,7 @@
Session,
SessionLiveURLs,
SessionListResponse,
+ SessionCreateResponse,
)
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -26,7 +27,7 @@ def test_method_create(self, client: Browserbase) -> None:
session = client.sessions.create(
project_id="projectId",
)
- assert_matches_type(Session, session, path=["response"])
+ assert_matches_type(SessionCreateResponse, session, path=["response"])
@parametrize
def test_method_create_with_all_params(self, client: Browserbase) -> None:
@@ -62,10 +63,11 @@ def test_method_create_with_all_params(self, client: Browserbase) -> None:
},
extension_id="extensionId",
keep_alive=True,
- proxies=True,
+ proxies={},
+ region="us-west-2",
api_timeout=60,
)
- assert_matches_type(Session, session, path=["response"])
+ assert_matches_type(SessionCreateResponse, session, path=["response"])
@parametrize
def test_raw_response_create(self, client: Browserbase) -> None:
@@ -76,7 +78,7 @@ def test_raw_response_create(self, client: Browserbase) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
session = response.parse()
- assert_matches_type(Session, session, path=["response"])
+ assert_matches_type(SessionCreateResponse, session, path=["response"])
@parametrize
def test_streaming_response_create(self, client: Browserbase) -> None:
@@ -87,7 +89,7 @@ def test_streaming_response_create(self, client: Browserbase) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
session = response.parse()
- assert_matches_type(Session, session, path=["response"])
+ assert_matches_type(SessionCreateResponse, session, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -254,7 +256,7 @@ async def test_method_create(self, async_client: AsyncBrowserbase) -> None:
session = await async_client.sessions.create(
project_id="projectId",
)
- assert_matches_type(Session, session, path=["response"])
+ assert_matches_type(SessionCreateResponse, session, path=["response"])
@parametrize
async def test_method_create_with_all_params(self, async_client: AsyncBrowserbase) -> None:
@@ -290,10 +292,11 @@ async def test_method_create_with_all_params(self, async_client: AsyncBrowserbas
},
extension_id="extensionId",
keep_alive=True,
- proxies=True,
+ proxies={},
+ region="us-west-2",
api_timeout=60,
)
- assert_matches_type(Session, session, path=["response"])
+ assert_matches_type(SessionCreateResponse, session, path=["response"])
@parametrize
async def test_raw_response_create(self, async_client: AsyncBrowserbase) -> None:
@@ -304,7 +307,7 @@ async def test_raw_response_create(self, async_client: AsyncBrowserbase) -> None
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
session = await response.parse()
- assert_matches_type(Session, session, path=["response"])
+ assert_matches_type(SessionCreateResponse, session, path=["response"])
@parametrize
async def test_streaming_response_create(self, async_client: AsyncBrowserbase) -> None:
@@ -315,7 +318,7 @@ async def test_streaming_response_create(self, async_client: AsyncBrowserbase) -
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
session = await response.parse()
- assert_matches_type(Session, session, path=["response"])
+ assert_matches_type(SessionCreateResponse, session, path=["response"])
assert cast(Any, response.is_closed) is True
From 00b8c8be7b5bdf9fbe8da6410cf7dd2d002ad21e Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sun, 27 Oct 2024 03:30:22 +0000
Subject: [PATCH 5/6] feat(api): update via SDK Studio (#21)
---
.stats.yml | 2 +-
src/browserbase/types/context.py | 3 +++
src/browserbase/types/extension.py | 5 +++++
src/browserbase/types/project.py | 6 ++++++
src/browserbase/types/session.py | 31 ++++++++++++++++++++++++++++++
5 files changed, 46 insertions(+), 1 deletion(-)
diff --git a/.stats.yml b/.stats.yml
index b9a6af2..3d4a375 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
configured_endpoints: 18
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-0d0ad7d4de2fa0b930b8d72fe6539ab248c7ed684b2e12b327b3bc0a466f9cde.yml
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-b37d85811d1ccbd73a7884f22792503aa7e3103d378c97c84028b8b3b79acddc.yml
diff --git a/src/browserbase/types/context.py b/src/browserbase/types/context.py
index ed5135b..cb5c32f 100644
--- a/src/browserbase/types/context.py
+++ b/src/browserbase/types/context.py
@@ -14,4 +14,7 @@ class Context(BaseModel):
created_at: datetime = FieldInfo(alias="createdAt")
+ project_id: str = FieldInfo(alias="projectId")
+ """The Project ID linked to the uploaded Context."""
+
updated_at: datetime = FieldInfo(alias="updatedAt")
diff --git a/src/browserbase/types/extension.py b/src/browserbase/types/extension.py
index da1a8b5..94582c3 100644
--- a/src/browserbase/types/extension.py
+++ b/src/browserbase/types/extension.py
@@ -14,4 +14,9 @@ class Extension(BaseModel):
created_at: datetime = FieldInfo(alias="createdAt")
+ file_name: str = FieldInfo(alias="fileName")
+
+ project_id: str = FieldInfo(alias="projectId")
+ """The Project ID linked to the uploaded Extension."""
+
updated_at: datetime = FieldInfo(alias="updatedAt")
diff --git a/src/browserbase/types/project.py b/src/browserbase/types/project.py
index cba2873..afbcef6 100644
--- a/src/browserbase/types/project.py
+++ b/src/browserbase/types/project.py
@@ -14,4 +14,10 @@ class Project(BaseModel):
created_at: datetime = FieldInfo(alias="createdAt")
+ default_timeout: int = FieldInfo(alias="defaultTimeout")
+
+ name: str
+
+ owner_id: str = FieldInfo(alias="ownerId")
+
updated_at: datetime = FieldInfo(alias="updatedAt")
diff --git a/src/browserbase/types/session.py b/src/browserbase/types/session.py
index c8d7fe4..8bd47f9 100644
--- a/src/browserbase/types/session.py
+++ b/src/browserbase/types/session.py
@@ -1,6 +1,8 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
+from typing_extensions import Literal
from pydantic import Field as FieldInfo
@@ -14,4 +16,33 @@ class Session(BaseModel):
created_at: datetime = FieldInfo(alias="createdAt")
+ expires_at: datetime = FieldInfo(alias="expiresAt")
+
+ keep_alive: bool = FieldInfo(alias="keepAlive")
+ """Indicates if the Session was created to be kept alive upon disconnections"""
+
+ project_id: str = FieldInfo(alias="projectId")
+ """The Project ID linked to the Session."""
+
+ proxy_bytes: int = FieldInfo(alias="proxyBytes")
+ """Bytes used via the [Proxy](/features/stealth-mode#proxies-and-residential-ips)"""
+
+ region: Literal["us-west-2", "us-east-1", "eu-central-1", "ap-southeast-1"]
+ """The region where the Session is running."""
+
+ started_at: datetime = FieldInfo(alias="startedAt")
+
+ status: Literal["RUNNING", "ERROR", "TIMED_OUT", "COMPLETED"]
+
updated_at: datetime = FieldInfo(alias="updatedAt")
+
+ avg_cpu_usage: Optional[int] = FieldInfo(alias="avgCpuUsage", default=None)
+ """CPU used by the Session"""
+
+ context_id: Optional[str] = FieldInfo(alias="contextId", default=None)
+ """Optional. The Context linked to the Session."""
+
+ ended_at: Optional[datetime] = FieldInfo(alias="endedAt", default=None)
+
+ memory_usage: Optional[int] = FieldInfo(alias="memoryUsage", default=None)
+ """Memory used by the Session"""
From bbc3f5f2144c85b0fc46e8f277f2fed0023160f2 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sun, 27 Oct 2024 03:30:38 +0000
Subject: [PATCH 6/6] release: 0.1.0-alpha.4
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 12 ++++++++++++
pyproject.toml | 2 +-
src/browserbase/_version.py | 2 +-
4 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index aaf968a..b56c3d0 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.1.0-alpha.3"
+ ".": "0.1.0-alpha.4"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2a09837..4c057cb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
# Changelog
+## 0.1.0-alpha.4 (2024-10-27)
+
+Full Changelog: [v0.1.0-alpha.3...v0.1.0-alpha.4](https://github.com/browserbase/sdk-python/compare/v0.1.0-alpha.3...v0.1.0-alpha.4)
+
+### Features
+
+* **api:** update via SDK Studio ([#16](https://github.com/browserbase/sdk-python/issues/16)) ([78347f5](https://github.com/browserbase/sdk-python/commit/78347f5f2a251eca20ffeb1e5d78ee843ce74415))
+* **api:** update via SDK Studio ([#18](https://github.com/browserbase/sdk-python/issues/18)) ([b958c13](https://github.com/browserbase/sdk-python/commit/b958c13c01fd9f0cedbb5723ee54574ad769b539))
+* **api:** update via SDK Studio ([#19](https://github.com/browserbase/sdk-python/issues/19)) ([90ea00d](https://github.com/browserbase/sdk-python/commit/90ea00def3c88ff0b1a6d71b65abd155b230e2c0))
+* **api:** update via SDK Studio ([#20](https://github.com/browserbase/sdk-python/issues/20)) ([0b9561f](https://github.com/browserbase/sdk-python/commit/0b9561f5c8a91ea372ab68d5679e05e255f302c7))
+* **api:** update via SDK Studio ([#21](https://github.com/browserbase/sdk-python/issues/21)) ([00b8c8b](https://github.com/browserbase/sdk-python/commit/00b8c8be7b5bdf9fbe8da6410cf7dd2d002ad21e))
+
## 0.1.0-alpha.3 (2024-10-26)
Full Changelog: [v0.1.0-alpha.2...v0.1.0-alpha.3](https://github.com/browserbase/sdk-python/compare/v0.1.0-alpha.2...v0.1.0-alpha.3)
diff --git a/pyproject.toml b/pyproject.toml
index cc49716..67b0716 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "browserbase"
-version = "0.1.0-alpha.3"
+version = "0.1.0-alpha.4"
description = "The official Python library for the browserbase API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/browserbase/_version.py b/src/browserbase/_version.py
index 25f9355..1719633 100644
--- a/src/browserbase/_version.py
+++ b/src/browserbase/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "browserbase"
-__version__ = "0.1.0-alpha.3" # x-release-please-version
+__version__ = "0.1.0-alpha.4" # x-release-please-version