From 4d719e4fa9d017168aa612e82270d72a39ae4117 Mon Sep 17 00:00:00 2001 From: AHarmlessPyro Date: Sat, 14 Mar 2026 23:16:25 -0700 Subject: [PATCH] Add proxy update --- .../client/managers/async_manager/session.py | 15 +++++++++ .../client/managers/sync_manager/session.py | 16 +++++++++- hyperbrowser/models/__init__.py | 4 +++ hyperbrowser/models/session.py | 32 ++++++++++++++++++- pyproject.toml | 2 +- 5 files changed, 66 insertions(+), 3 deletions(-) diff --git a/hyperbrowser/client/managers/async_manager/session.py b/hyperbrowser/client/managers/async_manager/session.py index 95d5f97b..81a1c152 100644 --- a/hyperbrowser/client/managers/async_manager/session.py +++ b/hyperbrowser/client/managers/async_manager/session.py @@ -15,6 +15,7 @@ SessionEventLogListResponse, SessionEventLog, UpdateSessionProfileParams, + UpdateSessionProxyParams, SessionGetParams, ) @@ -183,6 +184,20 @@ async def update_profile_params( ) return BasicResponse(**response.data) + async def update_proxy_params( + self, + id: str, + params: UpdateSessionProxyParams, + ) -> BasicResponse: + response = await self._client.transport.put( + self._client._build_url(f"/session/{id}/update"), + data={ + "type": "proxy", + "params": params.model_dump(exclude_none=True, by_alias=True), + }, + ) + return BasicResponse(**response.data) + def _warn_update_profile_params_boolean_deprecated(self) -> None: if SessionManager._has_warned_update_profile_params_boolean_deprecated: return diff --git a/hyperbrowser/client/managers/sync_manager/session.py b/hyperbrowser/client/managers/sync_manager/session.py index 1a453346..2fea3d3a 100644 --- a/hyperbrowser/client/managers/sync_manager/session.py +++ b/hyperbrowser/client/managers/sync_manager/session.py @@ -13,8 +13,8 @@ UploadFileResponse, SessionEventLogListParams, SessionEventLogListResponse, - SessionEventLog, UpdateSessionProfileParams, + UpdateSessionProxyParams, SessionGetParams, ) @@ -179,6 +179,20 @@ def update_profile_params( ) return BasicResponse(**response.data) + def update_proxy_params( + self, + id: str, + params: UpdateSessionProxyParams, + ) -> BasicResponse: + response = self._client.transport.put( + self._client._build_url(f"/session/{id}/update"), + data={ + "type": "proxy", + "params": params.model_dump(exclude_none=True, by_alias=True), + }, + ) + return BasicResponse(**response.data) + def _warn_update_profile_params_boolean_deprecated(self) -> None: if SessionManager._has_warned_update_profile_params_boolean_deprecated: return diff --git a/hyperbrowser/models/__init__.py b/hyperbrowser/models/__init__.py index 2d50712e..57f256ed 100644 --- a/hyperbrowser/models/__init__.py +++ b/hyperbrowser/models/__init__.py @@ -234,6 +234,8 @@ UploadFileResponse, ImageCaptchaParam, UpdateSessionProfileParams, + UpdateSessionProxyLocationParams, + UpdateSessionProxyParams, ) from .sandbox import ( SandboxStatus, @@ -485,6 +487,8 @@ "UploadFileResponse", "ImageCaptchaParam", "UpdateSessionProfileParams", + "UpdateSessionProxyLocationParams", + "UpdateSessionProxyParams", # sandbox "SandboxStatus", "SandboxRegion", diff --git a/hyperbrowser/models/session.py b/hyperbrowser/models/session.py index f096ae3a..a0a40d52 100644 --- a/hyperbrowser/models/session.py +++ b/hyperbrowser/models/session.py @@ -1,6 +1,5 @@ from datetime import datetime from typing import Any, List, Literal, Optional, Union, Dict -from .computer_action import ComputerActionParams, ComputerActionResponse from pydantic import BaseModel, ConfigDict, Field, field_validator @@ -70,6 +69,37 @@ class UpdateSessionProfileParams(BaseModel): ) +class UpdateSessionProxyLocationParams(BaseModel): + """ + Managed proxy geolocation overrides for a running session. + """ + + model_config = ConfigDict( + populate_by_alias=True, + ) + + country: Optional[Country] = Field(default=None, serialization_alias="country") + state: Optional[State] = Field(default=None, serialization_alias="state") + city: Optional[str] = Field(default=None, serialization_alias="city") + + +class UpdateSessionProxyParams(BaseModel): + """ + Parameters for enabling, disabling, or reconfiguring a session proxy. + """ + + model_config = ConfigDict( + populate_by_alias=True, + ) + + enabled: bool = Field(serialization_alias="enabled") + static_ip_id: Optional[str] = Field(default=None, serialization_alias="staticIpId") + location: Optional[UpdateSessionProxyLocationParams] = Field( + default=None, + serialization_alias="location", + ) + + class SessionLaunchState(BaseModel): model_config = ConfigDict( populate_by_alias=True, diff --git a/pyproject.toml b/pyproject.toml index 9c664183..eb253222 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "hyperbrowser" -version = "0.87.0" +version = "0.88.0" description = "Python SDK for hyperbrowser" authors = ["Nikhil Shahi "] license = "MIT"