hyperbrowser 0.51.0__py3-none-any.whl → 0.73.0__py3-none-any.whl

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.
@@ -2,7 +2,7 @@ from typing import Any, Dict, List, Literal, Optional, Type, Union
2
2
 
3
3
  from pydantic import BaseModel, ConfigDict, Field
4
4
 
5
- from ..consts import BrowserUseLlm
5
+ from ..consts import BrowserUseLlm, BrowserUseVersion
6
6
  from ..session import CreateSessionParams
7
7
 
8
8
  BrowserUseTaskStatus = Literal["pending", "running", "completed", "failed", "stopped"]
@@ -32,6 +32,9 @@ class StartBrowserUseTaskParams(BaseModel):
32
32
  )
33
33
 
34
34
  task: str
35
+ version: Optional[BrowserUseVersion] = Field(
36
+ default=None, serialization_alias="version"
37
+ )
35
38
  llm: Optional[BrowserUseLlm] = Field(default=None, serialization_alias="llm")
36
39
  session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
37
40
  validate_output: Optional[bool] = Field(
@@ -193,15 +196,79 @@ class BrowserUseAgentHistory(BaseModel):
193
196
  metadata: Optional[BrowserUseStepMetadata] = None
194
197
 
195
198
 
199
+ # ===== 0.7.10-specific response models =====
200
+
201
+
202
+ class BrowserUseAgentOutputV0710(BaseModel):
203
+ thinking: Optional[str] = None
204
+ evaluation_previous_goal: Optional[str] = None
205
+ memory: Optional[str] = None
206
+ next_goal: Optional[str] = None
207
+ action: list[dict]
208
+
209
+
210
+ class BrowserUseActionResultV0710(BaseModel):
211
+ is_done: Optional[bool] = False
212
+ success: Optional[bool] = None
213
+ error: Optional[str] = None
214
+ metadata: Optional[dict] = None
215
+ attachments: Optional[list[str]] = None
216
+ long_term_memory: Optional[str] = None
217
+ extracted_content: Optional[str] = None
218
+ include_extracted_content_only_once: Optional[bool] = False
219
+ include_in_memory: bool = False
220
+
221
+
222
+ class BrowserUseBrowserStateHistoryV0710(BaseModel):
223
+ url: str
224
+ title: str
225
+ tabs: list[dict]
226
+ interacted_element: Union[list[Union[dict, None]], list[None]]
227
+
228
+
229
+ class BrowserUseStepMetadataV0710(BaseModel):
230
+ step_start_time: float
231
+ step_end_time: float
232
+ step_number: int
233
+
234
+
235
+ class BrowserUseAgentHistoryV0710(BaseModel):
236
+ model_output: Union[BrowserUseAgentOutputV0710, None]
237
+ result: list[BrowserUseActionResultV0710]
238
+ state: BrowserUseBrowserStateHistoryV0710
239
+ metadata: Optional[BrowserUseStepMetadataV0710] = None
240
+
241
+
242
+ # ===== latest response models =====
243
+
244
+ BrowserUseAgentHistoryLatest = Dict[str, Any]
245
+
246
+ BrowserUseStep = Union[
247
+ BrowserUseAgentHistory, BrowserUseAgentHistoryV0710, BrowserUseAgentHistoryLatest
248
+ ]
249
+
250
+
196
251
  class BrowserUseTaskData(BaseModel):
197
252
  model_config = ConfigDict(
198
253
  populate_by_alias=True,
199
254
  )
200
255
 
201
- steps: list[BrowserUseAgentHistory]
256
+ steps: list[BrowserUseStep]
202
257
  final_result: Optional[str] = Field(default=None, alias="finalResult")
203
258
 
204
259
 
260
+ class BrowserUseTaskMetadata(BaseModel):
261
+ model_config = ConfigDict(
262
+ populate_by_alias=True,
263
+ )
264
+
265
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
266
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
267
+ num_task_steps_completed: Optional[int] = Field(
268
+ default=None, alias="numTaskStepsCompleted"
269
+ )
270
+
271
+
205
272
  class BrowserUseTaskResponse(BaseModel):
206
273
  """
207
274
  Response from a browser use task.
@@ -213,6 +280,20 @@ class BrowserUseTaskResponse(BaseModel):
213
280
 
214
281
  job_id: str = Field(alias="jobId")
215
282
  status: BrowserUseTaskStatus
283
+ metadata: Optional[BrowserUseTaskMetadata] = Field(default=None, alias="metadata")
216
284
  data: Optional[BrowserUseTaskData] = Field(default=None, alias="data")
217
285
  error: Optional[str] = Field(default=None, alias="error")
218
286
  live_url: Optional[str] = Field(default=None, alias="liveUrl")
287
+
288
+
289
+ def cast_steps_for_version(
290
+ steps: List[BrowserUseStep], version: BrowserUseVersion
291
+ ) -> List[BrowserUseStep]:
292
+ if version == "0.1.40":
293
+ return [BrowserUseAgentHistory.model_validate(s) for s in steps]
294
+ elif version == "0.7.10":
295
+ return [BrowserUseAgentHistoryV0710.model_validate(s) for s in steps]
296
+ elif version == "latest":
297
+ return steps
298
+ else:
299
+ raise ValueError(f"Invalid version: {version}")
@@ -48,6 +48,9 @@ class StartClaudeComputerUseTaskParams(BaseModel):
48
48
  api_keys: Optional[ClaudeComputerUseApiKeys] = Field(
49
49
  default=None, serialization_alias="apiKeys"
50
50
  )
51
+ use_computer_action: Optional[bool] = Field(
52
+ default=None, serialization_alias="useComputerAction"
53
+ )
51
54
 
52
55
 
53
56
  class StartClaudeComputerUseTaskResponse(BaseModel):
@@ -101,6 +104,18 @@ class ClaudeComputerUseTaskData(BaseModel):
101
104
  final_result: Optional[str] = Field(default=None, alias="finalResult")
102
105
 
103
106
 
107
+ class ClaudeComputerUseTaskMetadata(BaseModel):
108
+ model_config = ConfigDict(
109
+ populate_by_alias=True,
110
+ )
111
+
112
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
113
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
114
+ num_task_steps_completed: Optional[int] = Field(
115
+ default=None, alias="numTaskStepsCompleted"
116
+ )
117
+
118
+
104
119
  class ClaudeComputerUseTaskResponse(BaseModel):
105
120
  """
106
121
  Response from a Claude Computer Use task.
@@ -112,6 +127,9 @@ class ClaudeComputerUseTaskResponse(BaseModel):
112
127
 
113
128
  job_id: str = Field(alias="jobId")
114
129
  status: ClaudeComputerUseTaskStatus
130
+ metadata: Optional[ClaudeComputerUseTaskMetadata] = Field(
131
+ default=None, alias="metadata"
132
+ )
115
133
  data: Optional[ClaudeComputerUseTaskData] = Field(default=None, alias="data")
116
134
  error: Optional[str] = Field(default=None, alias="error")
117
135
  live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -42,6 +42,9 @@ class StartCuaTaskParams(BaseModel):
42
42
  default=None, serialization_alias="useCustomApiKeys"
43
43
  )
