@mobilerun/sdk 5.5.0 → 5.6.0

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 (349) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/client.d.mts +8 -8
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +8 -8
  5. package/client.d.ts.map +1 -1
  6. package/client.js +1 -0
  7. package/client.js.map +1 -1
  8. package/client.mjs +2 -1
  9. package/client.mjs.map +1 -1
  10. package/package.json +1 -1
  11. package/resources/apps.d.mts +18 -15
  12. package/resources/apps.d.mts.map +1 -1
  13. package/resources/apps.d.ts +18 -15
  14. package/resources/apps.d.ts.map +1 -1
  15. package/resources/apps.js +5 -2
  16. package/resources/apps.js.map +1 -1
  17. package/resources/apps.mjs +5 -2
  18. package/resources/apps.mjs.map +1 -1
  19. package/resources/assistant/conversations.d.mts +7 -17
  20. package/resources/assistant/conversations.d.mts.map +1 -1
  21. package/resources/assistant/conversations.d.ts +7 -17
  22. package/resources/assistant/conversations.d.ts.map +1 -1
  23. package/resources/assistant/conversations.js +4 -11
  24. package/resources/assistant/conversations.js.map +1 -1
  25. package/resources/assistant/conversations.mjs +4 -11
  26. package/resources/assistant/conversations.mjs.map +1 -1
  27. package/resources/connect/connect.d.mts +2 -2
  28. package/resources/connect/connect.d.mts.map +1 -1
  29. package/resources/connect/connect.d.ts +2 -2
  30. package/resources/connect/connect.d.ts.map +1 -1
  31. package/resources/connect/connect.js.map +1 -1
  32. package/resources/connect/connect.mjs.map +1 -1
  33. package/resources/connect/index.d.mts +1 -1
  34. package/resources/connect/index.d.mts.map +1 -1
  35. package/resources/connect/index.d.ts +1 -1
  36. package/resources/connect/index.d.ts.map +1 -1
  37. package/resources/connect/index.js.map +1 -1
  38. package/resources/connect/index.mjs.map +1 -1
  39. package/resources/connect/proxies.d.mts +94 -11
  40. package/resources/connect/proxies.d.mts.map +1 -1
  41. package/resources/connect/proxies.d.ts +94 -11
  42. package/resources/connect/proxies.d.ts.map +1 -1
  43. package/resources/connect/proxies.js +21 -10
  44. package/resources/connect/proxies.js.map +1 -1
  45. package/resources/connect/proxies.mjs +21 -10
  46. package/resources/connect/proxies.mjs.map +1 -1
  47. package/resources/devices/browser.d.mts +9 -3
  48. package/resources/devices/browser.d.mts.map +1 -1
  49. package/resources/devices/browser.d.ts +9 -3
  50. package/resources/devices/browser.d.ts.map +1 -1
  51. package/resources/devices/browser.js +9 -3
  52. package/resources/devices/browser.js.map +1 -1
  53. package/resources/devices/browser.mjs +9 -3
  54. package/resources/devices/browser.mjs.map +1 -1
  55. package/resources/devices/devices.d.mts +52 -23
  56. package/resources/devices/devices.d.mts.map +1 -1
  57. package/resources/devices/devices.d.ts +52 -23
  58. package/resources/devices/devices.d.ts.map +1 -1
  59. package/resources/devices/devices.js +17 -7
  60. package/resources/devices/devices.js.map +1 -1
  61. package/resources/devices/devices.mjs +17 -7
  62. package/resources/devices/devices.mjs.map +1 -1
  63. package/resources/devices/index.d.mts +1 -1
  64. package/resources/devices/index.d.mts.map +1 -1
  65. package/resources/devices/index.d.ts +1 -1
  66. package/resources/devices/index.d.ts.map +1 -1
  67. package/resources/devices/index.js.map +1 -1
  68. package/resources/devices/index.mjs.map +1 -1
  69. package/resources/devices/recordings.d.mts +4 -2
  70. package/resources/devices/recordings.d.mts.map +1 -1
  71. package/resources/devices/recordings.d.ts +4 -2
  72. package/resources/devices/recordings.d.ts.map +1 -1
  73. package/resources/devices/traffic-sessions.d.mts +1 -11
  74. package/resources/devices/traffic-sessions.d.mts.map +1 -1
  75. package/resources/devices/traffic-sessions.d.ts +1 -11
  76. package/resources/devices/traffic-sessions.d.ts.map +1 -1
  77. package/resources/devices/traffic-sessions.js +2 -8
  78. package/resources/devices/traffic-sessions.js.map +1 -1
  79. package/resources/devices/traffic-sessions.mjs +2 -8
  80. package/resources/devices/traffic-sessions.mjs.map +1 -1
  81. package/resources/files.d.mts +5 -19
  82. package/resources/files.d.mts.map +1 -1
  83. package/resources/files.d.ts +5 -19
  84. package/resources/files.d.ts.map +1 -1
  85. package/resources/files.js +2 -10
  86. package/resources/files.js.map +1 -1
  87. package/resources/files.mjs +2 -10
  88. package/resources/files.mjs.map +1 -1
  89. package/resources/index.d.mts +4 -4
  90. package/resources/index.d.mts.map +1 -1
  91. package/resources/index.d.ts +4 -4
  92. package/resources/index.d.ts.map +1 -1
  93. package/resources/index.js.map +1 -1
  94. package/resources/index.mjs +1 -1
  95. package/resources/index.mjs.map +1 -1
  96. package/resources/mailboxes/connections.d.mts +64 -0
  97. package/resources/mailboxes/connections.d.mts.map +1 -0
  98. package/resources/mailboxes/connections.d.ts +64 -0
  99. package/resources/mailboxes/connections.d.ts.map +1 -0
  100. package/resources/mailboxes/connections.js +42 -0
  101. package/resources/mailboxes/connections.js.map +1 -0
  102. package/resources/mailboxes/connections.mjs +38 -0
  103. package/resources/mailboxes/connections.mjs.map +1 -0
  104. package/resources/mailboxes/index.d.mts +2 -1
  105. package/resources/mailboxes/index.d.mts.map +1 -1
  106. package/resources/mailboxes/index.d.ts +2 -1
  107. package/resources/mailboxes/index.d.ts.map +1 -1
  108. package/resources/mailboxes/index.js +3 -1
  109. package/resources/mailboxes/index.js.map +1 -1
  110. package/resources/mailboxes/index.mjs +1 -0
  111. package/resources/mailboxes/index.mjs.map +1 -1
  112. package/resources/mailboxes/mailboxes.d.mts +73 -24
  113. package/resources/mailboxes/mailboxes.d.mts.map +1 -1
  114. package/resources/mailboxes/mailboxes.d.ts +73 -24
  115. package/resources/mailboxes/mailboxes.d.ts.map +1 -1
  116. package/resources/mailboxes/mailboxes.js +25 -8
  117. package/resources/mailboxes/mailboxes.js.map +1 -1
  118. package/resources/mailboxes/mailboxes.mjs +25 -8
  119. package/resources/mailboxes/mailboxes.mjs.map +1 -1
  120. package/resources/messages/index.d.mts +1 -1
  121. package/resources/messages/index.d.mts.map +1 -1
  122. package/resources/messages/index.d.ts +1 -1
  123. package/resources/messages/index.d.ts.map +1 -1
  124. package/resources/messages/index.js.map +1 -1
  125. package/resources/messages/index.mjs +1 -1
  126. package/resources/messages/index.mjs.map +1 -1
  127. package/resources/messages/messages.d.mts +26 -1
  128. package/resources/messages/messages.d.mts.map +1 -1
  129. package/resources/messages/messages.d.ts +26 -1
  130. package/resources/messages/messages.d.ts.map +1 -1
  131. package/resources/messages/messages.js +9 -0
  132. package/resources/messages/messages.js.map +1 -1
  133. package/resources/messages/messages.mjs +9 -0
  134. package/resources/messages/messages.mjs.map +1 -1
  135. package/resources/notifications.d.mts +27 -1
  136. package/resources/notifications.d.mts.map +1 -1
  137. package/resources/notifications.d.ts +27 -1
  138. package/resources/notifications.d.ts.map +1 -1
  139. package/resources/notifications.js +17 -0
  140. package/resources/notifications.js.map +1 -1
  141. package/resources/notifications.mjs +17 -0
  142. package/resources/notifications.mjs.map +1 -1
  143. package/resources/numbers/index.d.mts +1 -1
  144. package/resources/numbers/index.d.mts.map +1 -1
  145. package/resources/numbers/index.d.ts +1 -1
  146. package/resources/numbers/index.d.ts.map +1 -1
  147. package/resources/numbers/index.js.map +1 -1
  148. package/resources/numbers/index.mjs +1 -1
  149. package/resources/numbers/index.mjs.map +1 -1
  150. package/resources/numbers/messages.d.mts +60 -1
  151. package/resources/numbers/messages.d.mts.map +1 -1
  152. package/resources/numbers/messages.d.ts +60 -1
  153. package/resources/numbers/messages.d.ts.map +1 -1
  154. package/resources/numbers/messages.js +21 -0
  155. package/resources/numbers/messages.js.map +1 -1
  156. package/resources/numbers/messages.mjs +21 -0
  157. package/resources/numbers/messages.mjs.map +1 -1
  158. package/resources/numbers/numbers.d.mts +123 -15
  159. package/resources/numbers/numbers.d.mts.map +1 -1
  160. package/resources/numbers/numbers.d.ts +123 -15
  161. package/resources/numbers/numbers.d.ts.map +1 -1
  162. package/resources/numbers/numbers.js +2 -11
  163. package/resources/numbers/numbers.js.map +1 -1
  164. package/resources/numbers/numbers.mjs +3 -12
  165. package/resources/numbers/numbers.mjs.map +1 -1
  166. package/resources/store/apps.d.mts +23 -2
  167. package/resources/store/apps.d.mts.map +1 -1
  168. package/resources/store/apps.d.ts +23 -2
  169. package/resources/store/apps.d.ts.map +1 -1
  170. package/resources/tasks/tasks.d.mts +16 -55
  171. package/resources/tasks/tasks.d.mts.map +1 -1
  172. package/resources/tasks/tasks.d.ts +16 -55
  173. package/resources/tasks/tasks.d.ts.map +1 -1
  174. package/resources/tasks/tasks.js +2 -10
  175. package/resources/tasks/tasks.js.map +1 -1
  176. package/resources/tasks/tasks.mjs +2 -10
  177. package/resources/tasks/tasks.mjs.map +1 -1
  178. package/resources/webhooks/deliveries.d.mts +22 -31
  179. package/resources/webhooks/deliveries.d.mts.map +1 -1
  180. package/resources/webhooks/deliveries.d.ts +22 -31
  181. package/resources/webhooks/deliveries.d.ts.map +1 -1
  182. package/resources/webhooks/deliveries.js +4 -30
  183. package/resources/webhooks/deliveries.js.map +1 -1
  184. package/resources/webhooks/deliveries.mjs +4 -30
  185. package/resources/webhooks/deliveries.mjs.map +1 -1
  186. package/resources/webhooks/index.d.mts +1 -0
  187. package/resources/webhooks/index.d.mts.map +1 -1
  188. package/resources/webhooks/index.d.ts +1 -0
  189. package/resources/webhooks/index.d.ts.map +1 -1
  190. package/resources/webhooks/index.js +3 -1
  191. package/resources/webhooks/index.js.map +1 -1
  192. package/resources/webhooks/index.mjs +1 -0
  193. package/resources/webhooks/index.mjs.map +1 -1
  194. package/resources/webhooks/integrations.d.mts +77 -0
  195. package/resources/webhooks/integrations.d.mts.map +1 -0
  196. package/resources/webhooks/integrations.d.ts +77 -0
  197. package/resources/webhooks/integrations.d.ts.map +1 -0
  198. package/resources/webhooks/integrations.js +26 -0
  199. package/resources/webhooks/integrations.js.map +1 -0
  200. package/resources/webhooks/integrations.mjs +22 -0
  201. package/resources/webhooks/integrations.mjs.map +1 -0
  202. package/resources/webhooks/webhooks.d.mts +279 -71
  203. package/resources/webhooks/webhooks.d.mts.map +1 -1
  204. package/resources/webhooks/webhooks.d.ts +279 -71
  205. package/resources/webhooks/webhooks.d.ts.map +1 -1
  206. package/resources/webhooks/webhooks.js +27 -60
  207. package/resources/webhooks/webhooks.js.map +1 -1
  208. package/resources/webhooks/webhooks.mjs +27 -60
  209. package/resources/webhooks/webhooks.mjs.map +1 -1
  210. package/resources/workflows/action-catalog.d.mts +7 -3
  211. package/resources/workflows/action-catalog.d.mts.map +1 -1
  212. package/resources/workflows/action-catalog.d.ts +7 -3
  213. package/resources/workflows/action-catalog.d.ts.map +1 -1
  214. package/resources/workflows/actions/actions.d.mts +9 -5
  215. package/resources/workflows/actions/actions.d.mts.map +1 -1
  216. package/resources/workflows/actions/actions.d.ts +9 -5
  217. package/resources/workflows/actions/actions.d.ts.map +1 -1
  218. package/resources/workflows/actions/actions.js +4 -0
  219. package/resources/workflows/actions/actions.js.map +1 -1
  220. package/resources/workflows/actions/actions.mjs +4 -0
  221. package/resources/workflows/actions/actions.mjs.map +1 -1
  222. package/resources/workflows/events.d.mts +48 -4
  223. package/resources/workflows/events.d.mts.map +1 -1
  224. package/resources/workflows/events.d.ts +48 -4
  225. package/resources/workflows/events.d.ts.map +1 -1
  226. package/resources/workflows/executions/executions.d.mts +334 -0
  227. package/resources/workflows/executions/executions.d.mts.map +1 -0
  228. package/resources/workflows/executions/executions.d.ts +334 -0
  229. package/resources/workflows/executions/executions.d.ts.map +1 -0
  230. package/resources/workflows/executions/executions.js +49 -0
  231. package/resources/workflows/executions/executions.js.map +1 -0
  232. package/resources/workflows/executions/executions.mjs +44 -0
  233. package/resources/workflows/executions/executions.mjs.map +1 -0
  234. package/resources/workflows/executions/index.d.mts +3 -0
  235. package/resources/workflows/executions/index.d.mts.map +1 -0
  236. package/resources/workflows/executions/index.d.ts +3 -0
  237. package/resources/workflows/executions/index.d.ts.map +1 -0
  238. package/resources/workflows/executions/index.js +9 -0
  239. package/resources/workflows/executions/index.js.map +1 -0
  240. package/resources/workflows/executions/index.mjs +4 -0
  241. package/resources/workflows/executions/index.mjs.map +1 -0
  242. package/resources/workflows/executions/screenshots.d.mts +18 -0
  243. package/resources/workflows/executions/screenshots.d.mts.map +1 -0
  244. package/resources/workflows/executions/screenshots.d.ts +18 -0
  245. package/resources/workflows/executions/screenshots.d.ts.map +1 -0
  246. package/resources/workflows/executions/screenshots.js +23 -0
  247. package/resources/workflows/executions/screenshots.js.map +1 -0
  248. package/resources/workflows/executions/screenshots.mjs +19 -0
  249. package/resources/workflows/executions/screenshots.mjs.map +1 -0
  250. package/resources/workflows/executions.d.mts +1 -269
  251. package/resources/workflows/executions.d.mts.map +1 -1
  252. package/resources/workflows/executions.d.ts +1 -269
  253. package/resources/workflows/executions.d.ts.map +1 -1
  254. package/resources/workflows/executions.js +2 -37
  255. package/resources/workflows/executions.js.map +1 -1
  256. package/resources/workflows/executions.mjs +1 -35
  257. package/resources/workflows/executions.mjs.map +1 -1
  258. package/resources/workflows/flows/actions.d.mts +39 -0
  259. package/resources/workflows/flows/actions.d.mts.map +1 -1
  260. package/resources/workflows/flows/actions.d.ts +39 -0
  261. package/resources/workflows/flows/actions.d.ts.map +1 -1
  262. package/resources/workflows/flows/actions.js +4 -0
  263. package/resources/workflows/flows/actions.js.map +1 -1
  264. package/resources/workflows/flows/actions.mjs +4 -0
  265. package/resources/workflows/flows/actions.mjs.map +1 -1
  266. package/resources/workflows/flows/flows.d.mts +529 -18
  267. package/resources/workflows/flows/flows.d.mts.map +1 -1
  268. package/resources/workflows/flows/flows.d.ts +529 -18
  269. package/resources/workflows/flows/flows.d.ts.map +1 -1
  270. package/resources/workflows/flows/flows.js +75 -0
  271. package/resources/workflows/flows/flows.js.map +1 -1
  272. package/resources/workflows/flows/flows.mjs +75 -0
  273. package/resources/workflows/flows/flows.mjs.map +1 -1
  274. package/resources/workflows/flows/index.d.mts +1 -1
  275. package/resources/workflows/flows/index.d.mts.map +1 -1
  276. package/resources/workflows/flows/index.d.ts +1 -1
  277. package/resources/workflows/flows/index.d.ts.map +1 -1
  278. package/resources/workflows/flows/index.js.map +1 -1
  279. package/resources/workflows/flows/index.mjs.map +1 -1
  280. package/resources/workflows/index.d.mts +2 -2
  281. package/resources/workflows/index.d.mts.map +1 -1
  282. package/resources/workflows/index.d.ts +2 -2
  283. package/resources/workflows/index.d.ts.map +1 -1
  284. package/resources/workflows/index.js +4 -4
  285. package/resources/workflows/index.js.map +1 -1
  286. package/resources/workflows/index.mjs +1 -1
  287. package/resources/workflows/index.mjs.map +1 -1
  288. package/resources/workflows/triggers.d.mts +107 -9
  289. package/resources/workflows/triggers.d.mts.map +1 -1
  290. package/resources/workflows/triggers.d.ts +107 -9
  291. package/resources/workflows/triggers.d.ts.map +1 -1
  292. package/resources/workflows/triggers.js +14 -0
  293. package/resources/workflows/triggers.js.map +1 -1
  294. package/resources/workflows/triggers.mjs +14 -0
  295. package/resources/workflows/triggers.mjs.map +1 -1
  296. package/resources/workflows/workflows.d.mts +4 -4
  297. package/resources/workflows/workflows.d.mts.map +1 -1
  298. package/resources/workflows/workflows.d.ts +4 -4
  299. package/resources/workflows/workflows.d.ts.map +1 -1
  300. package/resources/workflows/workflows.js +2 -2
  301. package/resources/workflows/workflows.js.map +1 -1
  302. package/resources/workflows/workflows.mjs +2 -2
  303. package/resources/workflows/workflows.mjs.map +1 -1
  304. package/src/client.ts +18 -1
  305. package/src/resources/apps.ts +18 -15
  306. package/src/resources/assistant/conversations.ts +12 -27
  307. package/src/resources/connect/connect.ts +6 -0
  308. package/src/resources/connect/index.ts +3 -0
  309. package/src/resources/connect/proxies.ts +119 -19
  310. package/src/resources/devices/browser.ts +9 -3
  311. package/src/resources/devices/devices.ts +80 -30
  312. package/src/resources/devices/index.ts +2 -0
  313. package/src/resources/devices/recordings.ts +4 -2
  314. package/src/resources/devices/traffic-sessions.ts +2 -19
  315. package/src/resources/files.ts +8 -29
  316. package/src/resources/index.ts +11 -1
  317. package/src/resources/mailboxes/connections.ts +91 -0
  318. package/src/resources/mailboxes/index.ts +7 -0
  319. package/src/resources/mailboxes/mailboxes.ts +146 -24
  320. package/src/resources/messages/index.ts +6 -1
  321. package/src/resources/messages/messages.ts +55 -1
  322. package/src/resources/notifications.ts +37 -0
  323. package/src/resources/numbers/index.ts +7 -1
  324. package/src/resources/numbers/messages.ts +92 -1
  325. package/src/resources/numbers/numbers.ts +143 -25
  326. package/src/resources/store/apps.ts +291 -2
  327. package/src/resources/tasks/tasks.ts +18 -65
  328. package/src/resources/webhooks/deliveries.ts +26 -31
  329. package/src/resources/webhooks/index.ts +6 -0
  330. package/src/resources/webhooks/integrations.ts +107 -0
  331. package/src/resources/webhooks/webhooks.ts +326 -71
  332. package/src/resources/workflows/action-catalog.ts +11 -3
  333. package/src/resources/workflows/actions/actions.ts +9 -5
  334. package/src/resources/workflows/events.ts +62 -4
  335. package/src/resources/workflows/executions/executions.ts +514 -0
  336. package/src/resources/workflows/executions/index.ts +12 -0
  337. package/src/resources/workflows/executions/screenshots.ts +34 -0
  338. package/src/resources/workflows/executions.ts +1 -412
  339. package/src/resources/workflows/flows/actions.ts +46 -0
  340. package/src/resources/workflows/flows/flows.ts +765 -17
  341. package/src/resources/workflows/flows/index.ts +11 -0
  342. package/src/resources/workflows/index.ts +12 -1
  343. package/src/resources/workflows/triggers.ts +128 -10
  344. package/src/resources/workflows/workflows.ts +32 -10
  345. package/src/version.ts +1 -1
  346. package/version.d.mts +1 -1
  347. package/version.d.ts +1 -1
  348. package/version.js +1 -1
  349. package/version.mjs +1 -1
