cyberdesk 2.1.4__py3-none-any.whl → 2.1.5__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.

Potentially problematic release.


This version of cyberdesk might be problematic. Click here for more details.

cyberdesk/__init__.py CHANGED
@@ -27,7 +27,7 @@ from .client import (
27
27
  AttachmentType,
28
28
  )
29
29
 
30
- __version__ = "2.1.4"
30
+ __version__ = "2.1.5"
31
31
 
32
32
  __all__ = [
33
33
  "CyberdeskClient",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cyberdesk
3
- Version: 2.1.4
3
+ Version: 2.1.5
4
4
  Summary: The official Python SDK for Cyberdesk
5
5
  Author-email: Cyberdesk Team <dev@cyberdesk.io>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
- cyberdesk/__init__.py,sha256=P_WW_HA8MjPDBEKUJjUByCT4Rc32m6uQm__vuzCcJk4,1157
1
+ cyberdesk/__init__.py,sha256=leqfgzfctT7Ckb68csoF1eJg2TxfX5S_5YsC5L31Ncs,1157
2
2
  cyberdesk/client.py,sha256=uRclPvQCGqpToajKZxDoam_97H3edH1SDMeui2HiN6Y,62002
3
- cyberdesk-2.1.4.dist-info/licenses/LICENSE,sha256=06Op63FCwGhuUOz__M8IZW5sxd29WxyGC4X5-Uih7IQ,1071
3
+ cyberdesk-2.1.5.dist-info/licenses/LICENSE,sha256=06Op63FCwGhuUOz__M8IZW5sxd29WxyGC4X5-Uih7IQ,1071
4
4
  openapi_client/cyberdesk_cloud_client/__init__.py,sha256=r_uVkNUL-SOK8j7-KiGMIKdinES5X8K1Q250ySX2F-A,158
5
5
  openapi_client/cyberdesk_cloud_client/client.py,sha256=o_mdLqyBCQstu5tS1WZFwqIEbGwkvWQ7eQjuCJw_5VY,12419
6
6
  openapi_client/cyberdesk_cloud_client/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
@@ -18,6 +18,7 @@ openapi_client/cyberdesk_cloud_client/api/computer/keyboard_key_v1_computer_mach
18
18
  openapi_client/cyberdesk_cloud_client/api/computer/keyboard_type_v1_computer_machine_id_input_keyboard_type_post.py,sha256=tVBv4T6cg5UscdZtFuZpV4WJFF1Lqg7jDP97dbpoPnk,4664
19
19
  openapi_client/cyberdesk_cloud_client/api/computer/mouse_click_v1_computer_machine_id_input_mouse_click_post.py,sha256=_b8dCyAI0W3Fr0Ra5vo35yJuMb36cS0o41SSlLT1xf8,4984
20
20
  openapi_client/cyberdesk_cloud_client/api/computer/mouse_move_v1_computer_machine_id_input_mouse_move_post.py,sha256=CNfIj6oTs8QSRo4674pmHw9kJQIBw7D-u7mKT62tMDg,4704
21
+ openapi_client/cyberdesk_cloud_client/api/computer/mouse_scroll_v1_computer_machine_id_input_mouse_scroll_post.py,sha256=iHi8de7RU7gc1aLzLXlrlNW4HO13M8SigTyMqypA-9s,5024
21
22
  openapi_client/cyberdesk_cloud_client/api/computer/powershell_exec_v1_computer_machine_id_shell_powershell_exec_post.py,sha256=iZCvu92FFTVAZfIkw-PIWPllUe4NRuAdjB63IasSxKw,6567
22
23
  openapi_client/cyberdesk_cloud_client/api/computer/powershell_session_v1_computer_machine_id_shell_powershell_session_post.py,sha256=Bw-zP9ekElWvHbfts1bGfZX6mkEfrNwZ-A9rajAuzYM,6799
23
24
  openapi_client/cyberdesk_cloud_client/api/connections/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
@@ -86,7 +87,7 @@ openapi_client/cyberdesk_cloud_client/api/workflows/get_workflow_v1_workflows_wo
86
87
  openapi_client/cyberdesk_cloud_client/api/workflows/get_workflow_versions_v1_workflows_workflow_id_versions_get.py,sha256=ax_5V-lIClvOxr50eXSIAPbyhWP-cS4a4DXzwdxkVYs,5889
87
88
  openapi_client/cyberdesk_cloud_client/api/workflows/list_workflows_v1_workflows_get.py,sha256=Aszxh1BlUuRqMHjT7lvZf8g6kDCcNUZtuwoJqhDOwlQ,11258
88
89
  openapi_client/cyberdesk_cloud_client/api/workflows/update_workflow_v1_workflows_workflow_id_patch.py,sha256=K_tuO6s_FyM8MUOck5AuX_RNIeYqCQcfYx1aDg9xwhE,5737
89
- openapi_client/cyberdesk_cloud_client/models/__init__.py,sha256=jhkqOlsuTqRD9AdBq_sfofxjFboTY1a5pCIKHGIaTV4,9110
90
+ openapi_client/cyberdesk_cloud_client/models/__init__.py,sha256=ynh1cds29n3GUf_tLYi413Smjn41S8j45tX_LylAmSA,9604
90
91
  openapi_client/cyberdesk_cloud_client/models/attachment_type.py,sha256=zqPOsSd2AmxGNqb5HQ6ZYBAYL8k-0UbWHhfAJYNHoro,161
91
92
  openapi_client/cyberdesk_cloud_client/models/connection_create.py,sha256=gCI36DmjJDZxzGFPbykyYw9k4QEf_4dVNz9b-xZfLo4,3288
92
93
  openapi_client/cyberdesk_cloud_client/models/connection_response.py,sha256=aFxqJX75wSEw5dZ-kvh3Wgv_haJ6xYJ7o72vSAbEtHY,5247
@@ -114,6 +115,7 @@ openapi_client/cyberdesk_cloud_client/models/machine_update.py,sha256=906MebM_AU
114
115
  openapi_client/cyberdesk_cloud_client/models/mouse_click_request.py,sha256=GSBn4fg2sNnL4KQQHKly2YIzyRqbfwVgrQXpaalOUxg,3423
115
116
  openapi_client/cyberdesk_cloud_client/models/mouse_move_request.py,sha256=D5sWQwnRvs_IvRocctMeE2czciI-KvuuYh73PLutkPo,1548
116
117
  openapi_client/cyberdesk_cloud_client/models/mouse_position.py,sha256=t8PW-7xKfyHb3LVnZQglSu4Hrlp7W_xmoqS-UYOqG2U,1530
118
+ openapi_client/cyberdesk_cloud_client/models/mouse_scroll_request.py,sha256=Q0QG8UweABu0BJXOBQVh8HCgMMyCSvHzoXf4Gkm6A5s,2980
117
119
  openapi_client/cyberdesk_cloud_client/models/paginated_response.py,sha256=P9bt0Koea8rODsULodX8dDAwm-uP2KRE1mRi8AK-VBY,1988
118
120
  openapi_client/cyberdesk_cloud_client/models/paginated_response_connection_response.py,sha256=2WxYXSS1RoBeh2ealxdQeEBSv0pBpllar1m98toeYHs,2527
119
121
  openapi_client/cyberdesk_cloud_client/models/paginated_response_machine_response.py,sha256=m_bJGQwSQkqPeJwcQ2UnXglhdmPqsj_tjjx_3S-YZyE,2491
@@ -137,16 +139,19 @@ openapi_client/cyberdesk_cloud_client/models/run_attachment_create.py,sha256=w58
137
139
  openapi_client/cyberdesk_cloud_client/models/run_attachment_download_url_response.py,sha256=CUeh3Zas29uwfpH5oMbQ_hhkpsZ_RH7ZA_RyfRsf8mY,1864
138
140
  openapi_client/cyberdesk_cloud_client/models/run_attachment_response.py,sha256=_K4POw4eH_5wYbu8lqH1sHc3oMXFBDPtcqWfkBx3z68,7371
139
141
  openapi_client/cyberdesk_cloud_client/models/run_attachment_update.py,sha256=rGXcB21waSTXG0-mt0XhNcwoJI1PhBpBDUkLfp8mM-0,2573
140
- openapi_client/cyberdesk_cloud_client/models/run_bulk_create.py,sha256=CyZJONbhXWLndS_Mh1tx53eGh9qSz4qoiaI53N-CvJs,7951
142
+ openapi_client/cyberdesk_cloud_client/models/run_bulk_create.py,sha256=klLBRZ4JRidjGqLGaOEjkuYtlhgP14Xw080YtSWBPwc,9941
141
143
  openapi_client/cyberdesk_cloud_client/models/run_bulk_create_input_values_type_0.py,sha256=JxGOOYKueFx5NtvnXgf9z_sXbMByQrsjjQ3AmU8qG30,1305
142
144
  openapi_client/cyberdesk_cloud_client/models/run_bulk_create_response.py,sha256=N9sMykvm6pC2fMMH_XVQI8wVc6-53qAHMb_qbNBo9-c,2886
145
+ openapi_client/cyberdesk_cloud_client/models/run_bulk_create_sensitive_input_values_type_0.py,sha256=gUuuevR9IZLJtqhnVvxvMDKf47JD4tdEEof9kESGWWY,1353
143
146
  openapi_client/cyberdesk_cloud_client/models/run_completed_event.py,sha256=JP4okhYCwpnbyORLVz-C9zUMcNt7FlVIjbpuG61bKFo,3415
144
- openapi_client/cyberdesk_cloud_client/models/run_create.py,sha256=C_l48nK5DhWNNdjZ7pGQkiquP57lmNj4KI1pklpwhco,7684
147
+ openapi_client/cyberdesk_cloud_client/models/run_create.py,sha256=QkaC2lPXmhYa44BJSVv21QJWYeXNZ5CnGjzvR8tsnVI,9644
145
148
  openapi_client/cyberdesk_cloud_client/models/run_create_input_values_type_0.py,sha256=APV4O0GduU3fhHoJHMMOBk-h92Hf21c1ZU-pIsJoZpg,1282
146
- openapi_client/cyberdesk_cloud_client/models/run_response.py,sha256=H9rKD3JYcOy8Lp_IB6eOYXw5Nx7K11wRNVi4xJZ_NuU,13779
149
+ openapi_client/cyberdesk_cloud_client/models/run_create_sensitive_input_values_type_0.py,sha256=gtmXorTEeOVv2fYJKkHCSFhKCRMvE-6-XjfNfNhiNMY,1330
150
+ openapi_client/cyberdesk_cloud_client/models/run_response.py,sha256=qB1bwsCkl2qB-SDpG3wT7uXA12n_61hxnEeXFvBPyH4,15671
147
151
  openapi_client/cyberdesk_cloud_client/models/run_response_input_values_type_0.py,sha256=NpMqT3qaMrLGA7mHBjvtS1fnMGc5zxwWLoFWunjjupA,1292
148
152
  openapi_client/cyberdesk_cloud_client/models/run_response_output_data_type_0.py,sha256=rO4YJAa26G_83CFtBTQ_ZKCURAxNS7PcvdKbfuvDcrA,1287
149
153
  openapi_client/cyberdesk_cloud_client/models/run_response_run_message_history_type_0_item.py,sha256=3x1N3yi3kyc1que3bizmHEuGBn5s7pEirEg4TgBV9FU,1348
154
+ openapi_client/cyberdesk_cloud_client/models/run_response_sensitive_input_aliases_type_0.py,sha256=zKdXtKDOG2iv_1vtqzSGGuAthXP6JR7fKmiabJSvQE0,1345
150
155
  openapi_client/cyberdesk_cloud_client/models/run_status.py,sha256=Qbsj-KKplPDamvoJvyOK_sZp7XKj6SPf8J9WnRwOhXk,240
151
156
  openapi_client/cyberdesk_cloud_client/models/run_update.py,sha256=EY8zP-Dd3WgGNdUVDy1QUM6UPAZH4rNMEOPYjVej-Mo,9974
152
157
  openapi_client/cyberdesk_cloud_client/models/run_update_input_values_type_0.py,sha256=Dg_CSahXf_M8x7go8K0BoUrHWnoKpc6l-IFPeT15DNk,1282
@@ -167,7 +172,7 @@ openapi_client/cyberdesk_cloud_client/models/workflow_create.py,sha256=d0bfNbNBF
167
172
  openapi_client/cyberdesk_cloud_client/models/workflow_response.py,sha256=k48mouJ6Dcisz2vyM7Rb_cbjU66JudGVPsq4UC7grHA,8977
168
173
  openapi_client/cyberdesk_cloud_client/models/workflow_response_old_versions_type_0_item.py,sha256=W9AxxlBlN3rUwLDcoUx5H7MUiYA9UztfX9iEpNGlgAs,1340
169
174
  openapi_client/cyberdesk_cloud_client/models/workflow_update.py,sha256=TG2jEitXixS2thtz7lTxTZaE0RBVSWd-apVxWxsvnrg,5333
170
- cyberdesk-2.1.4.dist-info/METADATA,sha256=01tWJEDv0N-kx0yVS_CCDo7mudddz34Tv9cfpoTMZF8,6791
171
- cyberdesk-2.1.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
172
- cyberdesk-2.1.4.dist-info/top_level.txt,sha256=qTYHZHVHh3VClNPQsiFFA8p8tmJgFGhq9G1COd-pX_A,25
173
- cyberdesk-2.1.4.dist-info/RECORD,,
175
+ cyberdesk-2.1.5.dist-info/METADATA,sha256=DJhn-JAHQ4g2WLdaA8rk30ydzh1yrpAkx4QKLTL1Uhc,6791
176
+ cyberdesk-2.1.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
177
+ cyberdesk-2.1.5.dist-info/top_level.txt,sha256=qTYHZHVHh3VClNPQsiFFA8p8tmJgFGhq9G1COd-pX_A,25
178
+ cyberdesk-2.1.5.dist-info/RECORD,,
@@ -0,0 +1,187 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union, cast
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.http_validation_error import HTTPValidationError
9
+ from ...models.mouse_scroll_request import MouseScrollRequest
10
+ from ...types import Response
11
+
12
+
13
+ def _get_kwargs(
14
+ machine_id: str,
15
+ *,
16
+ body: MouseScrollRequest,
17
+ ) -> dict[str, Any]:
18
+ headers: dict[str, Any] = {}
19
+
20
+ _kwargs: dict[str, Any] = {
21
+ "method": "post",
22
+ "url": f"/v1/computer/{machine_id}/input/mouse/scroll",
23
+ }
24
+
25
+ _kwargs["json"] = body.to_dict()
26
+
27
+ headers["Content-Type"] = "application/json"
28
+
29
+ _kwargs["headers"] = headers
30
+ return _kwargs
31
+
32
+
33
+ def _parse_response(
34
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
35
+ ) -> Optional[Union[Any, HTTPValidationError]]:
36
+ if response.status_code == 204:
37
+ response_204 = cast(Any, None)
38
+ return response_204
39
+ if response.status_code == 422:
40
+ response_422 = HTTPValidationError.from_dict(response.json())
41
+
42
+ return response_422
43
+ if client.raise_on_unexpected_status:
44
+ raise errors.UnexpectedStatus(response.status_code, response.content)
45
+ else:
46
+ return None
47
+
48
+
49
+ def _build_response(
50
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
51
+ ) -> Response[Union[Any, HTTPValidationError]]:
52
+ return Response(
53
+ status_code=HTTPStatus(response.status_code),
54
+ content=response.content,
55
+ headers=response.headers,
56
+ parsed=_parse_response(client=client, response=response),
57
+ )
58
+
59
+
60
+ def sync_detailed(
61
+ machine_id: str,
62
+ *,
63
+ client: AuthenticatedClient,
64
+ body: MouseScrollRequest,
65
+ ) -> Response[Union[Any, HTTPValidationError]]:
66
+ """Scroll mouse wheel
67
+
68
+ Scroll the mouse wheel in the specified direction by a number of steps.
69
+ Optionally moves to (x, y) before scrolling.
70
+
71
+ Args:
72
+ machine_id (str):
73
+ body (MouseScrollRequest):
74
+
75
+ Raises:
76
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
77
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
78
+
79
+ Returns:
80
+ Response[Union[Any, HTTPValidationError]]
81
+ """
82
+
83
+ kwargs = _get_kwargs(
84
+ machine_id=machine_id,
85
+ body=body,
86
+ )
87
+
88
+ response = client.get_httpx_client().request(
89
+ **kwargs,
90
+ )
91
+
92
+ return _build_response(client=client, response=response)
93
+
94
+
95
+ def sync(
96
+ machine_id: str,
97
+ *,
98
+ client: AuthenticatedClient,
99
+ body: MouseScrollRequest,
100
+ ) -> Optional[Union[Any, HTTPValidationError]]:
101
+ """Scroll mouse wheel
102
+
103
+ Scroll the mouse wheel in the specified direction by a number of steps.
104
+ Optionally moves to (x, y) before scrolling.
105
+
106
+ Args:
107
+ machine_id (str):
108
+ body (MouseScrollRequest):
109
+
110
+ Raises:
111
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
112
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
113
+
114
+ Returns:
115
+ Union[Any, HTTPValidationError]
116
+ """
117
+
118
+ return sync_detailed(
119
+ machine_id=machine_id,
120
+ client=client,
121
+ body=body,
122
+ ).parsed
123
+
124
+
125
+ async def asyncio_detailed(
126
+ machine_id: str,
127
+ *,
128
+ client: AuthenticatedClient,
129
+ body: MouseScrollRequest,
130
+ ) -> Response[Union[Any, HTTPValidationError]]:
131
+ """Scroll mouse wheel
132
+
133
+ Scroll the mouse wheel in the specified direction by a number of steps.
134
+ Optionally moves to (x, y) before scrolling.
135
+
136
+ Args:
137
+ machine_id (str):
138
+ body (MouseScrollRequest):
139
+
140
+ Raises:
141
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
142
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
143
+
144
+ Returns:
145
+ Response[Union[Any, HTTPValidationError]]
146
+ """
147
+
148
+ kwargs = _get_kwargs(
149
+ machine_id=machine_id,
150
+ body=body,
151
+ )
152
+
153
+ response = await client.get_async_httpx_client().request(**kwargs)
154
+
155
+ return _build_response(client=client, response=response)
156
+
157
+
158
+ async def asyncio(
159
+ machine_id: str,
160
+ *,
161
+ client: AuthenticatedClient,
162
+ body: MouseScrollRequest,
163
+ ) -> Optional[Union[Any, HTTPValidationError]]:
164
+ """Scroll mouse wheel
165
+
166
+ Scroll the mouse wheel in the specified direction by a number of steps.
167
+ Optionally moves to (x, y) before scrolling.
168
+
169
+ Args:
170
+ machine_id (str):
171
+ body (MouseScrollRequest):
172
+
173
+ Raises:
174
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
175
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
176
+
177
+ Returns:
178
+ Union[Any, HTTPValidationError]
179
+ """
180
+
181
+ return (
182
+ await asyncio_detailed(
183
+ machine_id=machine_id,
184
+ client=client,
185
+ body=body,
186
+ )
187
+ ).parsed
@@ -41,6 +41,7 @@ from .machine_update import MachineUpdate
41
41
  from .mouse_click_request import MouseClickRequest
42
42
  from .mouse_move_request import MouseMoveRequest
43
43
  from .mouse_position import MousePosition
44
+ from .mouse_scroll_request import MouseScrollRequest
44
45
  from .paginated_response import PaginatedResponse
45
46
  from .paginated_response_connection_response import PaginatedResponseConnectionResponse
46
47
  from .paginated_response_machine_response import PaginatedResponseMachineResponse
@@ -71,13 +72,16 @@ from .run_attachment_update import RunAttachmentUpdate
71
72
  from .run_bulk_create import RunBulkCreate
72
73
  from .run_bulk_create_input_values_type_0 import RunBulkCreateInputValuesType0
73
74
  from .run_bulk_create_response import RunBulkCreateResponse
75
+ from .run_bulk_create_sensitive_input_values_type_0 import RunBulkCreateSensitiveInputValuesType0
74
76
  from .run_completed_event import RunCompletedEvent
75
77
  from .run_create import RunCreate
76
78
  from .run_create_input_values_type_0 import RunCreateInputValuesType0
79
+ from .run_create_sensitive_input_values_type_0 import RunCreateSensitiveInputValuesType0
77
80
  from .run_response import RunResponse
78
81
  from .run_response_input_values_type_0 import RunResponseInputValuesType0
79
82
  from .run_response_output_data_type_0 import RunResponseOutputDataType0
80
83
  from .run_response_run_message_history_type_0_item import RunResponseRunMessageHistoryType0Item
84
+ from .run_response_sensitive_input_aliases_type_0 import RunResponseSensitiveInputAliasesType0
81
85
  from .run_status import RunStatus
82
86
  from .run_update import RunUpdate
83
87
  from .run_update_input_values_type_0 import RunUpdateInputValuesType0
@@ -127,6 +131,7 @@ __all__ = (
127
131
  "MouseClickRequest",
128
132
  "MouseMoveRequest",
129
133
  "MousePosition",
134
+ "MouseScrollRequest",
130
135
  "PaginatedResponse",
131
136
  "PaginatedResponseConnectionResponse",
132
137
  "PaginatedResponseMachineResponse",
@@ -153,13 +158,16 @@ __all__ = (
153
158
  "RunBulkCreate",
154
159
  "RunBulkCreateInputValuesType0",
155
160
  "RunBulkCreateResponse",
161
+ "RunBulkCreateSensitiveInputValuesType0",
156
162
  "RunCompletedEvent",
157
163
  "RunCreate",
158
164
  "RunCreateInputValuesType0",
165
+ "RunCreateSensitiveInputValuesType0",
159
166
  "RunResponse",
160
167
  "RunResponseInputValuesType0",
161
168
  "RunResponseOutputDataType0",
162
169
  "RunResponseRunMessageHistoryType0Item",
170
+ "RunResponseSensitiveInputAliasesType0",
163
171
  "RunStatus",
164
172
  "RunUpdate",
165
173
  "RunUpdateInputValuesType0",
@@ -0,0 +1,109 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ T = TypeVar("T", bound="MouseScrollRequest")
10
+
11
+
12
+ @_attrs_define
13
+ class MouseScrollRequest:
14
+ """
15
+ Attributes:
16
+ direction (str): Scroll direction: 'up', 'down', 'left', or 'right'
17
+ amount (int): Number of scroll steps (clicks); non-negative integer
18
+ x (Union[None, Unset, int]):
19
+ y (Union[None, Unset, int]):
20
+ """
21
+
22
+ direction: str
23
+ amount: int
24
+ x: Union[None, Unset, int] = UNSET
25
+ y: Union[None, Unset, int] = UNSET
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ direction = self.direction
30
+
31
+ amount = self.amount
32
+
33
+ x: Union[None, Unset, int]
34
+ if isinstance(self.x, Unset):
35
+ x = UNSET
36
+ else:
37
+ x = self.x
38
+
39
+ y: Union[None, Unset, int]
40
+ if isinstance(self.y, Unset):
41
+ y = UNSET
42
+ else:
43
+ y = self.y
44
+
45
+ field_dict: dict[str, Any] = {}
46
+ field_dict.update(self.additional_properties)
47
+ field_dict.update(
48
+ {
49
+ "direction": direction,
50
+ "amount": amount,
51
+ }
52
+ )
53
+ if x is not UNSET:
54
+ field_dict["x"] = x
55
+ if y is not UNSET:
56
+ field_dict["y"] = y
57
+
58
+ return field_dict
59
+
60
+ @classmethod
61
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
62
+ d = dict(src_dict)
63
+ direction = d.pop("direction")
64
+
65
+ amount = d.pop("amount")
66
+
67
+ def _parse_x(data: object) -> Union[None, Unset, int]:
68
+ if data is None:
69
+ return data
70
+ if isinstance(data, Unset):
71
+ return data
72
+ return cast(Union[None, Unset, int], data)
73
+
74
+ x = _parse_x(d.pop("x", UNSET))
75
+
76
+ def _parse_y(data: object) -> Union[None, Unset, int]:
77
+ if data is None:
78
+ return data
79
+ if isinstance(data, Unset):
80
+ return data
81
+ return cast(Union[None, Unset, int], data)
82
+
83
+ y = _parse_y(d.pop("y", UNSET))
84
+
85
+ mouse_scroll_request = cls(
86
+ direction=direction,
87
+ amount=amount,
88
+ x=x,
89
+ y=y,
90
+ )
91
+
92
+ mouse_scroll_request.additional_properties = d
93
+ return mouse_scroll_request
94
+
95
+ @property
96
+ def additional_keys(self) -> list[str]:
97
+ return list(self.additional_properties.keys())
98
+
99
+ def __getitem__(self, key: str) -> Any:
100
+ return self.additional_properties[key]
101
+
102
+ def __setitem__(self, key: str, value: Any) -> None:
103
+ self.additional_properties[key] = value
104
+
105
+ def __delitem__(self, key: str) -> None:
106
+ del self.additional_properties[key]
107
+
108
+ def __contains__(self, key: str) -> bool:
109
+ return key in self.additional_properties
@@ -10,6 +10,7 @@ from ..types import UNSET, Unset
10
10
  if TYPE_CHECKING:
11
11
  from ..models.file_input import FileInput
12
12
  from ..models.run_bulk_create_input_values_type_0 import RunBulkCreateInputValuesType0
13
+ from ..models.run_bulk_create_sensitive_input_values_type_0 import RunBulkCreateSensitiveInputValuesType0
13
14
 
14
15
 
15
16
  T = TypeVar("T", bound="RunBulkCreate")
@@ -28,6 +29,8 @@ class RunBulkCreate:
28
29
  these pools (intersection). Ignored when machine_id is provided.
29
30
  input_values (Union['RunBulkCreateInputValuesType0', None, Unset]): Input values for workflow variables
30
31
  file_inputs (Union[None, Unset, list['FileInput']]): Files to upload to the machine
32
+ sensitive_input_values (Union['RunBulkCreateSensitiveInputValuesType0', None, Unset]): Sensitive input values to
33
+ store in the secure vault per run. Not persisted in our database.
31
34
  """
32
35
 
33
36
  workflow_id: UUID
@@ -36,10 +39,12 @@ class RunBulkCreate:
36
39
  pool_ids: Union[None, Unset, list[UUID]] = UNSET
37
40
  input_values: Union["RunBulkCreateInputValuesType0", None, Unset] = UNSET
38
41
  file_inputs: Union[None, Unset, list["FileInput"]] = UNSET
42
+ sensitive_input_values: Union["RunBulkCreateSensitiveInputValuesType0", None, Unset] = UNSET
39
43
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
40
44
 
41
45
  def to_dict(self) -> dict[str, Any]:
42
46
  from ..models.run_bulk_create_input_values_type_0 import RunBulkCreateInputValuesType0
47
+ from ..models.run_bulk_create_sensitive_input_values_type_0 import RunBulkCreateSensitiveInputValuesType0
43
48
 
44
49
  workflow_id = str(self.workflow_id)
45
50
 
@@ -85,6 +90,14 @@ class RunBulkCreate:
85
90
  else:
86
91
  file_inputs = self.file_inputs
87
92
 
93
+ sensitive_input_values: Union[None, Unset, dict[str, Any]]
94
+ if isinstance(self.sensitive_input_values, Unset):
95
+ sensitive_input_values = UNSET
96
+ elif isinstance(self.sensitive_input_values, RunBulkCreateSensitiveInputValuesType0):
97
+ sensitive_input_values = self.sensitive_input_values.to_dict()
98
+ else:
99
+ sensitive_input_values = self.sensitive_input_values
100
+
88
101
  field_dict: dict[str, Any] = {}
89
102
  field_dict.update(self.additional_properties)
90
103
  field_dict.update(
@@ -101,6 +114,8 @@ class RunBulkCreate:
101
114
  field_dict["input_values"] = input_values
102
115
  if file_inputs is not UNSET:
103
116
  field_dict["file_inputs"] = file_inputs
117
+ if sensitive_input_values is not UNSET:
118
+ field_dict["sensitive_input_values"] = sensitive_input_values
104
119
 
105
120
  return field_dict
106
121
 
@@ -108,6 +123,7 @@ class RunBulkCreate:
108
123
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
109
124
  from ..models.file_input import FileInput
110
125
  from ..models.run_bulk_create_input_values_type_0 import RunBulkCreateInputValuesType0
126
+ from ..models.run_bulk_create_sensitive_input_values_type_0 import RunBulkCreateSensitiveInputValuesType0
111
127
 
112
128
  d = dict(src_dict)
113
129
  workflow_id = UUID(d.pop("workflow_id"))
@@ -192,6 +208,23 @@ class RunBulkCreate:
192
208
 
193
209
  file_inputs = _parse_file_inputs(d.pop("file_inputs", UNSET))
194
210
 
211
+ def _parse_sensitive_input_values(data: object) -> Union["RunBulkCreateSensitiveInputValuesType0", None, Unset]:
212
+ if data is None:
213
+ return data
214
+ if isinstance(data, Unset):
215
+ return data
216
+ try:
217
+ if not isinstance(data, dict):
218
+ raise TypeError()
219
+ sensitive_input_values_type_0 = RunBulkCreateSensitiveInputValuesType0.from_dict(data)
220
+
221
+ return sensitive_input_values_type_0
222
+ except: # noqa: E722
223
+ pass
224
+ return cast(Union["RunBulkCreateSensitiveInputValuesType0", None, Unset], data)
225
+
226
+ sensitive_input_values = _parse_sensitive_input_values(d.pop("sensitive_input_values", UNSET))
227
+
195
228
  run_bulk_create = cls(
196
229
  workflow_id=workflow_id,
197
230
  count=count,
@@ -199,6 +232,7 @@ class RunBulkCreate:
199
232
  pool_ids=pool_ids,
200
233
  input_values=input_values,
201
234
  file_inputs=file_inputs,
235
+ sensitive_input_values=sensitive_input_values,
202
236
  )
203
237
 
204
238
  run_bulk_create.additional_properties = d
@@ -0,0 +1,44 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ T = TypeVar("T", bound="RunBulkCreateSensitiveInputValuesType0")
8
+
9
+
10
+ @_attrs_define
11
+ class RunBulkCreateSensitiveInputValuesType0:
12
+ """ """
13
+
14
+ additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
15
+
16
+ def to_dict(self) -> dict[str, Any]:
17
+ field_dict: dict[str, Any] = {}
18
+ field_dict.update(self.additional_properties)
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
+ d = dict(src_dict)
25
+ run_bulk_create_sensitive_input_values_type_0 = cls()
26
+
27
+ run_bulk_create_sensitive_input_values_type_0.additional_properties = d
28
+ return run_bulk_create_sensitive_input_values_type_0
29
+
30
+ @property
31
+ def additional_keys(self) -> list[str]:
32
+ return list(self.additional_properties.keys())
33
+
34
+ def __getitem__(self, key: str) -> str:
35
+ return self.additional_properties[key]
36
+
37
+ def __setitem__(self, key: str, value: str) -> None:
38
+ self.additional_properties[key] = value
39
+
40
+ def __delitem__(self, key: str) -> None:
41
+ del self.additional_properties[key]
42
+
43
+ def __contains__(self, key: str) -> bool:
44
+ return key in self.additional_properties
@@ -10,6 +10,7 @@ from ..types import UNSET, Unset
10
10
  if TYPE_CHECKING:
11
11
  from ..models.file_input import FileInput
12
12
  from ..models.run_create_input_values_type_0 import RunCreateInputValuesType0
13
+ from ..models.run_create_sensitive_input_values_type_0 import RunCreateSensitiveInputValuesType0
13
14
 
14
15
 
15
16
  T = TypeVar("T", bound="RunCreate")
@@ -27,6 +28,8 @@ class RunCreate:
27
28
  these pools (intersection). Ignored when machine_id is provided.
28
29
  input_values (Union['RunCreateInputValuesType0', None, Unset]): Input values for workflow variables
29
30
  file_inputs (Union[None, Unset, list['FileInput']]): Files to upload to the machine
31
+ sensitive_input_values (Union['RunCreateSensitiveInputValuesType0', None, Unset]): Sensitive input values. These
32
+ are not stored and will be written to a secure vault and referenced by alias only.
30
33
  """
31
34
 
32
35
  workflow_id: UUID
@@ -34,10 +37,12 @@ class RunCreate:
34
37
  pool_ids: Union[None, Unset, list[UUID]] = UNSET
35
38
  input_values: Union["RunCreateInputValuesType0", None, Unset] = UNSET
36
39
  file_inputs: Union[None, Unset, list["FileInput"]] = UNSET
40
+ sensitive_input_values: Union["RunCreateSensitiveInputValuesType0", None, Unset] = UNSET
37
41
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
38
42
 
39
43
  def to_dict(self) -> dict[str, Any]:
40
44
  from ..models.run_create_input_values_type_0 import RunCreateInputValuesType0
45
+ from ..models.run_create_sensitive_input_values_type_0 import RunCreateSensitiveInputValuesType0
41
46
 
42
47
  workflow_id = str(self.workflow_id)
43
48
 
@@ -81,6 +86,14 @@ class RunCreate:
81
86
  else:
82
87
  file_inputs = self.file_inputs
83
88
 
89
+ sensitive_input_values: Union[None, Unset, dict[str, Any]]
90
+ if isinstance(self.sensitive_input_values, Unset):
91
+ sensitive_input_values = UNSET
92
+ elif isinstance(self.sensitive_input_values, RunCreateSensitiveInputValuesType0):
93
+ sensitive_input_values = self.sensitive_input_values.to_dict()
94
+ else:
95
+ sensitive_input_values = self.sensitive_input_values
96
+
84
97
  field_dict: dict[str, Any] = {}
85
98
  field_dict.update(self.additional_properties)
86
99
  field_dict.update(
@@ -96,6 +109,8 @@ class RunCreate:
96
109
  field_dict["input_values"] = input_values
97
110
  if file_inputs is not UNSET:
98
111
  field_dict["file_inputs"] = file_inputs
112
+ if sensitive_input_values is not UNSET:
113
+ field_dict["sensitive_input_values"] = sensitive_input_values
99
114
 
100
115
  return field_dict
101
116
 
@@ -103,6 +118,7 @@ class RunCreate:
103
118
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
104
119
  from ..models.file_input import FileInput
105
120
  from ..models.run_create_input_values_type_0 import RunCreateInputValuesType0
121
+ from ..models.run_create_sensitive_input_values_type_0 import RunCreateSensitiveInputValuesType0
106
122
 
107
123
  d = dict(src_dict)
108
124
  workflow_id = UUID(d.pop("workflow_id"))
@@ -185,12 +201,30 @@ class RunCreate:
185
201
 
186
202
  file_inputs = _parse_file_inputs(d.pop("file_inputs", UNSET))
187
203
 
204
+ def _parse_sensitive_input_values(data: object) -> Union["RunCreateSensitiveInputValuesType0", None, Unset]:
205
+ if data is None:
206
+ return data
207
+ if isinstance(data, Unset):
208
+ return data
209
+ try:
210
+ if not isinstance(data, dict):
211
+ raise TypeError()
212
+ sensitive_input_values_type_0 = RunCreateSensitiveInputValuesType0.from_dict(data)
213
+
214
+ return sensitive_input_values_type_0
215
+ except: # noqa: E722
216
+ pass
217
+ return cast(Union["RunCreateSensitiveInputValuesType0", None, Unset], data)
218
+
219
+ sensitive_input_values = _parse_sensitive_input_values(d.pop("sensitive_input_values", UNSET))
220
+
188
221
  run_create = cls(
189
222
  workflow_id=workflow_id,
190
223
  machine_id=machine_id,
191
224
  pool_ids=pool_ids,
192
225
  input_values=input_values,
193
226
  file_inputs=file_inputs,
227
+ sensitive_input_values=sensitive_input_values,
194
228
  )
195
229
 
196
230
  run_create.additional_properties = d
@@ -0,0 +1,44 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ T = TypeVar("T", bound="RunCreateSensitiveInputValuesType0")
8
+
9
+
10
+ @_attrs_define
11
+ class RunCreateSensitiveInputValuesType0:
12
+ """ """
13
+
14
+ additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
15
+
16
+ def to_dict(self) -> dict[str, Any]:
17
+ field_dict: dict[str, Any] = {}
18
+ field_dict.update(self.additional_properties)
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
+ d = dict(src_dict)
25
+ run_create_sensitive_input_values_type_0 = cls()
26
+
27
+ run_create_sensitive_input_values_type_0.additional_properties = d
28
+ return run_create_sensitive_input_values_type_0
29
+
30
+ @property
31
+ def additional_keys(self) -> list[str]:
32
+ return list(self.additional_properties.keys())
33
+
34
+ def __getitem__(self, key: str) -> str:
35
+ return self.additional_properties[key]
36
+
37
+ def __setitem__(self, key: str, value: str) -> None:
38
+ self.additional_properties[key] = value
39
+
40
+ def __delitem__(self, key: str) -> None:
41
+ del self.additional_properties[key]
42
+
43
+ def __contains__(self, key: str) -> bool:
44
+ return key in self.additional_properties
@@ -14,6 +14,7 @@ if TYPE_CHECKING:
14
14
  from ..models.run_response_input_values_type_0 import RunResponseInputValuesType0
15
15
  from ..models.run_response_output_data_type_0 import RunResponseOutputDataType0
16
16
  from ..models.run_response_run_message_history_type_0_item import RunResponseRunMessageHistoryType0Item
17
+ from ..models.run_response_sensitive_input_aliases_type_0 import RunResponseSensitiveInputAliasesType0
17
18
 
18
19
 
19
20
  T = TypeVar("T", bound="RunResponse")
@@ -38,6 +39,7 @@ class RunResponse:
38
39
  user_id (Union[None, UUID, Unset]):
39
40
  organization_id (Union[None, Unset, str]):
40
41
  pool_ids (Union[None, Unset, list[UUID]]):
42
+ sensitive_input_aliases (Union['RunResponseSensitiveInputAliasesType0', None, Unset]):
41
43
  """
42
44
 
43
45
  workflow_id: UUID
@@ -54,11 +56,13 @@ class RunResponse:
54
56
  user_id: Union[None, UUID, Unset] = UNSET
55
57
  organization_id: Union[None, Unset, str] = UNSET
56
58
  pool_ids: Union[None, Unset, list[UUID]] = UNSET
59
+ sensitive_input_aliases: Union["RunResponseSensitiveInputAliasesType0", None, Unset] = UNSET
57
60
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
58
61
 
59
62
  def to_dict(self) -> dict[str, Any]:
60
63
  from ..models.run_response_input_values_type_0 import RunResponseInputValuesType0
61
64
  from ..models.run_response_output_data_type_0 import RunResponseOutputDataType0
65
+ from ..models.run_response_sensitive_input_aliases_type_0 import RunResponseSensitiveInputAliasesType0
62
66
 
63
67
  workflow_id = str(self.workflow_id)
64
68
 
@@ -143,6 +147,14 @@ class RunResponse:
143
147
  else:
144
148
  pool_ids = self.pool_ids
145
149
 
150
+ sensitive_input_aliases: Union[None, Unset, dict[str, Any]]
151
+ if isinstance(self.sensitive_input_aliases, Unset):
152
+ sensitive_input_aliases = UNSET
153
+ elif isinstance(self.sensitive_input_aliases, RunResponseSensitiveInputAliasesType0):
154
+ sensitive_input_aliases = self.sensitive_input_aliases.to_dict()
155
+ else:
156
+ sensitive_input_aliases = self.sensitive_input_aliases
157
+
146
158
  field_dict: dict[str, Any] = {}
147
159
  field_dict.update(self.additional_properties)
148
160
  field_dict.update(
@@ -166,6 +178,8 @@ class RunResponse:
166
178
  field_dict["organization_id"] = organization_id
167
179
  if pool_ids is not UNSET:
168
180
  field_dict["pool_ids"] = pool_ids
181
+ if sensitive_input_aliases is not UNSET:
182
+ field_dict["sensitive_input_aliases"] = sensitive_input_aliases
169
183
 
170
184
  return field_dict
171
185
 
@@ -174,6 +188,7 @@ class RunResponse:
174
188
  from ..models.run_response_input_values_type_0 import RunResponseInputValuesType0
175
189
  from ..models.run_response_output_data_type_0 import RunResponseOutputDataType0
176
190
  from ..models.run_response_run_message_history_type_0_item import RunResponseRunMessageHistoryType0Item
191
+ from ..models.run_response_sensitive_input_aliases_type_0 import RunResponseSensitiveInputAliasesType0
177
192
 
178
193
  d = dict(src_dict)
179
194
  workflow_id = UUID(d.pop("workflow_id"))
@@ -344,6 +359,23 @@ class RunResponse:
344
359
 
345
360
  pool_ids = _parse_pool_ids(d.pop("pool_ids", UNSET))
346
361
 
362
+ def _parse_sensitive_input_aliases(data: object) -> Union["RunResponseSensitiveInputAliasesType0", None, Unset]:
363
+ if data is None:
364
+ return data
365
+ if isinstance(data, Unset):
366
+ return data
367
+ try:
368
+ if not isinstance(data, dict):
369
+ raise TypeError()
370
+ sensitive_input_aliases_type_0 = RunResponseSensitiveInputAliasesType0.from_dict(data)
371
+
372
+ return sensitive_input_aliases_type_0
373
+ except: # noqa: E722
374
+ pass
375
+ return cast(Union["RunResponseSensitiveInputAliasesType0", None, Unset], data)
376
+
377
+ sensitive_input_aliases = _parse_sensitive_input_aliases(d.pop("sensitive_input_aliases", UNSET))
378
+
347
379
  run_response = cls(
348
380
  workflow_id=workflow_id,
349
381
  machine_id=machine_id,
@@ -359,6 +391,7 @@ class RunResponse:
359
391
  user_id=user_id,
360
392
  organization_id=organization_id,
361
393
  pool_ids=pool_ids,
394
+ sensitive_input_aliases=sensitive_input_aliases,
362
395
  )
363
396
 
364
397
  run_response.additional_properties = d
@@ -0,0 +1,44 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ T = TypeVar("T", bound="RunResponseSensitiveInputAliasesType0")
8
+
9
+
10
+ @_attrs_define
11
+ class RunResponseSensitiveInputAliasesType0:
12
+ """ """
13
+
14
+ additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
15
+
16
+ def to_dict(self) -> dict[str, Any]:
17
+ field_dict: dict[str, Any] = {}
18
+ field_dict.update(self.additional_properties)
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
+ d = dict(src_dict)
25
+ run_response_sensitive_input_aliases_type_0 = cls()
26
+
27
+ run_response_sensitive_input_aliases_type_0.additional_properties = d
28
+ return run_response_sensitive_input_aliases_type_0
29
+
30
+ @property
31
+ def additional_keys(self) -> list[str]:
32
+ return list(self.additional_properties.keys())
33
+
34
+ def __getitem__(self, key: str) -> str:
35
+ return self.additional_properties[key]
36
+
37
+ def __setitem__(self, key: str, value: str) -> None:
38
+ self.additional_properties[key] = value
39
+
40
+ def __delitem__(self, key: str) -> None:
41
+ del self.additional_properties[key]
42
+
43
+ def __contains__(self, key: str) -> bool:
44
+ return key in self.additional_properties