44
44
  api_keys: Optional[CuaApiKeys] = Field(default=None, serialization_alias="apiKeys")
45
+ use_computer_action: Optional[bool] = Field(
46
+ default=None, serialization_alias="useComputerAction"
47
+ )
45
48
 
46
49
 
47
50
  class StartCuaTaskResponse(BaseModel):
@@ -131,6 +134,18 @@ class CuaTaskData(BaseModel):
131
134
  final_result: Optional[str] = Field(default=None, alias="finalResult")
132
135
 
133
136
 
137
+ class CuaTaskMetadata(BaseModel):
138
+ model_config = ConfigDict(
139
+ populate_by_alias=True,
140
+ )
141
+
142
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
143
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
144
+ num_task_steps_completed: Optional[int] = Field(
145
+ default=None, alias="numTaskStepsCompleted"
146
+ )
147
+
148
+
134
149
  class CuaTaskResponse(BaseModel):
135
150
  """
136
151
  Response from a CUA task.
@@ -142,6 +157,7 @@ class CuaTaskResponse(BaseModel):
142
157
 
143
158
  job_id: str = Field(alias="jobId")
144
159
  status: CuaTaskStatus
160
+ metadata: Optional[CuaTaskMetadata] = Field(default=None, alias="metadata")
145
161
  data: Optional[CuaTaskData] = Field(default=None, alias="data")
146
162
  error: Optional[str] = Field(default=None, alias="error")
147
163
  live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -0,0 +1,135 @@
1
+ from typing import Any, Literal, Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+ from ..session import CreateSessionParams
6
+ from ..consts import GeminiComputerUseLlm
7
+
8
+ GeminiComputerUseTaskStatus = Literal[
9
+ "pending", "running", "completed", "failed", "stopped"
10
+ ]
11
+
12
+
13
+ class GeminiComputerUseApiKeys(BaseModel):
14
+ """
15
+ API keys for the Gemini Computer Use task.
16
+ """
17
+
18
+ model_config = ConfigDict(
19
+ populate_by_alias=True,
20
+ )
21
+
22
+ google: Optional[str] = Field(default=None, serialization_alias="google")
23
+
24
+
25
+ class StartGeminiComputerUseTaskParams(BaseModel):
26
+ """
27
+ Parameters for creating a new Gemini Computer Use task.
28
+ """
29
+
30
+ model_config = ConfigDict(
31
+ populate_by_alias=True,
32
+ )
33
+
34
+ task: str
35
+ llm: Optional[GeminiComputerUseLlm] = Field(default=None, serialization_alias="llm")
36
+ session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
37
+ max_failures: Optional[int] = Field(default=None, serialization_alias="maxFailures")
38
+ max_steps: Optional[int] = Field(default=None, serialization_alias="maxSteps")
39
+ keep_browser_open: Optional[bool] = Field(
40
+ default=None, serialization_alias="keepBrowserOpen"
41
+ )
42
+ session_options: Optional[CreateSessionParams] = Field(
43
+ default=None, serialization_alias="sessionOptions"
44
+ )
45
+ use_custom_api_keys: Optional[bool] = Field(
46
+ default=None, serialization_alias="useCustomApiKeys"
47
+ )
48
+ use_computer_action: Optional[bool] = Field(
49
+ default=None, serialization_alias="useComputerAction"
50
+ )
51
+ api_keys: Optional[GeminiComputerUseApiKeys] = Field(
52
+ default=None, serialization_alias="apiKeys"
53
+ )
54
+
55
+
56
+ class StartGeminiComputerUseTaskResponse(BaseModel):
57
+ """
58
+ Response from starting a Gemini Computer Use task.
59
+ """
60
+
61
+ model_config = ConfigDict(
62
+ populate_by_alias=True,
63
+ )
64
+
65
+ job_id: str = Field(alias="jobId")
66
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
67
+
68
+
69
+ class GeminiComputerUseTaskStatusResponse(BaseModel):
70
+ """
71
+ Response from getting a Gemini Computer Use task status.
72
+ """
73
+
74
+ model_config = ConfigDict(
75
+ populate_by_alias=True,
76
+ )
77
+
78
+ status: GeminiComputerUseTaskStatus
79
+
80
+
81
+ class GeminiComputerUseStepResponse(BaseModel):
82
+ """
83
+ Response from a single Gemini Computer Use step.
84
+ """
85
+
86
+ model_config = ConfigDict(
87
+ populate_by_alias=True,
88
+ )
89
+
90
+ candidates: Optional[list[Any]] = Field(
91
+ default=None, serialization_alias="candidates"
92
+ )
93
+ model_version: Optional[str] = Field(
94
+ default=None, serialization_alias="modelVersion"
95
+ )
96
+
97
+
98
+ class GeminiComputerUseTaskData(BaseModel):
99
+ model_config = ConfigDict(
100
+ populate_by_alias=True,
101
+ )
102
+
103
+ steps: list[GeminiComputerUseStepResponse]
104
+ final_result: Optional[str] = Field(default=None, alias="finalResult")
105
+
106
+
107
+ class GeminiComputerUseTaskMetadata(BaseModel):
108
+ model_config = ConfigDict(
109
+ populate_by_alias=True,
110
+ )
111
+
112
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
113
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
114
+ num_task_steps_completed: Optional[int] = Field(
115
+ default=None, alias="numTaskStepsCompleted"
116
+ )
117
+
118
+
119
+ class GeminiComputerUseTaskResponse(BaseModel):
120
+ """
121
+ Response from a Gemini Computer Use task.
122
+ """
123
+
124
+ model_config = ConfigDict(
125
+ populate_by_alias=True,
126
+ )
127
+
128
+ job_id: str = Field(alias="jobId")
129
+ status: GeminiComputerUseTaskStatus
130
+ metadata: Optional[GeminiComputerUseTaskMetadata] = Field(
131
+ default=None, alias="metadata"
132
+ )
133
+ data: Optional[GeminiComputerUseTaskData] = Field(default=None, alias="data")
134
+ error: Optional[str] = Field(default=None, alias="error")
135
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -126,6 +126,16 @@ class HyperAgentTaskData(BaseModel):
126
126
  final_result: Optional[str] = Field(default=None, alias="finalResult")
127
127
 
128
128
 
129
+ class HyperAgentTaskMetadata(BaseModel):
130
+ model_config = ConfigDict(
131
+ populate_by_alias=True,
132
+ )
133
+
134
+ num_task_steps_completed: Optional[int] = Field(
135
+ default=None, alias="numTaskStepsCompleted"
136
+ )
137
+
138
+
129
139
  class HyperAgentTaskResponse(BaseModel):
130
140
  """
