cyberdesk 2.1.3__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.3"
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.3
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=Y49H4FbqwBh6lAdy-gbEsQD5WL9wVVmdv4wK1NkaBn8,1157
1
+ cyberdesk/__init__.py,sha256=leqfgzfctT7Ckb68csoF1eJg2TxfX5S_5YsC5L31Ncs,1157
2
2
  cyberdesk/client.py,sha256=uRclPvQCGqpToajKZxDoam_97H3edH1SDMeui2HiN6Y,62002
3
- cyberdesk-2.1.3.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=83LvmGuj56PGtkjcStmw4xDXmBzvj4IId3iwLjxlV3I,9034
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,15 +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
143
- openapi_client/cyberdesk_cloud_client/models/run_create.py,sha256=C_l48nK5DhWNNdjZ7pGQkiquP57lmNj4KI1pklpwhco,7684
145
+ openapi_client/cyberdesk_cloud_client/models/run_bulk_create_sensitive_input_values_type_0.py,sha256=gUuuevR9IZLJtqhnVvxvMDKf47JD4tdEEof9kESGWWY,1353
146
+ openapi_client/cyberdesk_cloud_client/models/run_completed_event.py,sha256=JP4okhYCwpnbyORLVz-C9zUMcNt7FlVIjbpuG61bKFo,3415
147
+ openapi_client/cyberdesk_cloud_client/models/run_create.py,sha256=QkaC2lPXmhYa44BJSVv21QJWYeXNZ5CnGjzvR8tsnVI,9644
144
148
  openapi_client/cyberdesk_cloud_client/models/run_create_input_values_type_0.py,sha256=APV4O0GduU3fhHoJHMMOBk-h92Hf21c1ZU-pIsJoZpg,1282
145
- 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
146
151
  openapi_client/cyberdesk_cloud_client/models/run_response_input_values_type_0.py,sha256=NpMqT3qaMrLGA7mHBjvtS1fnMGc5zxwWLoFWunjjupA,1292
147
152
  openapi_client/cyberdesk_cloud_client/models/run_response_output_data_type_0.py,sha256=rO4YJAa26G_83CFtBTQ_ZKCURAxNS7PcvdKbfuvDcrA,1287
148
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
149
155
  openapi_client/cyberdesk_cloud_client/models/run_status.py,sha256=Qbsj-KKplPDamvoJvyOK_sZp7XKj6SPf8J9WnRwOhXk,240
150
156
  openapi_client/cyberdesk_cloud_client/models/run_update.py,sha256=EY8zP-Dd3WgGNdUVDy1QUM6UPAZH4rNMEOPYjVej-Mo,9974
151
157
  openapi_client/cyberdesk_cloud_client/models/run_update_input_values_type_0.py,sha256=Dg_CSahXf_M8x7go8K0BoUrHWnoKpc6l-IFPeT15DNk,1282
@@ -162,11 +168,11 @@ openapi_client/cyberdesk_cloud_client/models/trajectory_response_trajectory_data
162
168
  openapi_client/cyberdesk_cloud_client/models/trajectory_update.py,sha256=EF-O37EgyVd9qmdMZk7frNFsSdiiWC7_ZWEoDGMxWnY,4916
163
169
  openapi_client/cyberdesk_cloud_client/models/trajectory_update_trajectory_data_type_0_item.py,sha256=3Zt8-nV3ZHjXzL1y5xKQdrHb-7ILG4EjHvtA4xabde4,1355
164
170
  openapi_client/cyberdesk_cloud_client/models/validation_error.py,sha256=ZlK9hbhWr4zSC-dxZh9giERvMiYf9s2k8e1O9Rch_NI,2181
