hyperbrowser 0.86.0__tar.gz → 0.88.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/PKG-INFO +1 -1
  2. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/sandbox.py +33 -0
  3. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/session.py +15 -0
  4. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/sandbox.py +33 -0
  5. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/session.py +15 -1
  6. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/__init__.py +16 -0
  7. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/sandbox.py +49 -4
  8. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/session.py +31 -1
  9. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/pyproject.toml +1 -1
  10. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/LICENSE +0 -0
  11. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/README.md +0 -0
  12. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/__init__.py +0 -0
  13. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/async_client.py +0 -0
  14. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/base.py +0 -0
  15. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/agents/__init__.py +0 -0
  16. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/agents/browser_use.py +0 -0
  17. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/agents/claude_computer_use.py +0 -0
  18. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/agents/cua.py +0 -0
  19. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/agents/gemini_computer_use.py +0 -0
  20. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/agents/hyper_agent.py +0 -0
  21. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/computer_action.py +0 -0
  22. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/crawl.py +0 -0
  23. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/extension.py +0 -0
  24. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/extract.py +0 -0
  25. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/profile.py +0 -0
  26. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/sandboxes/__init__.py +0 -0
  27. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_files.py +0 -0
  28. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_processes.py +0 -0
  29. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_terminal.py +0 -0
  30. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_transport.py +0 -0
  31. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/scrape.py +0 -0
  32. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/team.py +0 -0
  33. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/web/__init__.py +0 -0
  34. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/web/batch_fetch.py +0 -0
  35. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/async_manager/web/crawl.py +0 -0
  36. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sandboxes/__init__.py +0 -0
  37. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sandboxes/shared.py +0 -0
  38. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/agents/__init__.py +0 -0
  39. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/agents/browser_use.py +0 -0
  40. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py +0 -0
  41. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/agents/cua.py +0 -0
  42. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/agents/gemini_computer_use.py +0 -0
  43. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/agents/hyper_agent.py +0 -0
  44. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/computer_action.py +0 -0
  45. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/crawl.py +0 -0
  46. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/extension.py +0 -0
  47. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/extract.py +0 -0
  48. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/profile.py +0 -0
  49. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/sandboxes/__init__.py +0 -0
  50. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_files.py +0 -0
  51. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_processes.py +0 -0
  52. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_terminal.py +0 -0
  53. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_transport.py +0 -0
  54. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/scrape.py +0 -0
  55. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/team.py +0 -0
  56. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/web/__init__.py +0 -0
  57. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/web/batch_fetch.py +0 -0
  58. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/managers/sync_manager/web/crawl.py +0 -0
  59. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/client/sync.py +0 -0
  60. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/config.py +0 -0
  61. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/exceptions.py +0 -0
  62. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/agents/browser_use.py +0 -0
  63. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/agents/claude_computer_use.py +0 -0
  64. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/agents/cua.py +0 -0
  65. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/agents/gemini_computer_use.py +0 -0
  66. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/agents/hyper_agent.py +0 -0
  67. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/computer_action.py +0 -0
  68. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/consts.py +0 -0
  69. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/crawl.py +0 -0
  70. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/extension.py +0 -0
  71. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/extract.py +0 -0
  72. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/profile.py +0 -0
  73. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/scrape.py +0 -0
  74. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/team.py +0 -0
  75. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/web/batch_fetch.py +0 -0
  76. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/web/common.py +0 -0
  77. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/web/crawl.py +0 -0
  78. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/web/fetch.py +0 -0
  79. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/models/web/search.py +0 -0
  80. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/sandbox_common.py +0 -0
  81. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/tools/__init__.py +0 -0
  82. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/tools/anthropic.py +0 -0
  83. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/tools/openai.py +0 -0
  84. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/tools/schema.py +0 -0
  85. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/transport/async_transport.py +0 -0
  86. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/transport/base.py +0 -0
  87. {hyperbrowser-0.86.0 → hyperbrowser-0.88.0}/hyperbrowser/transport/sync.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperbrowser
3
- Version: 0.86.0
3
+ Version: 0.88.0
4
4
  Summary: Python SDK for hyperbrowser
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -7,9 +7,14 @@ from ....models.sandbox import (
7
7
  SandboxExecParams,
8
8
  SandboxExposeParams,
9
9
  SandboxExposeResult,
10
+ SandboxImageListResponse,
11
+ SandboxListParams,
12
+ SandboxListResponse,
10
13
  SandboxMemorySnapshotParams,
11
14
  SandboxMemorySnapshotResult,
12
15
  SandboxRuntimeSession,
16
+ SandboxSnapshotListParams,
17
+ SandboxSnapshotListResponse,
13
18
  StartSandboxFromSnapshotParams,
14
19
  )