131
141
  Response from a HyperAgent task.
@@ -137,6 +147,7 @@ class HyperAgentTaskResponse(BaseModel):
137
147
 
138
148
  job_id: str = Field(alias="jobId")
139
149
  status: HyperAgentTaskStatus
150
+ metadata: Optional[HyperAgentTaskMetadata] = Field(default=None, alias="metadata")
140
151
  data: Optional[HyperAgentTaskData] = Field(default=None, alias="data")
141
152
  error: Optional[str] = Field(default=None, alias="error")
142
153
  live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -8,11 +8,20 @@ class ComputerAction(str, Enum):
8
8
 
9
9
  CLICK = "click"
10
10
  DRAG = "drag"
11
- PRESS_KEYS = "press_keys"
11
+ HOLD_KEY = "hold_key"
12
+ MOUSE_DOWN = "mouse_down"
13
+ MOUSE_UP = "mouse_up"
12
14
  MOVE_MOUSE = "move_mouse"
15
+ PRESS_KEYS = "press_keys"
13
16
  SCREENSHOT = "screenshot"
14
17
  SCROLL = "scroll"
15
18
  TYPE_TEXT = "type_text"
19
+ GET_CLIPBOARD_TEXT = "get_clipboard_text"
20
+
21
+
22
+ ComputerActionMouseButton = Literal[
23
+ "left", "right", "middle", "back", "forward", "wheel"
24
+ ]
16
25
 