@@ -25,6 +25,10 @@ export class Flows extends APIResource {
25
25
  * with at least one action required. Optional settings include target `deviceIds`,
26
26
  * a cooldown (`cooldownSeconds`/`cooldownScope`), and webhook notifications on
27
27
  * success or failure.
28
+ *
29
+ * Supports an optional `Idempotency-Key` header (1-255 printable ASCII
30
+ * characters). Replays with the same key and an identical body return the original
31
+ * 201; a changed body under the same key returns 422 `idempotency_key_reused`.
28
32
  */
29
33
  create(body: FlowCreateParams, options?: RequestOptions): APIPromise<FlowCreateResponse> {
30
34
  return this._client.post('/flows', { body, ...options });
@@ -73,6 +77,19 @@ export class Flows extends APIResource {
73
77
  return this._client.delete(path`/flows/${flowID}`, options);
74
78
  }
75
79
 
80
+ /**
81
+ * Activate a disabled flow only when the supplied verification execution succeeded
82
+ * and the flow graph has not changed since verification. Repeating activation is
83
+ * idempotent for an already-enabled flow.
84
+ */
85
+ activate(
86
+ flowID: string,
87
+ body: FlowActivateParams,
88
+ options?: RequestOptions,
89
+ ): APIPromise<FlowActivateResponse> {
90
+ return this._client.post(path`/flows/${flowID}/activate`, { body, ...options });
91
+ }
92
+
76
93
  /**
77
94
  * Returns an owner-scoped snapshot of finite included workflow-agent capacity
78
95
  * after locally stored enabled and disabled agents. Available only while slot
@@ -87,6 +104,10 @@ export class Flows extends APIResource {
87
104
  * Create a copy of an existing flow, including its actions and settings. The
88
105
  * optional body can override the new flow's `name` and target `deviceIds`. Returns
89
106
  * 404 if the source flow does not exist.
107
+ *
108
+ * Supports an optional `Idempotency-Key` header (1-255 printable ASCII
109
+ * characters). Replays with the same key and an identical body return the original
110
+ * 201; a changed body under the same key returns 422 `idempotency_key_reused`.
90
111
  */
91
112
  clone(
92
113
  flowID: string,
@@ -96,6 +117,17 @@ export class Flows extends APIResource {
96
117
  return this._client.post(path`/flows/${flowID}/clone`, { body, ...options });
97
118
  }
98
119
 
120
+ /**
121
+ * Return the recording/delivery readiness for a flow (recording mode, whether
122
+ * delivery can include the recording, whether a files.upload action exists, the
123
+ * first direct OneDrive/Google Drive upload step if any) plus, per destination,
124
+ * whether the flow owner has an active integrations-api connection. Returns 404 if
125
+ * the flow does not exist.
126
+ */
127
+ deliveryOptions(flowID: string, options?: RequestOptions): APIPromise<FlowDeliveryOptionsResponse> {
128
+ return this._client.get(path`/flows/${flowID}/delivery-options`, options);
129
+ }
130
+
99
131
  /**
100
132
  * Simulate this flow firing without storing events, enqueuing jobs, or consuming
101
133
  * cooldown/rate-limit slots.
@@ -127,6 +159,34 @@ export class Flows extends APIResource {
127
159
  return this._client.get(path`/flows/${flowID}/repairs`, options);
128
160
  }
129
161
 
162
+ /**
163
+ * Immediately enqueue one live execution on every device bound to the flow,
164
+ * regardless of whether its trigger is event-based, custom, or scheduled.
165
+ *
166
+ * Supports an optional `Idempotency-Key` header (1-255 printable ASCII
167
+ * characters). The run identity is derived from the key, so a retry never starts a
168
+ * second run. Replays with the same key and an identical body return the original
169
+ * status and the original `executionIds`; a changed body under the same key
170
+ * returns 422 `idempotency_key_reused`.
171
+ */
172
+ run(
173
+ flowID: string,
174
+ body: FlowRunParams | null | undefined = {},
175
+ options?: RequestOptions,
176
+ ): APIPromise<FlowRunResponse> {
177
+ return this._client.post(path`/flows/${flowID}/run`, { body, ...options });
178
+ }
179
+
180
+ /**
181
+ * Get flow template context
182
+ */
183
+ templateContext(
184
+ query: FlowTemplateContextParams | null | undefined = {},
185
+ options?: RequestOptions,
186
+ ): APIPromise<FlowTemplateContextResponse> {
187
+ return this._client.get('/flows/template-context', { query, ...options });
188
+ }
189
+
130
190
  /**
131
191
  * Clear a flow's blocked status after fixing the underlying issue. Idempotent —
132
192
  * safe to call on already-healthy flows.
@@ -134,6 +194,38 @@ export class Flows extends APIResource {
134
194
  unblock(flowID: string, options?: RequestOptions): APIPromise<FlowUnblockResponse> {
135
195
  return this._client.post(path`/flows/${flowID}/unblock`, options);
136
196
  }
197
+
198
+ /**
199
+ * Validate a flow
200
+ */
201
+ validate(body: FlowValidateParams, options?: RequestOptions): APIPromise<FlowValidateResponse> {
202
+ return this._client.post('/flows/validate', { body, ...options });
203
+ }
204
+
205
+ /**
206
+ * Run a bound, deduplicated **verification** of this flow on exactly one device
207
+ * through the real worker.
208
+ *
209
+ * Unlike a normal trigger firing, verification:
210
+ *
211
+ * - runs a flow that is `enabled` OR `disabled` (an archived flow returns 404);
212
+ * - targets one device (`deviceId`, or the single bound device);
213
+ * - is idempotent per `invocationId`: a repeat returns the existing run
214
+ * (`deduplicated: true`, HTTP 200) instead of enqueuing another (HTTP 202);
215
+ * - never mutates flow health, `lastTriggeredAt`, or the repair loop.
216
+ *
217
+ * Per-activation payload gate:
218
+ *
219
+ * - `custom`: validates the payload against the custom payload schema (422 on
220
+ * failure).
221
+ * - `event`: validates the payload against the event catalog schema and evaluates
222
+ * the trigger conditions; a failing gate returns 409 `conditions_not_met` with
223
+ * the dry-run report.
224
+ * - `schedule`: the payload is ignored.
225
+ */
226
+ verify(flowID: string, body: FlowVerifyParams, options?: RequestOptions): APIPromise<FlowVerifyResponse> {
227
+ return this._client.post(path`/flows/${flowID}/verify`, { body, ...options });
228
+ }
137
229
  }
138
230
 
139
231
  export interface FlowCreateResponse {
@@ -158,6 +250,8 @@ export namespace FlowCreateResponse {
158
250
 
159
251
  createdBy: string | null;
160
252
 
253
+ delivery: Data.Delivery | null;
254
+
161
255
  description: string | null;
162
256
 
163
257
  deviceIds: Array<string>;
@@ -212,8 +306,9 @@ export namespace FlowCreateResponse {
212
306
  /**
213
307
  * Template-resolver semantics this flow runs under (MVA-23). 1 = legacy
214
308
  * (missing/forbidden/null all resolve to ''). 2 = typed (missing/forbidden throw,
215
- * a whole-token null stays JSON null). Existing flows stay 1; new flows default
216
- * to 2.
309
+ * a whole-token null stays JSON null). 3 = typed, key-based (steps are addressed
310
+ * as {{steps.<key>...}} instead of by name; trigger.payload is not available).
311
+ * Existing flows stay 1; new flows default to the current version.
217
312
  */
218
313
  templateResolutionVersion: number;
219
314
 
@@ -228,6 +323,22 @@ export namespace FlowCreateResponse {
228
323
  }
229
324
 
230
325
  export namespace Data {
326
+ export interface Delivery {
327
+ destination: 'one_drive' | 'google_drive';
328
+
329
+ folder?: string;
330
+
331
+ recording?: Delivery.Recording;
332
+
333
+ screenshots?: unknown;
334
+ }
335
+
336
+ export namespace Delivery {
337
+ export interface Recording {
338
+ filename: string;
339
+ }
340
+ }
341
+
231
342
  export interface RecordingPolicy {
232
343
  mode: 'off' | 'flow' | 'selected_steps';
233
344
  }
@@ -256,6 +367,8 @@ export namespace FlowRetrieveResponse {
256
367
 
257
368
  createdBy: string | null;
258
369
 
370
+ delivery: Data.Delivery | null;
371
+
259
372
  description: string | null;
260
373
 
261
374
  deviceIds: Array<string>;
@@ -310,8 +423,9 @@ export namespace FlowRetrieveResponse {
310
423
  /**
311
424
  * Template-resolver semantics this flow runs under (MVA-23). 1 = legacy
312
425
  * (missing/forbidden/null all resolve to ''). 2 = typed (missing/forbidden throw,
313
- * a whole-token null stays JSON null). Existing flows stay 1; new flows default
314
- * to 2.
426
+ * a whole-token null stays JSON null). 3 = typed, key-based (steps are addressed
427
+ * as {{steps.<key>...}} instead of by name; trigger.payload is not available).
428
+ * Existing flows stay 1; new flows default to the current version.
315
429
  */
316
430
  templateResolutionVersion: number;
317
431
 
@@ -326,6 +440,22 @@ export namespace FlowRetrieveResponse {
326
440
  }
327
441
 
328
442
  export namespace Data {
443
+ export interface Delivery {
444
+ destination: 'one_drive' | 'google_drive';
445
+
446
+ folder?: string;
447
+
448
+ recording?: Delivery.Recording;
449
+
450
+ screenshots?: unknown;
451
+ }
452
+
453
+ export namespace Delivery {
454
+ export interface Recording {
455
+ filename: string;
456
+ }
457
+ }
458
+
329
459
  export interface RecordingPolicy {
330
460
  mode: 'off' | 'flow' | 'selected_steps';
331
461
  }
@@ -354,6 +484,8 @@ export namespace FlowUpdateResponse {
354
484
 
355
485
  createdBy: string | null;
356
486
 
487
+ delivery: Data.Delivery | null;
488
+
357
489
  description: string | null;
358
490
 
359
491
  deviceIds: Array<string>;
@@ -408,8 +540,9 @@ export namespace FlowUpdateResponse {
408
540
  /**
409
541
  * Template-resolver semantics this flow runs under (MVA-23). 1 = legacy
410
542
  * (missing/forbidden/null all resolve to ''). 2 = typed (missing/forbidden throw,
411
- * a whole-token null stays JSON null). Existing flows stay 1; new flows default
412
- * to 2.
543
+ * a whole-token null stays JSON null). 3 = typed, key-based (steps are addressed
544
+ * as {{steps.<key>...}} instead of by name; trigger.payload is not available).
545
+ * Existing flows stay 1; new flows default to the current version.
413
546
  */
414
547
  templateResolutionVersion: number;
415
548
 
@@ -424,6 +557,22 @@ export namespace FlowUpdateResponse {
424
557
  }
425
558
 
426
559
  export namespace Data {
560
+ export interface Delivery {
561
+ destination: 'one_drive' | 'google_drive';
562
+
563
+ folder?: string;
564
+
565
+ recording?: Delivery.Recording;
566
+
567
+ screenshots?: unknown;
568
+ }
569
+
570
+ export namespace Delivery {
571
+ export interface Recording {
572
+ filename: string;
573
+ }
574
+ }
575
+
427
576
  export interface RecordingPolicy {
428
577
  mode: 'off' | 'flow' | 'selected_steps';
429
578
  }
@@ -454,6 +603,8 @@ export namespace FlowListResponse {
454
603
 
455
604
  createdBy: string | null;
456
605
 
606
+ delivery: Item.Delivery | null;
607
+
457
608
  description: string | null;
458
609
 
459
610
  deviceIds: Array<string>;
@@ -508,8 +659,9 @@ export namespace FlowListResponse {
508
659
  /**
509
660
  * Template-resolver semantics this flow runs under (MVA-23). 1 = legacy
510
661
  * (missing/forbidden/null all resolve to ''). 2 = typed (missing/forbidden throw,
511
- * a whole-token null stays JSON null). Existing flows stay 1; new flows default
512
- * to 2.
662
+ * a whole-token null stays JSON null). 3 = typed, key-based (steps are addressed
663
+ * as {{steps.<key>...}} instead of by name; trigger.payload is not available).
664
+ * Existing flows stay 1; new flows default to the current version.
513
665
  */
514
666
  templateResolutionVersion: number;
515
667
 
@@ -524,6 +676,22 @@ export namespace FlowListResponse {
524
676
  }
525
677
 
526
678
  export namespace Item {
679
+ export interface Delivery {
680
+ destination: 'one_drive' | 'google_drive';
681
+
682
+ folder?: string;
683
+
684
+ recording?: Delivery.Recording;
685
+
686
+ screenshots?: unknown;
687
+ }
688
+
689
+ export namespace Delivery {
690
+ export interface Recording {
691
+ filename: string;
692
+ }
693
+ }
694
+
527
695
  export interface RecordingPolicy {
528
696
  mode: 'off' | 'flow' | 'selected_steps';
529
697
  }
@@ -534,6 +702,123 @@ export interface FlowDeleteResponse {
534
702
  message: string;
535
703
  }
536
704
 
705
+ export interface FlowActivateResponse {
706
+ data: FlowActivateResponse.Data;
707
+ }
708
+
709
+ export namespace FlowActivateResponse {
710
+ export interface Data {
711
+ id: string;
712
+
713
+ archivedAt: string | null;
714
+
715
+ blockedAt: string | null;
716
+
717
+ consecutiveFailures: number;
718
+
719
+ cooldownScope: 'flow' | 'device';
720
+
721
+ cooldownSeconds: number | null;
722
+
723
+ createdAt: string | null;
724
+
725
+ createdBy: string | null;
726
+
727
+ delivery: Data.Delivery | null;
728
+
729
+ description: string | null;
730
+
731
+ deviceIds: Array<string>;
732
+
733
+ /**
734
+ * Compatibility projection of lifecycleStatus; true only when lifecycleStatus is
735
+ * enabled.
736
+ */
737
+ enabled: boolean;
738
+
739
+ healthMonitoringEnabled: boolean;
740
+
741
+ lastFailureAt: string | null;
742
+
743
+ lastFailureCode:
744
+ | 'device_not_found'
745
+ | 'permission_denied'
746
+ | 'client_error'
747
+ | 'transient'
748
+ | 'logic'
749
+ | 'invalid_config'
750
+ | null;
751
+
752
+ lastTriggeredAt: string | null;
753
+
754
+ lifecycleStatus: 'enabled' | 'disabled' | 'archived';
755
+
756
+ name: string;
757
+
758
+ notifyOnFailure: boolean;
759
+
760
+ notifyOnSuccess: boolean;
761
+
762
+ notifyWebhookId: string | null;
763
+
764
+ ownerId: string;
765
+
766
+ /**
767
+ * @deprecated Deprecated: use recordingPolicy.mode ("flow" =
768
+ * recordingEnabled=true, "off" = recordingEnabled=false).
769
+ */
770
+ recordingEnabled: boolean;
771
+
772
+ recordingPolicy: Data.RecordingPolicy;
773
+
774
+ selfHealingEnabled: boolean;
775
+
776
+ selfHealingMaxAttempts: number;
777
+
778
+ status: 'healthy' | 'failing' | 'blocked';
779
+
780
+ /**
781
+ * Template-resolver semantics this flow runs under (MVA-23). 1 = legacy
782
+ * (missing/forbidden/null all resolve to ''). 2 = typed (missing/forbidden throw,
783
+ * a whole-token null stays JSON null). 3 = typed, key-based (steps are addressed
784
+ * as {{steps.<key>...}} instead of by name; trigger.payload is not available).
785
+ * Existing flows stay 1; new flows default to the current version.
786
+ */
787
+ templateResolutionVersion: number;
788
+
789
+ triggerId: string;
790
+
791
+ updatedAt: string | null;
792
+
793
+ /**
794
+ * @deprecated Deprecated: use ownerId (tenancy) / createdBy (actor).
795
+ */
796
+ userId: string;
797
+ }
798
+
799
+ export namespace Data {
800
+ export interface Delivery {
801
+ destination: 'one_drive' | 'google_drive';
802
+
803
+ folder?: string;
804
+
805
+ recording?: Delivery.Recording;
806
+
807
+ screenshots?: unknown;
808
+ }
809
+
810
+ export namespace Delivery {
811
+ export interface Recording {
812
+ filename: string;
813
+ }
814
+ }
815
+
816
+ export interface RecordingPolicy {
817
+ mode: 'off' | 'flow' | 'selected_steps';
818
+ }
819
+ }
820
+ }
821
+
537
822
  export interface FlowCapacityResponse {
538
823
  data: FlowCapacityResponse.Data;
539
824
  }
@@ -570,6 +855,8 @@ export namespace FlowCloneResponse {
570
855
 
571
856
  createdBy: string | null;
572
857
 
858
+ delivery: Data.Delivery | null;
859
+
573
860
  description: string | null;
574
861
 
575
862
  deviceIds: Array<string>;
@@ -624,8 +911,9 @@ export namespace FlowCloneResponse {
624
911
  /**
625
912
  * Template-resolver semantics this flow runs under (MVA-23). 1 = legacy
626
913
  * (missing/forbidden/null all resolve to ''). 2 = typed (missing/forbidden throw,
627
- * a whole-token null stays JSON null). Existing flows stay 1; new flows default
628
- * to 2.
914
+ * a whole-token null stays JSON null). 3 = typed, key-based (steps are addressed
915
+ * as {{steps.<key>...}} instead of by name; trigger.payload is not available).
916
+ * Existing flows stay 1; new flows default to the current version.
629
917
  */
630
918
  templateResolutionVersion: number;
631
919
 
@@ -640,12 +928,69 @@ export namespace FlowCloneResponse {
640
928
  }
641
929
 
642
930
  export namespace Data {
931
+ export interface Delivery {
932
+ destination: 'one_drive' | 'google_drive';
933
+
934
+ folder?: string;
935
+
936
+ recording?: Delivery.Recording;
937
+
938
+ screenshots?: unknown;
939
+ }
940
+
941
+ export namespace Delivery {
942
+ export interface Recording {
943
+ filename: string;
944
+ }
945
+ }
946
+
643
947
  export interface RecordingPolicy {
644
948
  mode: 'off' | 'flow' | 'selected_steps';
645
949
  }
646
950
  }
647
951
  }
648
952
 
953
+ export interface FlowDeliveryOptionsResponse {
954
+ data: FlowDeliveryOptionsResponse.Data;
955
+ }
956
+
957
+ export namespace FlowDeliveryOptionsResponse {
958
+ export interface Data {
959
+ canDeliverRecording: boolean;
960
+
961
+ /**
962
+ * Delivery destinations in registry order.
963
+ */
964
+ destinations: Array<Data.Destination>;
965
+
966
+ directUploadStep: Data.DirectUploadStep | null;
967
+
968
+ hasFilesUpload: boolean;
969
+
970
+ recordingMode: 'off' | 'flow' | 'selected_steps';
971
+ }
972
+
973
+ export namespace Data {
974
+ export interface Destination {
975
+ connection: 'connected' | 'not_connected' | 'expired' | 'unknown';
976
+
977
+ connectKey: string;
978
+
979
+ iconUrl: string | null;
980
+
981
+ key: 'one_drive' | 'google_drive';
982
+
983
+ label: string;
984
+ }
985
+
986
+ export interface DirectUploadStep {
987
+ flowActionId: string;
988
+
989
+ name: string;
990
+ }
991
+ }
992
+ }
993
+
649
994
  export interface FlowDryRunResponse {
650
995
  data: FlowDryRunResponse.Data;
651
996
  }
@@ -675,13 +1020,15 @@ export namespace FlowDryRunResponse {
675
1020
 
676
1021
  flowActionId: string;
677
1022
 
1023
+ key: string;
1024
+
678
1025
  method: string;
679
1026
 
680
1027
  name: string;
681
1028
 
682
1029
  recordingEnabled: boolean;
683
1030
 
684
- service: 'tasks_api' | 'devices_api' | 'agents_api' | 'webhooks';
1031
+ service: 'tasks_api' | 'devices_api' | 'agents_api' | 'webhooks' | 'integrations_api';
685
1032
 
686
1033
  /**
687
1034
  * Nested child actions (loop/branch bodies), each the same shape as a
@@ -776,6 +1123,70 @@ export namespace FlowListRepairsResponse {
776
1123
  }
777
1124
  }
778
1125
 
1126
+ export interface FlowRunResponse {
1127
+ data: FlowRunResponse.Data;
1128
+ }
1129
+
1130
+ export namespace FlowRunResponse {
1131
+ export interface Data {
1132
+ enqueuedCount: number;
1133
+
1134
+ /**
1135
+ * Ids of the executions this run created. An idempotent replay returns the ids of
1136
+ * the original run.
1137
+ */
1138
+ executionIds: Array<string>;
1139
+ }
1140
+ }
1141
+
1142
+ export interface FlowTemplateContextResponse {
1143
+ data: FlowTemplateContextResponse.Data;
1144
+ }
1145
+
1146
+ export namespace FlowTemplateContextResponse {
1147
+ export interface Data {
1148
+ grammar: string;
1149
+
1150
+ loop: Data.Loop;
1151
+
1152
+ payloadAliases: Array<string>;
1153
+
1154
+ roots: Array<Data.Root>;
1155
+
1156
+ stepReference: Data.StepReference;
1157
+
1158
+ templateResolutionVersion: number;
1159
+ }
1160
+
1161
+ export namespace Data {
1162
+ export interface Loop {
1163
+ context: Array<string>;
1164
+
1165
+ itemVariableDefault: string;
1166
+
1167
+ name: string;
1168
+ }
1169
+
1170
+ export interface Root {
1171
+ description: string;
1172
+
1173
+ name: string;
1174
+
1175
+ shape?: unknown;
1176
+ }
1177
+
1178
+ export interface StepReference {
1179
+ note: string;
1180
+
1181
+ pattern: string;
1182
+
1183
+ keyRule?: string;
1184
+
1185
+ slugRule?: string;
1186
+ }
1187
+ }
1188
+ }
1189
+
779
1190
  export interface FlowUnblockResponse {
780
1191
  data: FlowUnblockResponse.Data;
781
1192
  }
@@ -798,6 +1209,8 @@ export namespace FlowUnblockResponse {
798
1209
 
799
1210
  createdBy: string | null;
800
1211
 
1212
+ delivery: Data.Delivery | null;
1213
+
801
1214
  description: string | null;
802
1215
 
803
1216
  deviceIds: Array<string>;
@@ -852,8 +1265,9 @@ export namespace FlowUnblockResponse {
852
1265
  /**
853
1266
  * Template-resolver semantics this flow runs under (MVA-23). 1 = legacy
854
1267
  * (missing/forbidden/null all resolve to ''). 2 = typed (missing/forbidden throw,
855
- * a whole-token null stays JSON null). Existing flows stay 1; new flows default
856
- * to 2.
1268
+ * a whole-token null stays JSON null). 3 = typed, key-based (steps are addressed
1269
+ * as {{steps.<key>...}} instead of by name; trigger.payload is not available).
1270
+ * Existing flows stay 1; new flows default to the current version.
857
1271
  */
858
1272
  templateResolutionVersion: number;
859
1273
 
@@ -868,12 +1282,98 @@ export namespace FlowUnblockResponse {
868
1282
  }
869
1283
 
870
1284
  export namespace Data {
1285
+ export interface Delivery {
1286
+ destination: 'one_drive' | 'google_drive';
1287
+
1288
+ folder?: string;
1289
+
1290
+ recording?: Delivery.Recording;
1291
+
1292
+ screenshots?: unknown;
1293
+ }
1294
+
1295
+ export namespace Delivery {
1296
+ export interface Recording {
1297
+ filename: string;
1298
+ }
1299
+ }
1300
+
871
1301
  export interface RecordingPolicy {
872
1302
  mode: 'off' | 'flow' | 'selected_steps';
873
1303
  }
874
1304
  }
875
1305
  }
876
1306
 
1307
+ export interface FlowValidateResponse {
1308
+ data: FlowValidateResponse.Data;
1309
+ }
1310
+
1311
+ export namespace FlowValidateResponse {
1312
+ export interface Data {
1313
+ errors: Array<Data.Error>;
1314
+
1315
+ valid: boolean;
1316
+
1317
+ warnings: Array<Data.Warning>;
1318
+ }
1319
+
1320
+ export namespace Data {
1321
+ export interface Error {
1322
+ code: string;
1323
+
1324
+ field: string;
1325
+
1326
+ message: string;
1327
+
1328
+ knownSteps?: Array<string>;
1329
+
1330
+ reference?: string;
1331
+ }
1332
+
1333
+ export interface Warning {
1334
+ code: string;
1335
+
1336
+ message: string;
1337
+
1338
+ connectKey?: string;
1339
+
1340
+ destination?: string;
1341
+ }
1342
+ }
1343
+ }
1344
+
1345
+ export interface FlowVerifyResponse {
1346
+ data: FlowVerifyResponse.Data;
1347
+ }
1348
+
1349
+ export namespace FlowVerifyResponse {
1350
+ export interface Data {
1351
+ /**
1352
+ * True when this run already existed for the (flow, invocationId) key (HTTP 200);
1353
+ * false for a newly enqueued run (HTTP 202).
1354
+ */
1355
+ deduplicated: boolean;
1356
+
1357
+ /**
1358
+ * Device the verification runs on; null for a device-free verification (a 0-device
1359
+ * flow whose actions are all device-free allowlisted).
1360
+ */
1361
+ deviceId: string | null;
1362
+
1363
+ executionId: string;
1364
+
1365
+ flowId: string;
1366
+
1367
+ invocationId: string;
1368
+
1369
+ kind: 'verification';
1370
+
1371
+ status: 'pending' | 'running' | 'success' | 'failed' | 'cancelled' | 'skipped' | 'invalid';
1372
+
1373
+ triggerId: string;
1374
+ }
1375
+ }
1376
+
877
1377
  export interface FlowCreateParams {
878
1378
  actions: Array<FlowCreateParams.Action>;
879
1379
 
@@ -885,6 +1385,8 @@ export interface FlowCreateParams {
885
1385
 
886
1386
  cooldownSeconds?: number | null;
887
1387
 
1388
+ delivery?: FlowCreateParams.Delivery;
1389
+
888
1390
  description?: string;
889
1391
 
890
1392
  deviceIds?: Array<string>;
@@ -899,10 +1401,6 @@ export interface FlowCreateParams {
899
1401
 
900
1402
  notifyWebhookId?: string | null;
901
1403
 
902
- /**
903
- * @deprecated Deprecated compatibility field. true maps to
904
- * recordingPolicy.mode="flow"; false maps to "off".
905
- */
906
1404
  recordingEnabled?: boolean;
907
1405
 
908
1406
  recordingPolicy?: FlowCreateParams.RecordingPolicy;
@@ -922,6 +1420,15 @@ export namespace FlowCreateParams {
922
1420
 
923
1421
  continueOnError?: boolean;
924
1422
 
1423
+ /**
1424
+ * Stable identifier used by template resolution v2+ to address this step as
1425
+ * {{key.field}}. Omitted keys are derived from the step name whenever a flow is
1426
+ * created. For template resolution v3, replacing an existing flow's full action
1427
+ * tree requires every step to carry an explicit key — a missing key is rejected
1428
+ * there, not derived, so a name change can never silently move a step's key.
1429
+ */
1430
+ key?: string;
1431
+
925
1432
  nameOverride?: string;
926
1433
 
927
1434
  overrides?: Action.Overrides | null;
@@ -937,6 +1444,15 @@ export namespace FlowCreateParams {
937
1444
 
938
1445
  continueOnError?: boolean;
939
1446
 
1447
+ /**
1448
+ * Stable identifier used by template resolution v2+ to address this step as
1449
+ * {{key.field}}. Omitted keys are derived from the step name whenever a flow is
1450
+ * created. For template resolution v3, replacing an existing flow's full action
1451
+ * tree requires every step to carry an explicit key — a missing key is rejected
1452
+ * there, not derived, so a name change can never silently move a step's key.
1453
+ */
1454
+ key?: string;
1455
+
940
1456
  nameOverride?: string;
941
1457
 
942
1458
  overrides?: Child.Overrides | null;
@@ -955,6 +1471,22 @@ export namespace FlowCreateParams {
955
1471
  }
956
1472
  }
957
1473
 
1474
+ export interface Delivery {
1475
+ destination: 'one_drive' | 'google_drive';
1476
+
1477
+ folder?: string;
1478
+
1479
+ recording?: Delivery.Recording;
1480
+
1481
+ screenshots?: unknown;
1482
+ }
1483
+
1484
+ export namespace Delivery {
1485
+ export interface Recording {
1486
+ filename: string;
1487
+ }
1488
+ }
1489
+
958
1490
  export interface RecordingPolicy {
959
1491
  mode: 'off' | 'flow' | 'selected_steps';
960
1492
  }
@@ -965,6 +1497,8 @@ export interface FlowUpdateParams {
965
1497
 
966
1498
  cooldownSeconds?: number | null;
967
1499
 
1500
+ delivery?: FlowUpdateParams.Delivery | null;
1501
+
968
1502
  description?: string;
969
1503
 
970
1504
  deviceIds?: Array<string>;
@@ -1002,6 +1536,22 @@ export interface FlowUpdateParams {
1002
1536
  }
1003
1537
 
1004
1538
  export namespace FlowUpdateParams {
1539
+ export interface Delivery {
1540
+ destination: 'one_drive' | 'google_drive';
1541
+
1542
+ folder?: string;
1543
+
1544
+ recording?: Delivery.Recording;
1545
+
1546
+ screenshots?: unknown;
1547
+ }
1548
+
1549
+ export namespace Delivery {
1550
+ export interface Recording {
1551
+ filename: string;
1552
+ }
1553
+ }
1554
+
1005
1555
  export interface RecordingPolicy {
1006
1556
  mode: 'off' | 'flow' | 'selected_steps';
1007
1557
  }
@@ -1035,6 +1585,10 @@ export interface FlowListParams {
1035
1585
  triggerId?: string;
1036
1586
  }
1037
1587
 
1588
+ export interface FlowActivateParams {
1589
+ verificationExecutionId: string;
1590
+ }
1591
+
1038
1592
  export interface FlowCloneParams {
1039
1593
  deviceIds?: Array<string>;
1040
1594
 
@@ -1045,6 +1599,189 @@ export interface FlowDryRunParams {
1045
1599
  payload?: { [key: string]: unknown };
1046
1600
  }
1047
1601
 
1602
+ export interface FlowRunParams {
1603
+ payload?: { [key: string]: unknown };
1604
+ }
1605
+
1606
+ export interface FlowTemplateContextParams {
1607
+ templateResolutionVersion?: number;
1608
+ }
1609
+
1610
+ export interface FlowValidateParams {
1611
+ actions: Array<FlowValidateParams.FlowActionInput | FlowValidateParams.FlowDraftActionInput>;
1612
+
1613
+ name: string;
1614
+
1615
+ cooldownScope?: 'flow' | 'device';
1616
+
1617
+ cooldownSeconds?: number | null;
1618
+
1619
+ delivery?: FlowValidateParams.Delivery;
1620
+
1621
+ description?: string;
1622
+
1623
+ deviceIds?: Array<string>;
1624
+
1625
+ enabled?: boolean;
1626
+
1627
+ healthMonitoringEnabled?: boolean;
1628
+
1629
+ notifyOnFailure?: boolean;
1630
+
1631
+ notifyOnSuccess?: boolean;
1632
+
1633
+ notifyWebhookId?: string | null;
1634
+
1635
+ recordingEnabled?: boolean;
1636
+
1637
+ recordingPolicy?: FlowValidateParams.RecordingPolicy;
1638
+
1639
+ selfHealingEnabled?: boolean;
1640
+
1641
+ selfHealingMaxAttempts?: number;
1642
+
1643
+ triggerId?: string;
1644
+ }
1645
+
1646
+ export namespace FlowValidateParams {
1647
+ export interface FlowActionInput {
1648
+ actionId: string;
1649
+
1650
+ position: number;
1651
+
1652
+ children?: Array<FlowActionInput.Child>;
1653
+
1654
+ continueOnError?: boolean;
1655
+
1656
+ /**
1657
+ * Stable identifier used by template resolution v2+ to address this step as
1658
+ * {{key.field}}. Omitted keys are derived from the step name whenever a flow is
1659
+ * created. For template resolution v3, replacing an existing flow's full action
1660
+ * tree requires every step to carry an explicit key — a missing key is rejected
1661
+ * there, not derived, so a name change can never silently move a step's key.
1662
+ */
1663
+ key?: string;
1664
+
1665
+ nameOverride?: string;
1666
+
1667
+ overrides?: FlowActionInput.Overrides | null;
1668
+
1669
+ recordingEnabled?: boolean;
1670
+ }
1671
+
1672
+ export namespace FlowActionInput {
1673
+ export interface Child {
1674
+ actionId: string;
1675
+
1676
+ position: number;
1677
+
1678
+ continueOnError?: boolean;
1679
+
1680
+ /**
1681
+ * Stable identifier used by template resolution v2+ to address this step as
1682
+ * {{key.field}}. Omitted keys are derived from the step name whenever a flow is
1683
+ * created. For template resolution v3, replacing an existing flow's full action
1684
+ * tree requires every step to carry an explicit key — a missing key is rejected
1685
+ * there, not derived, so a name change can never silently move a step's key.
1686
+ */
1687
+ key?: string;
1688
+
1689
+ nameOverride?: string;
1690
+
1691
+ overrides?: Child.Overrides | null;
1692
+
1693
+ recordingEnabled?: boolean;
1694
+ }
1695
+
1696
+ export namespace Child {
1697
+ export interface Overrides {
1698
+ params?: { [key: string]: unknown };
1699
+ }
1700
+ }
1701
+
1702
+ export interface Overrides {
1703
+ params?: { [key: string]: unknown };
1704
+ }
1705
+ }
1706
+
1707
+ export interface FlowDraftActionInput {
1708
+ draft: FlowDraftActionInput.Draft;
1709
+
1710
+ position: number;
1711
+
1712
+ continueOnError?: boolean;
1713
+
1714
+ /**
1715
+ * Stable identifier used by template resolution v2+ to address this step as
1716
+ * {{key.field}}. Omitted keys are derived from the step name whenever a flow is
1717
+ * created. For template resolution v3, replacing an existing flow's full action
1718
+ * tree requires every step to carry an explicit key — a missing key is rejected
1719
+ * there, not derived, so a name change can never silently move a step's key.
1720
+ */
1721
+ key?: string;
1722
+
1723
+ nameOverride?: string;
1724
+
1725
+ overrides?: FlowDraftActionInput.Overrides | null;
1726
+
1727
+ recordingEnabled?: boolean;
1728
+ }
1729
+
1730
+ export namespace FlowDraftActionInput {
1731
+ export interface Draft {
1732
+ method: string;
1733
+
1734
+ name: string;
1735
+
1736
+ service: string;
1737
+
1738
+ params?: { [key: string]: unknown };
1739
+ }
1740
+
1741
+ export interface Overrides {
1742
+ params?: { [key: string]: unknown };
1743
+ }
1744
+ }
1745
+
1746
+ export interface Delivery {
1747
+ destination: 'one_drive' | 'google_drive';
1748
+
1749
+ folder?: string;
1750
+
1751
+ recording?: Delivery.Recording;
1752
+
1753
+ screenshots?: unknown;
1754
+ }
1755
+
1756
+ export namespace Delivery {
1757
+ export interface Recording {
1758
+ filename: string;
1759
+ }
1760
+ }
1761
+
1762
+ export interface RecordingPolicy {
1763
+ mode: 'off' | 'flow' | 'selected_steps';
1764
+ }
1765
+ }
1766
+
1767
+ export interface FlowVerifyParams {
1768
+ /**
1769
+ * Client-supplied idempotency key. A repeat request for the same (flow,
1770
+ * invocationId) returns the existing verification run (`deduplicated: true`,
1771
+ * HTTP 200) instead of enqueuing another.
1772
+ */
1773
+ invocationId: string;
1774
+
1775
+ /**
1776
+ * Device to run the verification on. Must be one the flow is bound to. Optional
1777
+ * only when the flow is bound to exactly one device (that device is used);
1778
+ * otherwise required.
1779
+ */
1780
+ deviceId?: string;
1781
+
1782
+ payload?: { [key: string]: unknown };
1783
+ }
1784
+
1048
1785
  Flows.Actions = Actions;
1049
1786
 
1050
1787
  export declare namespace Flows {
@@ -1054,16 +1791,27 @@ export declare namespace Flows {
1054
1791
  type FlowUpdateResponse as FlowUpdateResponse,
1055
1792
  type FlowListResponse as FlowListResponse,
1056
1793
  type FlowDeleteResponse as FlowDeleteResponse,
1794
+ type FlowActivateResponse as FlowActivateResponse,
1057
1795
  type FlowCapacityResponse as FlowCapacityResponse,
1058
1796
  type FlowCloneResponse as FlowCloneResponse,
1797
+ type FlowDeliveryOptionsResponse as FlowDeliveryOptionsResponse,
1059
1798
  type FlowDryRunResponse as FlowDryRunResponse,
1060
1799
  type FlowListRepairsResponse as FlowListRepairsResponse,
1800
+ type FlowRunResponse as FlowRunResponse,
1801
+ type FlowTemplateContextResponse as FlowTemplateContextResponse,
1061
1802
  type FlowUnblockResponse as FlowUnblockResponse,
1803
+ type FlowValidateResponse as FlowValidateResponse,
1804
+ type FlowVerifyResponse as FlowVerifyResponse,
1062
1805
  type FlowCreateParams as FlowCreateParams,
1063
1806
  type FlowUpdateParams as FlowUpdateParams,
1064
1807
  type FlowListParams as FlowListParams,
1808
+ type FlowActivateParams as FlowActivateParams,
1065
1809
  type FlowCloneParams as FlowCloneParams,
1066
1810
  type FlowDryRunParams as FlowDryRunParams,
1811
+ type FlowRunParams as FlowRunParams,
1812
+ type FlowTemplateContextParams as FlowTemplateContextParams,
1813
+ type FlowValidateParams as FlowValidateParams,
1814
+ type FlowVerifyParams as FlowVerifyParams,
1067
1815
  };
1068
1816
 
1069
1817
  export {