anchorbrowser 0.1.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.
Files changed (100) hide show
  1. anchorbrowser/__init__.py +100 -0
  2. anchorbrowser/_base_client.py +1995 -0
  3. anchorbrowser/_client.py +440 -0
  4. anchorbrowser/_compat.py +219 -0
  5. anchorbrowser/_constants.py +14 -0
  6. anchorbrowser/_exceptions.py +108 -0
  7. anchorbrowser/_files.py +123 -0
  8. anchorbrowser/_models.py +829 -0
  9. anchorbrowser/_qs.py +150 -0
  10. anchorbrowser/_resource.py +43 -0
  11. anchorbrowser/_response.py +832 -0
  12. anchorbrowser/_streaming.py +333 -0
  13. anchorbrowser/_types.py +219 -0
  14. anchorbrowser/_utils/__init__.py +57 -0
  15. anchorbrowser/_utils/_logs.py +25 -0
  16. anchorbrowser/_utils/_proxy.py +65 -0
  17. anchorbrowser/_utils/_reflection.py +42 -0
  18. anchorbrowser/_utils/_resources_proxy.py +24 -0
  19. anchorbrowser/_utils/_streams.py +12 -0
  20. anchorbrowser/_utils/_sync.py +86 -0
  21. anchorbrowser/_utils/_transform.py +447 -0
  22. anchorbrowser/_utils/_typing.py +151 -0
  23. anchorbrowser/_utils/_utils.py +422 -0
  24. anchorbrowser/_version.py +4 -0
  25. anchorbrowser/lib/.keep +4 -0
  26. anchorbrowser/lib/agent.py +69 -0
  27. anchorbrowser/lib/browser.py +186 -0
  28. anchorbrowser/py.typed +0 -0
  29. anchorbrowser/resources/__init__.py +61 -0
  30. anchorbrowser/resources/agent.py +305 -0
  31. anchorbrowser/resources/browser.py +152 -0
  32. anchorbrowser/resources/extensions.py +412 -0
  33. anchorbrowser/resources/profiles.py +553 -0
  34. anchorbrowser/resources/sessions/__init__.py +89 -0
  35. anchorbrowser/resources/sessions/all.py +192 -0
  36. anchorbrowser/resources/sessions/clipboard.py +252 -0
  37. anchorbrowser/resources/sessions/keyboard.py +298 -0
  38. anchorbrowser/resources/sessions/mouse.py +651 -0
  39. anchorbrowser/resources/sessions/recordings/__init__.py +33 -0
  40. anchorbrowser/resources/sessions/recordings/primary.py +176 -0
  41. anchorbrowser/resources/sessions/recordings/recordings.py +357 -0
  42. anchorbrowser/resources/sessions/sessions.py +1122 -0
  43. anchorbrowser/resources/tools.py +529 -0
  44. anchorbrowser/types/__init__.py +32 -0
  45. anchorbrowser/types/extension_delete_response.py +12 -0
  46. anchorbrowser/types/extension_list_response.py +31 -0
  47. anchorbrowser/types/extension_manifest.py +28 -0
  48. anchorbrowser/types/extension_retrieve_response.py +27 -0
  49. anchorbrowser/types/extension_upload_params.py +17 -0
  50. anchorbrowser/types/extension_upload_response.py +31 -0
  51. anchorbrowser/types/profile_create_params.py +31 -0
  52. anchorbrowser/types/profile_list_response.py +43 -0
  53. anchorbrowser/types/profile_retrieve_response.py +36 -0
  54. anchorbrowser/types/profile_update_params.py +27 -0
  55. anchorbrowser/types/session_copy_response.py +12 -0
  56. anchorbrowser/types/session_create_params.py +196 -0
  57. anchorbrowser/types/session_create_response.py +22 -0
  58. anchorbrowser/types/session_drag_and_drop_params.py +26 -0
  59. anchorbrowser/types/session_drag_and_drop_response.py +11 -0
  60. anchorbrowser/types/session_goto_params.py +12 -0
  61. anchorbrowser/types/session_goto_response.py +11 -0
  62. anchorbrowser/types/session_paste_params.py +12 -0
  63. anchorbrowser/types/session_paste_response.py +11 -0
  64. anchorbrowser/types/session_retrieve_downloads_response.py +51 -0
  65. anchorbrowser/types/session_scroll_params.py +26 -0
  66. anchorbrowser/types/session_scroll_response.py +11 -0
  67. anchorbrowser/types/sessions/__init__.py +25 -0
  68. anchorbrowser/types/sessions/all_status_response.py +30 -0
  69. anchorbrowser/types/sessions/clipboard_get_response.py +16 -0
  70. anchorbrowser/types/sessions/clipboard_set_params.py +12 -0
  71. anchorbrowser/types/sessions/clipboard_set_response.py +11 -0
  72. anchorbrowser/types/sessions/keyboard_shortcut_params.py +18 -0
  73. anchorbrowser/types/sessions/keyboard_shortcut_response.py +11 -0
  74. anchorbrowser/types/sessions/keyboard_type_params.py +15 -0
  75. anchorbrowser/types/sessions/keyboard_type_response.py +11 -0
  76. anchorbrowser/types/sessions/mouse_click_params.py +18 -0
  77. anchorbrowser/types/sessions/mouse_click_response.py +11 -0
  78. anchorbrowser/types/sessions/mouse_double_click_params.py +18 -0
  79. anchorbrowser/types/sessions/mouse_double_click_response.py +11 -0
  80. anchorbrowser/types/sessions/mouse_down_params.py +18 -0
  81. anchorbrowser/types/sessions/mouse_down_response.py +11 -0
  82. anchorbrowser/types/sessions/mouse_move_params.py +15 -0
  83. anchorbrowser/types/sessions/mouse_move_response.py +11 -0
  84. anchorbrowser/types/sessions/mouse_up_params.py +18 -0
  85. anchorbrowser/types/sessions/mouse_up_response.py +11 -0
  86. anchorbrowser/types/sessions/recording_list_response.py +46 -0
  87. anchorbrowser/types/sessions/recording_pause_response.py +12 -0
  88. anchorbrowser/types/sessions/recording_resume_response.py +12 -0
  89. anchorbrowser/types/sessions/recordings/__init__.py +3 -0
  90. anchorbrowser/types/shared/__init__.py +3 -0
  91. anchorbrowser/types/shared/success_response.py +15 -0
  92. anchorbrowser/types/tool_fetch_webpage_params.py +26 -0
  93. anchorbrowser/types/tool_fetch_webpage_response.py +7 -0
  94. anchorbrowser/types/tool_perform_web_task_params.py +30 -0
  95. anchorbrowser/types/tool_perform_web_task_response.py +16 -0
  96. anchorbrowser/types/tool_screenshot_webpage_params.py +48 -0
  97. anchorbrowser-0.1.0.dist-info/METADATA +449 -0
  98. anchorbrowser-0.1.0.dist-info/RECORD +100 -0
  99. anchorbrowser-0.1.0.dist-info/WHEEL +4 -0
  100. anchorbrowser-0.1.0.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,31 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+