17
26
 
18
27
  class Coordinate(BaseModel):
@@ -28,11 +37,9 @@ class ClickActionParams(BaseModel):
28
37
  model_config = ConfigDict(use_enum_values=True)
29
38
 
30
39
  action: Literal[ComputerAction.CLICK] = ComputerAction.CLICK
31
- x: int
32
- y: int
33
- button: Literal["left", "right", "middle", "back", "forward", "wheel"] = Field(
34
- default="left"
35
- )
40
+ x: Optional[int] = Field(default=None)
41
+ y: Optional[int] = Field(default=None)
42
+ button: ComputerActionMouseButton = Field(default="left")
36
43
  num_clicks: int = Field(serialization_alias="numClicks", default=1)
37
44
  return_screenshot: bool = Field(
38
45
  serialization_alias="returnScreenshot", default=False
@@ -63,6 +70,43 @@ class PressKeysActionParams(BaseModel):
63
70
  )
64
71
 
65
72
 
73
+ class HoldKeyActionParams(BaseModel):
74
+ """Parameters for hold key action."""
75
+
76
+ model_config = ConfigDict(use_enum_values=True)
77
+
78
+ action: Literal[ComputerAction.HOLD_KEY] = ComputerAction.HOLD_KEY
79
+ key: str
80
+ duration: int
81
+ return_screenshot: bool = Field(
82
+ serialization_alias="returnScreenshot", default=False
83
+ )
84
+
85
+
86
+ class MouseDownActionParams(BaseModel):
87
+ """Parameters for mouse down action."""
88
+
89
+ model_config = ConfigDict(use_enum_values=True)
90
+
91
+ action: Literal[ComputerAction.MOUSE_DOWN] = ComputerAction.MOUSE_DOWN
92
+ button: ComputerActionMouseButton = Field(default="left")
93
+ return_screenshot: bool = Field(
94
+ serialization_alias="returnScreenshot", default=False
95
+ )
96
+
97
+
98
+ class MouseUpActionParams(BaseModel):
99
+ """Parameters for mouse up action."""
100
+
101
+ model_config = ConfigDict(use_enum_values=True)
102
+
103
+ action: Literal[ComputerAction.MOUSE_UP] = ComputerAction.MOUSE_UP
104
+ button: ComputerActionMouseButton = Field(default="left")
105
+ return_screenshot: bool = Field(
106
+ serialization_alias="returnScreenshot", default=False
107
+ )
108
+
109
+
66
110
  class MoveMouseActionParams(BaseModel):