165
- openapi_client/cyberdesk_cloud_client/models/workflow_create.py,sha256=Z7XG8k1js_cXclCJKEBV_xk25mgr3BDuYgPLuQcXWEk,3490
166
- openapi_client/cyberdesk_cloud_client/models/workflow_response.py,sha256=Z4ABOHurTjNfQh1odBbEZ5YW3agm63QklKdE-gzu6dQ,8539
171
+ openapi_client/cyberdesk_cloud_client/models/workflow_create.py,sha256=d0bfNbNBF3RADrNcTiMeGm61NuV0c-6tB-S06ZxFdY4,3928
172
+ openapi_client/cyberdesk_cloud_client/models/workflow_response.py,sha256=k48mouJ6Dcisz2vyM7Rb_cbjU66JudGVPsq4UC7grHA,8977
167
173
  openapi_client/cyberdesk_cloud_client/models/workflow_response_old_versions_type_0_item.py,sha256=W9AxxlBlN3rUwLDcoUx5H7MUiYA9UztfX9iEpNGlgAs,1340
168
- openapi_client/cyberdesk_cloud_client/models/workflow_update.py,sha256=_zMo2mJbYdKILygBXwebAD37SJJCUZOTkJkMOCzeNTA,4439
169
- cyberdesk-2.1.3.dist-info/METADATA,sha256=J3_A7MT_NCCPn7MBrNZtS5irx-YnLJC1LQmRE2cNJNk,6791
170
- cyberdesk-2.1.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
171
- cyberdesk-2.1.3.dist-info/top_level.txt,sha256=qTYHZHVHh3VClNPQsiFFA8p8tmJgFGhq9G1COd-pX_A,25
172
- cyberdesk-2.1.3.dist-info/RECORD,,
174
+ openapi_client/cyberdesk_cloud_client/models/workflow_update.py,sha256=TG2jEitXixS2thtz7lTxTZaE0RBVSWd-apVxWxsvnrg,5333
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,12 +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
76
+ from .run_completed_event import RunCompletedEvent
74
77
  from .run_create import RunCreate
75
78
  from .run_create_input_values_type_0 import RunCreateInputValuesType0
79
+ from .run_create_sensitive_input_values_type_0 import RunCreateSensitiveInputValuesType0
76
80
  from .run_response import RunResponse
77
81
  from .run_response_input_values_type_0 import RunResponseInputValuesType0
78
82
  from .run_response_output_data_type_0 import RunResponseOutputDataType0
79
83
  from .run_response_run_message_history_type_0_item import RunResponseRunMessageHistoryType0Item
84
+ from .run_response_sensitive_input_aliases_type_0 import RunResponseSensitiveInputAliasesType0
80
85
  from .run_status import RunStatus
81
86
  from .run_update import RunUpdate
82
87
  from .run_update_input_values_type_0 import RunUpdateInputValuesType0