6
+ from pydantic import Field as FieldInfo
7
+
8
+ from .._models import BaseModel
9
+ from .extension_manifest import ExtensionManifest
10
+
11
+ __all__ = ["ExtensionUploadResponse", "Data"]
12
+
13
+
14
+ class Data(BaseModel):
15
+ id: Optional[str] = None
16
+ """Unique identifier for the extension"""
17
+
18
+ created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
19
+ """Timestamp when the extension was created"""
20
+
21
+ manifest: Optional[ExtensionManifest] = None
22
+
23
+ name: Optional[str] = None
24
+ """Extension name"""
25
+
26
+ updated_at: Optional[datetime] = FieldInfo(alias="updatedAt", default=None)
27
+ """Timestamp when the extension was last updated"""
28
+
29
+
30
+ class ExtensionUploadResponse(BaseModel):
31
+ data: Optional[Data] = None
@@ -0,0 +1,31 @@
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 Literal, Required, TypedDict
6
+
7
+ __all__ = ["ProfileCreateParams"]
8
+
9
+
10
+ class ProfileCreateParams(TypedDict, total=False):
11
+ name: Required[str]
12
+ """The name of the profile."""
13
+
14
+ description: str
15
+ """A description of the profile."""
16
+
17
+ session_id: str
18
+ """The browser session ID is required if the source is set to `session`.
19
+
20
+ The browser session must be running, and the profile will be stored once the
21
+ browser session terminates.
22
+ """
23
+
24
+ source: Literal["session"]
25
+ """The source of the profile data. currently only `session` is supported."""
26
+
27
+ store_cache: bool
28
+ """
29
+ Indicates whether the browser session cache should be saved when the browser
30
+ session ends. Defaults to `false`.
31
+ """
@@ -0,0 +1,43 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from .._models import BaseModel
8
+
9
+ __all__ = ["ProfileListResponse", "Data", "DataItem"]
10
+
11
+
12
+ class DataItem(BaseModel):
13
+ created_at: Optional[datetime] = None
14
+ """The timestamp when the profile was created."""
15
+
16
+ description: Optional[str] = None
17
+ """A description of the profile."""
18
+
19
+ name: Optional[str] = None
20
+ """The name of the profile."""
21
+
22
+ session_id: Optional[str] = None
23
+ """The browser session ID used to create this profile, if applicable."""
24
+
25
+ source: Optional[Literal["session"]] = None
26
+ """The source of the profile data."""
27
+
28
+ status: Optional[str] = None
29
+ """The current status of the profile."""
30
+
31
+ store_cache: Optional[bool] = None
32
+ """Whether the profile stores browser cache."""
33
+
34
+
35
+ class Data(BaseModel):
36
+ count: Optional[int] = None
37
+ """Total number of profiles"""
38
+
39
+ items: Optional[List[DataItem]] = None
40
+
41
+
42
+ class ProfileListResponse(BaseModel):
43
+ data: Optional[Data] = None
@@ -0,0 +1,36 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from .._models import BaseModel
8
+
9
+ __all__ = ["ProfileRetrieveResponse", "Data"]
10
+
11
+
12
+ class Data(BaseModel):
13
+ created_at: Optional[datetime] = None
14
+ """The timestamp when the profile was created."""
15
+
16
+ description: Optional[str] = None
17
+ """A description of the profile."""
18
+
19
+ name: Optional[str] = None
20
+ """The name of the profile."""
21
+
22
+ session_id: Optional[str] = None
23
+ """The browser session ID used to create this profile, if applicable."""
24
+
25
+ source: Optional[Literal["session"]] = None
26
+ """The source of the profile data."""
27
+
28
+ status: Optional[str] = None
29
+ """The current status of the profile."""
30
+
31
+ store_cache: Optional[bool] = None
32
+ """Whether the profile stores browser cache."""
33
+
34
+
35
+ class ProfileRetrieveResponse(BaseModel):
36
+ data: Optional[Data] = None
@@ -0,0 +1,27 @@
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 Literal, TypedDict
6
+
7
+ __all__ = ["ProfileUpdateParams"]
8
+
9
+
10
+ class ProfileUpdateParams(TypedDict, total=False):
11
+ description: str
12
+ """The new description for the profile."""
13
+
14
+ session_id: str
15
+ """The browser session ID is required if the source is set to `session`.
16
+
17
+ The browser session must belong to the user and be active.
18
+ """
19
+
20
+ source: Literal["session"]
21
+ """The source of the profile data. Currently, only `session` is supported."""
22
+
23
+ store_cache: bool
24
+ """
25
+ Indicates whether the browser session cache should be saved when the browser
26
+ session ends. Defaults to `false`.
27
+ """
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from .._models import BaseModel
6
+
7
+ __all__ = ["SessionCopyResponse"]
8
+
9
+
10
+ class SessionCopyResponse(BaseModel):
11
+ text: Optional[str] = None
12
+ """The text that was copied"""
@@ -0,0 +1,196 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Union
6
+ from typing_extensions import Literal, Required, TypeAlias, TypedDict
7
+
8
+ __all__ = [
9
+ "SessionCreateParams",
10
+ "Browser",
11
+ "BrowserAdblock",
12
+ "BrowserCaptchaSolver",
13
+ "BrowserHeadless",
14
+ "BrowserP2pDownload",
15
+ "BrowserPopupBlocker",
16
+ "BrowserProfile",
17
+ "BrowserViewport",
18
+ "Session",
19
+ "SessionLiveView",
20
+ "SessionProxy",
21
+ "SessionProxyAnchorResidentialProxyType",
22
+ "SessionProxyAnchorMobileProxyType",
23
+ "SessionProxyCustomProxyType",
24
+ "SessionRecording",
25
+ "SessionTimeout",
26
+ ]
27
+
28
+
29
+ class SessionCreateParams(TypedDict, total=False):
30
+ browser: Browser
31
+ """Browser-specific configurations."""
32
+
33
+ session: Session
34
+ """Session-related configurations."""
35
+
36
+
37
+ class BrowserAdblock(TypedDict, total=False):
38
+ active: bool
39
+ """Enable or disable ad-blocking. Defaults to `true`."""
40
+
41
+
42
+ class BrowserCaptchaSolver(TypedDict, total=False):
43
+ active: bool
44
+ """Enable or disable captcha-solving.
45
+
46
+ Requires proxy to be active. Defaults to `false`.
47
+ """
48
+
49
+
50
+ class BrowserHeadless(TypedDict, total=False):
51
+ active: bool
52
+ """Whether browser should be headless or headful. Defaults to `false`."""
53
+
54
+
55
+ class BrowserP2pDownload(TypedDict, total=False):
56
+ active: bool
57
+ """Enable or disable P2P downloads.
58
+
59
+ When enabled, the browser will capture downloads for direct data extraction,
60
+ instead of uploading them on Anchor's storage. Defaults to `false`.
61
+ """
62
+
63
+
64
+ class BrowserPopupBlocker(TypedDict, total=False):
65
+ active: bool
66
+ """Blocks popups, including ads and CAPTCHA consent banners.
67
+
68
+ Requires adblock to be active. Defaults to `true`.
69
+ """
70
+
71
+
72
+ class BrowserProfile(TypedDict, total=False):
73
+ name: str
74
+ """The name of the profile to be used during the browser session."""
75
+
76
+ persist: bool
77
+ """
78
+ Indicates whether the browser session profile data should be saved when the
79
+ browser session ends. Defaults to `false`.
80
+ """
81
+
82
+ store_cache: bool
83
+ """
84
+ Indicates whether the browser session cache should be saved when the browser
85
+ session ends. Defaults to `false`.
86
+ """
87
+
88
+
89
+ class BrowserViewport(TypedDict, total=False):
90
+ height: int
91
+ """Height of the viewport in pixels. Defaults to `900`."""
92
+
93
+ width: int
94
+ """Width of the viewport in pixels. Defaults to `1440`."""
95
+
96
+
97
+ class Browser(TypedDict, total=False):
98
+ adblock: BrowserAdblock
99
+ """Configuration for ad-blocking."""
100
+
101
+ captcha_solver: BrowserCaptchaSolver
102
+ """Configuration for captcha-solving."""
103
+
104
+ headless: BrowserHeadless
105
+ """Configuration for headless mode."""
106
+
107
+ p2p_download: BrowserP2pDownload
108
+ """Configuration for peer-to-peer download capture functionality."""
109
+
110
+ popup_blocker: BrowserPopupBlocker
111
+ """Configuration for popup blocking."""
112
+
113
+ profile: BrowserProfile
114
+ """Options for managing and persisting browser session profiles."""
115
+
116
+ viewport: BrowserViewport
117
+ """Configuration for the browser's viewport size."""
118
+
119
+
120
+ class SessionLiveView(TypedDict, total=False):
121
+ read_only: bool
122
+ """Enable or disable read-only mode for live viewing. Defaults to `false`."""
123
+
124
+
125
+ class SessionProxyAnchorResidentialProxyType(TypedDict, total=False):
126
+ type: Required[Literal["anchor_residential"]]
127
+
128
+ active: bool
129
+ """Enable or disable proxy usage. Defaults to `false`."""
130
+
131
+ country_code: Literal["us", "uk", "fr", "it", "jp", "au", "de", "fi", "ca"]
132
+ """Country code for residential proxy"""
133
+
134
+
135
+ class SessionProxyAnchorMobileProxyType(TypedDict, total=False):
136
+ type: Required[Literal["anchor_mobile"]]
137
+
138
+ active: bool
139
+ """Enable or disable proxy usage. Defaults to `false`."""
140
+
141
+ country_code: Literal["us", "uk", "fr", "it", "jp", "au", "de", "fi", "ca"]
142
+ """Country code for mobile proxy"""
143
+
144
+
145
+ class SessionProxyCustomProxyType(TypedDict, total=False):
146
+ password: Required[str]
147
+ """Proxy password"""
148
+
149
+ server: Required[str]
150
+ """Proxy server address"""
151
+
152
+ type: Required[Literal["custom"]]
153
+
154
+ username: Required[str]
155
+ """Proxy username"""
156
+
157
+ active: bool
158
+ """Enable or disable proxy usage. Defaults to `false`."""
159
+
160
+
161
+ SessionProxy: TypeAlias = Union[
162
+ SessionProxyAnchorResidentialProxyType, SessionProxyAnchorMobileProxyType, SessionProxyCustomProxyType
163
+ ]
164
+
165
+
166
+ class SessionRecording(TypedDict, total=False):
167
+ active: bool
168
+ """Enable or disable video recording of the browser session. Defaults to `true`."""
169
+
170
+
171
+ class SessionTimeout(TypedDict, total=False):
172
+ idle_timeout: int
173
+ """
174
+ The amount of time (in minutes) the browser session waits for new connections
175
+ after all others are closed before stopping. Defaults to `5`.
176
+ """
177
+
178
+ max_duration: int
179
+ """Maximum amount of time (in minutes) for the browser to run before terminating.
180
+
181
+ Defaults to `20`.
182
+ """
183
+
184
+
185
+ class Session(TypedDict, total=False):
186
+ live_view: SessionLiveView
187
+ """Configuration for live viewing the browser session."""
188
+
189
+ proxy: SessionProxy
190
+ """Configuration options for proxy usage."""
191
+
192
+ recording: SessionRecording
193
+ """Configuration for session recording."""
194
+
195
+ timeout: SessionTimeout
196
+ """Timeout configurations for the browser session."""
@@ -0,0 +1,22 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from .._models import BaseModel
6
+
7
+ __all__ = ["SessionCreateResponse", "Data"]
8
+
9
+
10
+ class Data(BaseModel):
11
+ id: Optional[str] = None
12
+ """Unique identifier for the browser session"""
13
+
14
+ cdp_url: Optional[str] = None
15
+ """The CDP websocket connection string"""
16
+
17
+ live_view_url: Optional[str] = None
18
+ """The browser session live view url"""
19
+
20
+
21
+ class SessionCreateResponse(BaseModel):
22
+ data: Optional[Data] = None
@@ -0,0 +1,26 @@
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 Literal, Required, Annotated, TypedDict
6
+
7
+ from .._utils import PropertyInfo
8
+
9
+ __all__ = ["SessionDragAndDropParams"]
10
+
11
+
12
+ class SessionDragAndDropParams(TypedDict, total=False):
13
+ end_x: Required[Annotated[int, PropertyInfo(alias="endX")]]
14
+ """Ending X coordinate"""
15
+
16
+ end_y: Required[Annotated[int, PropertyInfo(alias="endY")]]
17
+ """Ending Y coordinate"""
18
+
19
+ start_x: Required[Annotated[int, PropertyInfo(alias="startX")]]
20
+ """Starting X coordinate"""
21
+
22
+ start_y: Required[Annotated[int, PropertyInfo(alias="startY")]]
23
+ """Starting Y coordinate"""
24
+
25
+ button: Literal["left", "middle", "right"]
26
+ """Mouse button to use"""
@@ -0,0 +1,11 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from .._models import BaseModel
6
+
7
+ __all__ = ["SessionDragAndDropResponse"]
8
+
9
+
10
+ class SessionDragAndDropResponse(BaseModel):
11
+ status: Optional[str] = None
@@ -0,0 +1,12 @@
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, TypedDict
6
+
7
+ __all__ = ["SessionGotoParams"]
8
+
9
+
10
+ class SessionGotoParams(TypedDict, total=False):
11
+ url: Required[str]
12
+ """The URL to navigate to"""
@@ -0,0 +1,11 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from .._models import BaseModel
6
+
7
+ __all__ = ["SessionGotoResponse"]
8
+
9
+
10
+ class SessionGotoResponse(BaseModel):
11
+ status: Optional[str] = None
@@ -0,0 +1,12 @@
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, TypedDict
6
+
7
+ __all__ = ["SessionPasteParams"]
8
+
9
+
10
+ class SessionPasteParams(TypedDict, total=False):
11
+ text: Required[str]
12
+ """Text to paste"""
@@ -0,0 +1,11 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from .._models import BaseModel
6
+
7
+ __all__ = ["SessionPasteResponse"]
8
+
9
+
10
+ class SessionPasteResponse(BaseModel):
11
+ status: Optional[str] = None
@@ -0,0 +1,51 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+
6
+ from .._models import BaseModel
7
+
8
+ __all__ = ["SessionRetrieveDownloadsResponse", "Data", "DataItem"]
9
+
10
+
11
+ class DataItem(BaseModel):
12
+ id: Optional[str] = None
13
+ """The unique ID of the download record."""
14
+
15
+ created_at: Optional[datetime] = None
16
+ """The timestamp when the file record was created."""
17
+
18
+ duration: Optional[int] = None
19
+ """The time it took to process or download the file, in milliseconds."""
20
+
21
+ file_link: Optional[str] = None
22
+ """The URL to download the file from anchorbrowser servers.
23
+
24
+ Requires api key authentication.
25
+ """
26
+
27
+ origin_url: Optional[str] = None
28
+ """The original URL where the file was found."""
29
+
30
+ original_download_url: Optional[str] = None
31
+ """The URL used to download the file."""
32
+
33
+ original_file_name: Optional[str] = None
34
+ """The original file name before any modification."""
35
+
36
+ size: Optional[int] = None
37
+ """The size of the file in bytes."""
38
+
39
+ suggested_file_name: Optional[str] = None
40
+ """The suggested file name for saving the file."""
41
+
42
+
43
+ class Data(BaseModel):
44
+ count: Optional[int] = None
45
+ """Total number of downloads"""
46
+
47
+ items: Optional[List[DataItem]] = None
48
+
49
+
50
+ class SessionRetrieveDownloadsResponse(BaseModel):
51
+ data: Optional[Data] = None
@@ -0,0 +1,26 @@
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__ = ["SessionScrollParams"]
10
+
11
+
12
+ class SessionScrollParams(TypedDict, total=False):
13
+ delta_y: Required[Annotated[int, PropertyInfo(alias="deltaY")]]
14
+ """Vertical scroll amount (positive is down, negative is up)"""
15
+
16
+ x: Required[int]
17
+ """X coordinate"""
18
+
19
+ y: Required[int]
20
+ """Y coordinate"""
21
+
22
+ delta_x: Annotated[int, PropertyInfo(alias="deltaX")]
23
+ """Horizontal scroll amount (positive is right, negative is left)"""
24
+
25
+ steps: int
26
+ """Number of steps to break the scroll into for smoother scrolling"""
@@ -0,0 +1,11 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from .._models import BaseModel
6
+
7
+ __all__ = ["SessionScrollResponse"]
8
+
9
+
10
+ class SessionScrollResponse(BaseModel):
11
+ status: Optional[str] = None
@@ -0,0 +1,25 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from .mouse_up_params import MouseUpParams as MouseUpParams
6
+ from .mouse_down_params import MouseDownParams as MouseDownParams
7
+ from .mouse_move_params import MouseMoveParams as MouseMoveParams
8
+ from .mouse_up_response import MouseUpResponse as MouseUpResponse
9
+ from .mouse_click_params import MouseClickParams as MouseClickParams
10
+ from .all_status_response import AllStatusResponse as AllStatusResponse
11
+ from .mouse_down_response import MouseDownResponse as MouseDownResponse
12
+ from .mouse_move_response import MouseMoveResponse as MouseMoveResponse
13
+ from .clipboard_set_params import ClipboardSetParams as ClipboardSetParams
14
+ from .keyboard_type_params import KeyboardTypeParams as KeyboardTypeParams
15
+ from .mouse_click_response import MouseClickResponse as MouseClickResponse
16
+ from .clipboard_get_response import ClipboardGetResponse as ClipboardGetResponse
17
+ from .clipboard_set_response import ClipboardSetResponse as ClipboardSetResponse
18
+ from .keyboard_type_response import KeyboardTypeResponse as KeyboardTypeResponse
19
+ from .recording_list_response import RecordingListResponse as RecordingListResponse
20
+ from .keyboard_shortcut_params import KeyboardShortcutParams as KeyboardShortcutParams
21
+ from .recording_pause_response import RecordingPauseResponse as RecordingPauseResponse
22
+ from .mouse_double_click_params import MouseDoubleClickParams as MouseDoubleClickParams
23
+ from .recording_resume_response import RecordingResumeResponse as RecordingResumeResponse
24
+ from .keyboard_shortcut_response import KeyboardShortcutResponse as KeyboardShortcutResponse
25
+ from .mouse_double_click_response import MouseDoubleClickResponse as MouseDoubleClickResponse
@@ -0,0 +1,30 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+
6
+ from ..._models import BaseModel
7
+
8
+ __all__ = ["AllStatusResponse", "Data", "DataItem"]
9
+
10
+
11
+ class DataItem(BaseModel):
12
+ created_at: datetime
13
+ """Timestamp when the browser session was created"""
14
+
15
+ session_id: str
16
+ """Unique identifier for the browser session"""
17
+
18
+ status: str
19
+ """Current status of the browser session"""
20
+
21
+
22
+ class Data(BaseModel):
23
+ count: Optional[int] = None
24
+ """Total number of browser sessions"""
25
+
26
+ items: Optional[List[DataItem]] = None
27
+
28
+
29
+ class AllStatusResponse(BaseModel):
30
+ data: Optional[Data] = None
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["ClipboardGetResponse", "Data"]
8
+
9
+
10
+ class Data(BaseModel):
11
+ text: Optional[str] = None
12
+ """Text content of the clipboard"""
13
+
14
+
15
+ class ClipboardGetResponse(BaseModel):
16
+ data: Optional[Data] = None
@@ -0,0 +1,12 @@
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, TypedDict
6
+
7
+ __all__ = ["ClipboardSetParams"]
8
+
9
+
10
+ class ClipboardSetParams(TypedDict, total=False):
11
+ text: Required[str]
12
+ """Text to set in the clipboard"""