15
20
  from ....models.session import BasicResponse
@@ -288,6 +293,34 @@ class SandboxManager:
288
293
  await sandbox.connect()
289
294
  return sandbox
290
295
 
296
+ async def list(
297
+ self, params: SandboxListParams = SandboxListParams()
298
+ ) -> SandboxListResponse:
299
+ if not isinstance(params, SandboxListParams):
300
+ raise TypeError("params must be a SandboxListParams instance")
301
+ payload = await self._request(
302
+ "GET",
303
+ "/sandboxes",
304
+ params=params.model_dump(exclude_none=True, by_alias=True),
305
+ )
306
+ return SandboxListResponse(**payload)
307
+
308
+ async def list_images(self) -> SandboxImageListResponse:
309
+ payload = await self._request("GET", "/images")
310
+ return SandboxImageListResponse(**payload)
311
+
312
+ async def list_snapshots(
313
+ self, params: SandboxSnapshotListParams = SandboxSnapshotListParams()
314
+ ) -> SandboxSnapshotListResponse:
315
+ if not isinstance(params, SandboxSnapshotListParams):
316
+ raise TypeError("params must be a SandboxSnapshotListParams instance")
317
+ payload = await self._request(
318
+ "GET",
319
+ "/snapshots",
320
+ params=params.model_dump(exclude_none=True, by_alias=True),
321
+ )
322
+ return SandboxSnapshotListResponse(**payload)
323
+
291
324
  async def stop(self, sandbox_id: str) -> BasicResponse:
292
325
  payload = await self._request("PUT", f"/sandbox/{sandbox_id}/stop")
293
326
  return BasicResponse(**payload)
@@ -15,6 +15,7 @@ from ....models.session import (
15
15
  SessionEventLogListResponse,
16
16
  SessionEventLog,
17
17
  UpdateSessionProfileParams,
18
+ UpdateSessionProxyParams,
18
19
  SessionGetParams,
19
20
  )
20
21
 
@@ -183,6 +184,20 @@ class SessionManager:
183
184
  )
184
185
  return BasicResponse(**response.data)
185
186
 
187
+ async def update_proxy_params(
188
+ self,
189
+ id: str,
190
+ params: UpdateSessionProxyParams,
191
+ ) -> BasicResponse:
192
+ response = await self._client.transport.put(
193
+ self._client._build_url(f"/session/{id}/update"),
194
+ data={
195
+ "type": "proxy",
196
+ "params": params.model_dump(exclude_none=True, by_alias=True),
197
+ },
198
+ )
199
+ return BasicResponse(**response.data)
200
+
186
201
  def _warn_update_profile_params_boolean_deprecated(self) -> None:
187
202
  if SessionManager._has_warned_update_profile_params_boolean_deprecated:
188
203
  return
@@ -7,9 +7,14 @@ from ....models.sandbox import (
7
7
  SandboxExecParams,
8
8
  SandboxExposeParams,
9
9
  SandboxExposeResult,
10
+ SandboxImageListResponse,
11
+ SandboxListParams,
12
+ SandboxListResponse,
10
13
  SandboxMemorySnapshotParams,
11
14
  SandboxMemorySnapshotResult,
12
15
  SandboxRuntimeSession,
16
+ SandboxSnapshotListParams,
17
+ SandboxSnapshotListResponse,
13
18
  StartSandboxFromSnapshotParams,
14
19
  )
15
20
  from ....models.session import BasicResponse
@@ -288,6 +293,34 @@ class SandboxManager:
288
293
  sandbox.connect()
289
294
  return sandbox
290
295
 
296
+ def list(
297
+ self, params: SandboxListParams = SandboxListParams()
298
+ ) -> SandboxListResponse:
299
+ if not isinstance(params, SandboxListParams):
300
+ raise TypeError("params must be a SandboxListParams instance")
301
+ payload = self._request(
302
+ "GET",
303
+ "/sandboxes",
304
+ params=params.model_dump(exclude_none=True, by_alias=True),
305
+ )
306
+ return SandboxListResponse(**payload)
307
+
308
+ def list_images(self) -> SandboxImageListResponse:
309
+ payload = self._request("GET", "/images")
310
+ return SandboxImageListResponse(**payload)
311
+
312
+ def list_snapshots(
313
+ self, params: SandboxSnapshotListParams = SandboxSnapshotListParams()
314
+ ) -> SandboxSnapshotListResponse:
315
+ if not isinstance(params, SandboxSnapshotListParams):
316
+ raise TypeError("params must be a SandboxSnapshotListParams instance")
317
+ payload = self._request(
318
+ "GET",
319
+ "/snapshots",
320
+ params=params.model_dump(exclude_none=True, by_alias=True),
321
+ )
322
+ return SandboxSnapshotListResponse(**payload)
323
+
291
324
  def stop(self, sandbox_id: str) -> BasicResponse:
292
325
  payload = self._request("PUT", f"/sandbox/{sandbox_id}/stop")
293
326
  return BasicResponse(**payload)
@@ -13,8 +13,8 @@ from ....models.session import (
13
13
  UploadFileResponse,
14
14
  SessionEventLogListParams,
15
15
  SessionEventLogListResponse,
16
- SessionEventLog,
17
16
  UpdateSessionProfileParams,
17
+ UpdateSessionProxyParams,
18
18
  SessionGetParams,
19
19
  )
20
20
 
@@ -179,6 +179,20 @@ class SessionManager:
179
179
  )
180
180
  return BasicResponse(**response.data)
181
181
 
182
+ def update_proxy_params(
183
+ self,
184
+ id: str,
185
+ params: UpdateSessionProxyParams,
186
+ ) -> BasicResponse:
187
+ response = self._client.transport.put(
188
+ self._client._build_url(f"/session/{id}/update"),
189
+ data={
190
+ "type": "proxy",
191
+ "params": params.model_dump(exclude_none=True, by_alias=True),
192
+ },
193
+ )
194
+ return BasicResponse(**response.data)
195
+
182
196
  def _warn_update_profile_params_boolean_deprecated(self) -> None:
183
197
  if SessionManager._has_warned_update_profile_params_boolean_deprecated:
184
198
  return
@@ -234,6 +234,8 @@ from .session import (
234
234
  UploadFileResponse,
235
235
  ImageCaptchaParam,
236
236
  UpdateSessionProfileParams,
237
+ UpdateSessionProxyLocationParams,
238
+ UpdateSessionProxyParams,
237
239
  )