@@ -126,6 +131,7 @@ __all__ = (
126
131
  "MouseClickRequest",
127
132
  "MouseMoveRequest",
128
133
  "MousePosition",
134
+ "MouseScrollRequest",
129
135
  "PaginatedResponse",
130
136
  "PaginatedResponseConnectionResponse",
131
137
  "PaginatedResponseMachineResponse",
@@ -152,12 +158,16 @@ __all__ = (
152
158
  "RunBulkCreate",
153
159
  "RunBulkCreateInputValuesType0",
154
160
  "RunBulkCreateResponse",
161
+ "RunBulkCreateSensitiveInputValuesType0",
162
+ "RunCompletedEvent",
155
163
  "RunCreate",
156
164
  "RunCreateInputValuesType0",
165
+ "RunCreateSensitiveInputValuesType0",
157
166
  "RunResponse",
158
167
  "RunResponseInputValuesType0",
159
168
  "RunResponseOutputDataType0",
160
169
  "RunResponseRunMessageHistoryType0Item",
170
+ "RunResponseSensitiveInputAliasesType0",
161
171
  "RunStatus",
162
172
  "RunUpdate",
163
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
@@ -0,0 +1,112 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from typing import TYPE_CHECKING, Any, TypeVar, Union
4
+ from uuid import UUID
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from dateutil.parser import isoparse
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ if TYPE_CHECKING:
13
+ from ..models.run_response import RunResponse
14
+
15
+
16
+ T = TypeVar("T", bound="RunCompletedEvent")
17
+
18
+
19
+ @_attrs_define
20
+ class RunCompletedEvent:
21
+ """Payload sent for the run_complete webhook event.
22
+
23
+ Attributes:
24
+ run (RunResponse): Run response schema
25
+ event_id (Union[Unset, UUID]): Unique event identifier for idempotency
26
+ event_type (Union[Unset, str]): Event type key Default: 'run_complete'.
27
+ occurred_at (Union[Unset, datetime.datetime]): Time the event occurred (UTC)
28
+ """
29
+
30
+ run: "RunResponse"
31
+ event_id: Union[Unset, UUID] = UNSET
32
+ event_type: Union[Unset, str] = "run_complete"
33
+ occurred_at: Union[Unset, datetime.datetime] = UNSET
34
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
35
+
36
+ def to_dict(self) -> dict[str, Any]:
37
+ run = self.run.to_dict()
38
+
39
+ event_id: Union[Unset, str] = UNSET
40
+ if not isinstance(self.event_id, Unset):
41
+ event_id = str(self.event_id)
42
+
43
+ event_type = self.event_type
44
+
45
+ occurred_at: Union[Unset, str] = UNSET
46
+ if not isinstance(self.occurred_at, Unset):
47
+ occurred_at = self.occurred_at.isoformat()
48
+
49
+ field_dict: dict[str, Any] = {}
50
+ field_dict.update(self.additional_properties)
51
+ field_dict.update(
52
+ {
53
+ "run": run,
54
+ }
55
+ )
56
+ if event_id is not UNSET:
57
+ field_dict["event_id"] = event_id
58
+ if event_type is not UNSET:
59
+ field_dict["event_type"] = event_type
60
+ if occurred_at is not UNSET:
61
+ field_dict["occurred_at"] = occurred_at
62
+
63
+ return field_dict
64
+
65
+ @classmethod
66
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
67
+ from ..models.run_response import RunResponse
68
+
69
+ d = dict(src_dict)
70
+ run = RunResponse.from_dict(d.pop("run"))
71
+
72
+ _event_id = d.pop("event_id", UNSET)
73
+ event_id: Union[Unset, UUID]
74
+ if isinstance(_event_id, Unset):
75
+ event_id = UNSET
76
+ else:
77
+ event_id = UUID(_event_id)
78
+
79
+ event_type = d.pop("event_type", UNSET)
80
+
81
+ _occurred_at = d.pop("occurred_at", UNSET)
82
+ occurred_at: Union[Unset, datetime.datetime]
83
+ if isinstance(_occurred_at, Unset):
84
+ occurred_at = UNSET
85
+ else:
86
+ occurred_at = isoparse(_occurred_at)
87
+
88
+ run_completed_event = cls(
89
+ run=run,
90
+ event_id=event_id,
91
+ event_type=event_type,
92
+ occurred_at=occurred_at,
93
+ )
94
+
95
+ run_completed_event.additional_properties = d
96
+ return run_completed_event
97
+
98
+ @property
99
+ def additional_keys(self) -> list[str]:
100
+ return list(self.additional_properties.keys())
101
+
102
+ def __getitem__(self, key: str) -> Any:
103
+ return self.additional_properties[key]
104
+
105
+ def __setitem__(self, key: str, value: Any) -> None:
106
+ self.additional_properties[key] = value
107
+
108
+ def __delitem__(self, key: str) -> None:
109
+ del self.additional_properties[key]
110
+
111
+ def __contains__(self, key: str) -> bool:
112
+ 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
@@ -18,12 +18,14 @@ class WorkflowCreate:
18
18
  name (Union[None, Unset, str]):
19
19
  output_schema (Union[None, Unset, str]): JSON schema for output data transformation
20
20
  includes_file_exports (Union[Unset, bool]): Enable AI-based file export detection Default: False.
21
+ is_webhooks_enabled (Union[Unset, bool]): Send webhook on run completion Default: False.
21
22
  """
22
23
 
23
24
  main_prompt: str
24
25
  name: Union[None, Unset, str] = UNSET
25
26
  output_schema: Union[None, Unset, str] = UNSET
26
27
  includes_file_exports: Union[Unset, bool] = False
28
+ is_webhooks_enabled: Union[Unset, bool] = False
27
29
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
30
 
29
31
  def to_dict(self) -> dict[str, Any]:
@@ -43,6 +45,8 @@ class WorkflowCreate:
43
45
 
44
46
  includes_file_exports = self.includes_file_exports
45
47
 
48
+ is_webhooks_enabled = self.is_webhooks_enabled
49
+
46
50
  field_dict: dict[str, Any] = {}
47
51
  field_dict.update(self.additional_properties)
48
52
  field_dict.update(
@@ -56,6 +60,8 @@ class WorkflowCreate:
56
60
  field_dict["output_schema"] = output_schema
57
61
  if includes_file_exports is not UNSET:
58
62
  field_dict["includes_file_exports"] = includes_file_exports
63
+ if is_webhooks_enabled is not UNSET:
64
+ field_dict["is_webhooks_enabled"] = is_webhooks_enabled
59
65
 
60
66
  return field_dict
61
67
 
@@ -84,11 +90,14 @@ class WorkflowCreate:
84
90
 
85
91
  includes_file_exports = d.pop("includes_file_exports", UNSET)
86
92
 
93
+ is_webhooks_enabled = d.pop("is_webhooks_enabled", UNSET)
94
+
87
95
  workflow_create = cls(
88
96
  main_prompt=main_prompt,
89
97
  name=name,
90
98
  output_schema=output_schema,
91
99
  includes_file_exports=includes_file_exports,
100
+ is_webhooks_enabled=is_webhooks_enabled,
92
101
  )
93
102
 
94
103
  workflow_create.additional_properties = d
@@ -28,6 +28,7 @@ class WorkflowResponse:
28
28
  name (Union[None, Unset, str]):
29
29
  output_schema (Union[None, Unset, str]): JSON schema for output data transformation
30
30
  includes_file_exports (Union[Unset, bool]): Enable AI-based file export detection Default: False.
31
+ is_webhooks_enabled (Union[Unset, bool]): Send webhook on run completion Default: False.
31
32
  user_id (Union[None, UUID, Unset]):
32
33
  organization_id (Union[None, Unset, str]):
33
34
  includes_input_variables (Union[Unset, bool]): Default: False.
@@ -41,6 +42,7 @@ class WorkflowResponse:
41
42
  name: Union[None, Unset, str] = UNSET
42
43
  output_schema: Union[None, Unset, str] = UNSET
43
44
  includes_file_exports: Union[Unset, bool] = False
45
+ is_webhooks_enabled: Union[Unset, bool] = False
44
46
  user_id: Union[None, UUID, Unset] = UNSET
45
47
  organization_id: Union[None, Unset, str] = UNSET
46
48
  includes_input_variables: Union[Unset, bool] = False
@@ -70,6 +72,8 @@ class WorkflowResponse:
70
72
 
71
73
  includes_file_exports = self.includes_file_exports
72
74
 
75
+ is_webhooks_enabled = self.is_webhooks_enabled
76
+
73
77
  user_id: Union[None, Unset, str]
74
78
  if isinstance(self.user_id, Unset):
75
79
  user_id = UNSET
@@ -114,6 +118,8 @@ class WorkflowResponse:
114
118
  field_dict["output_schema"] = output_schema
115
119
  if includes_file_exports is not UNSET:
116
120
  field_dict["includes_file_exports"] = includes_file_exports
121
+ if is_webhooks_enabled is not UNSET:
122
+ field_dict["is_webhooks_enabled"] = is_webhooks_enabled
117
123
  if user_id is not UNSET:
118
124
  field_dict["user_id"] = user_id
119
125
  if organization_id is not UNSET:
@@ -158,6 +164,8 @@ class WorkflowResponse:
158
164
 
159
165
  includes_file_exports = d.pop("includes_file_exports", UNSET)
160
166
 
167
+ is_webhooks_enabled = d.pop("is_webhooks_enabled", UNSET)
168
+
161
169
  def _parse_user_id(data: object) -> Union[None, UUID, Unset]:
162
170
  if data is None:
163
171
  return data
@@ -218,6 +226,7 @@ class WorkflowResponse:
218
226
  name=name,
219
227
  output_schema=output_schema,
220
228
  includes_file_exports=includes_file_exports,
229
+ is_webhooks_enabled=is_webhooks_enabled,
221
230
  user_id=user_id,
222
231
  organization_id=organization_id,
223
232
  includes_input_variables=includes_input_variables,
@@ -18,12 +18,14 @@ class WorkflowUpdate:
18
18
  main_prompt (Union[None, Unset, str]):
19
19
  output_schema (Union[None, Unset, str]): JSON schema for output data transformation
20
20
  includes_file_exports (Union[None, Unset, bool]): Enable AI-based file export detection
21
+ is_webhooks_enabled (Union[None, Unset, bool]): Send webhook on run completion
21
22
  """
22
23
 
23
24
  name: Union[None, Unset, str] = UNSET
24
25
  main_prompt: Union[None, Unset, str] = UNSET
25
26
  output_schema: Union[None, Unset, str] = UNSET
26
27
  includes_file_exports: Union[None, Unset, bool] = UNSET
28
+ is_webhooks_enabled: Union[None, Unset, bool] = UNSET
27
29
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
30
 
29
31
  def to_dict(self) -> dict[str, Any]:
@@ -51,6 +53,12 @@ class WorkflowUpdate:
51
53
  else:
52
54
  includes_file_exports = self.includes_file_exports
53
55
 
56
+ is_webhooks_enabled: Union[None, Unset, bool]
57
+ if isinstance(self.is_webhooks_enabled, Unset):
58
+ is_webhooks_enabled = UNSET
59
+ else:
60
+ is_webhooks_enabled = self.is_webhooks_enabled
61
+
54
62
  field_dict: dict[str, Any] = {}
55
63
  field_dict.update(self.additional_properties)
56
64
  field_dict.update({})
@@ -62,6 +70,8 @@ class WorkflowUpdate:
62
70
  field_dict["output_schema"] = output_schema
63
71
  if includes_file_exports is not UNSET:
64
72
  field_dict["includes_file_exports"] = includes_file_exports
73
+ if is_webhooks_enabled is not UNSET:
74
+ field_dict["is_webhooks_enabled"] = is_webhooks_enabled
65
75
 
66
76
  return field_dict
67
77
 
@@ -105,11 +115,21 @@ class WorkflowUpdate:
105
115
 
106
116
  includes_file_exports = _parse_includes_file_exports(d.pop("includes_file_exports", UNSET))
107
117
 
118
+ def _parse_is_webhooks_enabled(data: object) -> Union[None, Unset, bool]:
119
+ if data is None:
120
+ return data
121
+ if isinstance(data, Unset):
122
+ return data
123
+ return cast(Union[None, Unset, bool], data)
124
+
125
+ is_webhooks_enabled = _parse_is_webhooks_enabled(d.pop("is_webhooks_enabled", UNSET))
126
+
108
127
  workflow_update = cls(
109
128
  name=name,
110
129
  main_prompt=main_prompt,
111
130
  output_schema=output_schema,
112
131
  includes_file_exports=includes_file_exports,
132
+ is_webhooks_enabled=is_webhooks_enabled,
113
133
  )
114
134
 
115
135
  workflow_update.additional_properties = d