67
111
  """Parameters for move mouse action."""
68
112
 
@@ -111,6 +155,19 @@ class TypeTextActionParams(BaseModel):
111
155
  )
112
156
 
113
157
 
158
+ class GetClipboardTextActionParams(BaseModel):
159
+ """Parameters for get clipboard text action."""
160
+
161
+ model_config = ConfigDict(use_enum_values=True)
162
+
163
+ action: Literal[ComputerAction.GET_CLIPBOARD_TEXT] = (
164
+ ComputerAction.GET_CLIPBOARD_TEXT
165
+ )
166
+ return_screenshot: bool = Field(
167
+ serialization_alias="returnScreenshot", default=False
168
+ )
169
+
170
+
114
171
  ComputerActionParams = Union[
115
172
  ClickActionParams,
116
173
  DragActionParams,
@@ -119,9 +176,24 @@ ComputerActionParams = Union[
119
176
  ScreenshotActionParams,
120
177
  ScrollActionParams,
121
178
  TypeTextActionParams,
179
+ HoldKeyActionParams,
180
+ MouseDownActionParams,
181
+ MouseUpActionParams,
182
+ GetClipboardTextActionParams,
122
183
  ]
123
184
 
124
185
 
186
+ class ComputerActionResponseDataClipboardText(BaseModel):
187
+ """Data for get clipboard text action."""
188
+
189
+ model_config = ConfigDict(populate_by_alias=True)
190
+
191
+ clipboard_text: Optional[str] = Field(default=None, alias="clipboardText")
192
+
193
+
194
+ ComputerActionResponseData = Union[ComputerActionResponseDataClipboardText]
195
+
196
+
125
197
  class ComputerActionResponse(BaseModel):
126
198
  """Response from computer action API."""
127
199
 
@@ -131,5 +203,6 @@ class ComputerActionResponse(BaseModel):
131
203
 
132
204
  success: bool
133
205
  screenshot: Optional[str] = None
206
+ data: Optional[ComputerActionResponseData] = None
134
207
  error: Optional[str] = None
135
208
  message: Optional[str] = None
@@ -10,14 +10,22 @@ RecordingStatus = Literal[
10
10
  DownloadsStatus = Literal[
11
11
  "not_enabled", "pending", "in_progress", "completed", "failed"
12
12
  ]
13
+ SessionEventLogType = Literal[
14
+ "captcha_detected", "captcha_solved", "captcha_error", "file_downloaded"
15
+ ]
13
16
 
14
17
  POLLING_ATTEMPTS = 5
15
18
 
19
+ BrowserUseVersion = Literal["0.1.40", "0.7.10", "latest"]
20
+
16
21
  BrowserUseLlm = Literal[
17
22
  "gpt-4o",
18
23
  "gpt-4o-mini",
19
24
  "gpt-4.1",
20
25
  "gpt-4.1-mini",
26
+ "gpt-5",
27
+ "gpt-5-mini",
28
+ "claude-sonnet-4-5",
21
29
  "claude-sonnet-4-20250514",
22
30
  "claude-3-7-sonnet-20250219",
23
31
  "claude-3-5-sonnet-20241022",
@@ -33,8 +41,19 @@ HyperAgentLlm = Literal[
33
41
  "gpt-4.1-nano",
34
42
  ]
35
43
  ClaudeComputerUseLlm = Literal[
36
- "claude-3-7-sonnet-20250219",
44
+ "claude-haiku-4-5-20251001",
45
+ "claude-sonnet-4-5",
37
46
  "claude-sonnet-4-20250514",
47
+ "claude-3-7-sonnet-20250219",
48
+ ]
49
+ GeminiComputerUseLlm = Literal["gemini-2.5-computer-use-preview-10-2025",]
50
+ SessionRegion = Literal[
51
+ "us-central",
52
+ "asia-south",
53
+ "us-dev",
54
+ "europe-west",
55
+ "us-west",
56
+ "us-east",
38
57
  ]
39
58
 
40
59
  Country = Literal[
@@ -55,6 +55,16 @@ class ExtractJobStatusResponse(BaseModel):
55
55
  status: ExtractJobStatus
56
56
 
57
57
 
58
+ class ExtractJobMetadata(BaseModel):
59
+ model_config = ConfigDict(
60
+ populate_by_alias=True,
61
+ )
62
+
63
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
64
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
65
+ num_pages_scraped: Optional[int] = Field(default=None, alias="numPagesScraped")
66
+
67
+
58
68
  class ExtractJobResponse(BaseModel):
59
69
  """
60
70
  Response from a extract job.
@@ -67,4 +77,5 @@ class ExtractJobResponse(BaseModel):
67
77
  job_id: str = Field(alias="jobId")
68
78
  status: ExtractJobStatus
69
79
  error: Optional[str] = None
80
+ metadata: Optional[ExtractJobMetadata] = None
70
81
  data: Optional[dict] = None
@@ -21,6 +21,25 @@ class ScreenshotOptions(BaseModel):
21
21
  format: Optional[ScrapeScreenshotFormat] = Field(
22
22
  default=None, serialization_alias="format"
23
23
  )
24
+ crop_to_content: Optional[bool] = Field(
25
+ default=None, serialization_alias="cropToContent"
26
+ )
27
+ crop_to_content_max_height: Optional[int] = Field(
28
+ default=None, serialization_alias="cropToContentMaxHeight"
29
+ )
30
+ crop_to_content_min_height: Optional[int] = Field(
31
+ default=None, serialization_alias="cropToContentMinHeight"
32
+ )
33
+ wait_for: Optional[int] = Field(default=None, serialization_alias="waitFor")
34
+
35
+
36
+ class StorageStateOptions(BaseModel):
37
+ local_storage: Optional[dict[str, str]] = Field(
38
+ default=None, serialization_alias="localStorage"
39
+ )
40
+ session_storage: Optional[dict[str, str]] = Field(
41
+ default=None, serialization_alias="sessionStorage"
42
+ )
24
43
 
25
44
 
26
45
  class ScrapeOptions(BaseModel):
@@ -46,6 +65,9 @@ class ScrapeOptions(BaseModel):
46
65
  screenshot_options: Optional[ScreenshotOptions] = Field(
47
66
  default=None, serialization_alias="screenshotOptions"
48
67
  )
68
+ storage_state: Optional[StorageStateOptions] = Field(
69
+ default=None, serialization_alias="storageState"
70
+ )
49
71
 
50
72
 
51
73
  class StartScrapeJobParams(BaseModel):