238
240
  from .sandbox import (
239
241
  SandboxStatus,
@@ -246,6 +248,12 @@ from .sandbox import (
246
248
  StartSandboxFromSnapshotParams,
247
249
  SandboxListParams,
248
250
  SandboxListResponse,
251
+ SandboxImageListResponse,
252
+ SandboxImageSummary,
253
+ SandboxSnapshotStatus,
254
+ SandboxSnapshotListResponse,
255
+ SandboxSnapshotSummary,
256
+ SandboxSnapshotListParams,
249
257
  SandboxMemorySnapshotParams,
250
258
  SandboxMemorySnapshotResult,
251
259
  SandboxExposeParams,
@@ -479,6 +487,8 @@ __all__ = [
479
487
  "UploadFileResponse",
480
488
  "ImageCaptchaParam",
481
489
  "UpdateSessionProfileParams",
490
+ "UpdateSessionProxyLocationParams",
491
+ "UpdateSessionProxyParams",
482
492
  # sandbox
483
493
  "SandboxStatus",
484
494
  "SandboxRegion",
@@ -490,6 +500,12 @@ __all__ = [
490
500
  "StartSandboxFromSnapshotParams",
491
501
  "SandboxListParams",
492
502
  "SandboxListResponse",
503
+ "SandboxImageListResponse",
504
+ "SandboxImageSummary",
505
+ "SandboxSnapshotStatus",
506
+ "SandboxSnapshotListResponse",
507
+ "SandboxSnapshotSummary",
508
+ "SandboxSnapshotListParams",
493
509
  "SandboxMemorySnapshotParams",
494
510
  "SandboxMemorySnapshotResult",
495
511
  "SandboxExposeParams",
@@ -23,6 +23,7 @@ SandboxProcessStatus = Literal[
23
23
  "killed",
24
24
  "timed_out",
25
25
  ]
26
+ SandboxSnapshotStatus = Literal["creating", "created", "failed"]
26
27
  SandboxFileType = Literal["file", "dir"]
27
28
  SandboxFileEncoding = Literal["utf8", "base64"]
28
29
  SandboxFileReadFormat = Literal["text", "bytes", "blob", "stream"]
@@ -164,10 +165,9 @@ class StartSandboxFromSnapshotParams(CreateSandboxParams):
164
165
 
165
166
 
166
167
  class SandboxListParams(SandboxBaseModel):
167
- status: Optional[SandboxStatus] = None
168
- page: Optional[int] = None
169
- limit: Optional[int] = None
170
- search: Optional[str] = None
168
+ status: Optional[SandboxStatus] = Field(default=None, exclude=None)
169
+ page: int = Field(default=1, ge=1)
170
+ limit: int = Field(default=10, ge=1)
171
171
 
172
172
 
173
173
  class SandboxListResponse(SandboxBaseModel):
@@ -177,6 +177,51 @@ class SandboxListResponse(SandboxBaseModel):
177
177
  per_page: int = Field(alias="perPage")
178
178
 
179
179
 
180
+ class SandboxImageSummary(SandboxBaseModel):
181
+ id: str
182
+ image_name: str = Field(alias="imageName")
183
+ namespace: str
184
+ uploaded: bool
185
+ created_at: datetime = Field(alias="createdAt")
186
+ updated_at: datetime = Field(alias="updatedAt")
187
+
188
+
189
+ class SandboxImageListResponse(SandboxBaseModel):
190
+ images: List[SandboxImageSummary]
191
+ # TODO: add pagination metadata when /api/images supports it.
192
+ # total_count: Optional[int] = Field(default=None, alias="totalCount")
193
+ # page: Optional[int] = None
194
+ # per_page: Optional[int] = Field(default=None, alias="perPage")
195
+
196
+
197
+ class SandboxSnapshotSummary(SandboxBaseModel):
198
+ id: str
199
+ snapshot_name: str = Field(alias="snapshotName")
200
+ namespace: str
201
+ image_namespace: str = Field(alias="imageNamespace")
202
+ image_name: str = Field(alias="imageName")
203
+ image_id: str = Field(alias="imageId")
204
+ status: SandboxSnapshotStatus
205
+ compatibility_tag: Optional[str] = Field(default=None, alias="compatibilityTag")
206
+ metadata: Dict[str, object]
207
+ uploaded: bool
208
+ created_at: datetime = Field(alias="createdAt")
209
+ updated_at: datetime = Field(alias="updatedAt")
210
+
211
+
212
+ class SandboxSnapshotListParams(SandboxBaseModel):
213
+ status: Optional[SandboxSnapshotStatus] = Field(default=None, exclude=None)
214
+ limit: Optional[int] = Field(default=None, ge=1)
215
+
216
+
217
+ class SandboxSnapshotListResponse(SandboxBaseModel):
218
+ snapshots: List[SandboxSnapshotSummary]
219
+ # TODO: add pagination metadata when /api/snapshots supports it.
220
+ # total_count: Optional[int] = Field(default=None, alias="totalCount")
221
+ # page: Optional[int] = None
222
+ # per_page: Optional[int] = Field(default=None, alias="perPage")
223
+
224
+
180
225
  class SandboxMemorySnapshotParams(SandboxBaseModel):
181
226
  snapshot_name: Optional[str] = Field(
182
227
  default=None, serialization_alias="snapshotName"
@@ -1,6 +1,5 @@
1
1
  from datetime import datetime
2
2
  from typing import Any, List, Literal, Optional, Union, Dict
3
- from .computer_action import ComputerActionParams, ComputerActionResponse
4
3
 
5
4
  from pydantic import BaseModel, ConfigDict, Field, field_validator
6
5
 
@@ -70,6 +69,37 @@ class UpdateSessionProfileParams(BaseModel):
70
69
  )
71
70
 
72
71
 
72
+ class UpdateSessionProxyLocationParams(BaseModel):
73
+ """
74
+ Managed proxy geolocation overrides for a running session.
75
+ """
76
+
77
+ model_config = ConfigDict(
78
+ populate_by_alias=True,
79
+ )
80
+
81
+ country: Optional[Country] = Field(default=None, serialization_alias="country")
82
+ state: Optional[State] = Field(default=None, serialization_alias="state")
83
+ city: Optional[str] = Field(default=None, serialization_alias="city")
84
+
85
+
86
+ class UpdateSessionProxyParams(BaseModel):
87
+ """
88
+ Parameters for enabling, disabling, or reconfiguring a session proxy.
89
+ """
90
+
91
+ model_config = ConfigDict(
92
+ populate_by_alias=True,
93
+ )
94
+
95
+ enabled: bool = Field(serialization_alias="enabled")
96
+ static_ip_id: Optional[str] = Field(default=None, serialization_alias="staticIpId")
97
+ location: Optional[UpdateSessionProxyLocationParams] = Field(
98
+ default=None,
99
+ serialization_alias="location",
100
+ )
101
+
102
+
73
103
  class SessionLaunchState(BaseModel):
74
104
  model_config = ConfigDict(
75
105
  populate_by_alias=True,
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "hyperbrowser"
3
- version = "0.86.0"
3
+ version = "0.88.0"
4
4
  description = "Python SDK for hyperbrowser"
5
5
  authors = ["Nikhil Shahi <nshahi1998@gmail.com>"]
6
6
  license = "MIT"
File without changes
File without changes