twentythree-cli 1.0.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 (426) hide show
  1. package/README.md +25 -0
  2. package/bin/dev.cmd +2 -0
  3. package/bin/dev.js +28 -0
  4. package/bin/run.cmd +2 -0
  5. package/bin/run.js +23 -0
  6. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  7. package/dist/api/client.cjs +24 -0
  8. package/dist/api/types.cjs +0 -0
  9. package/dist/auth/credential-store.cjs +22 -0
  10. package/dist/auth/token-refresh.cjs +70 -0
  11. package/dist/auth/workspace-config.cjs +61 -0
  12. package/dist/commands/action/add.cjs +75 -0
  13. package/dist/commands/action/delete.cjs +64 -0
  14. package/dist/commands/action/exclude.cjs +70 -0
  15. package/dist/commands/action/get.cjs +112 -0
  16. package/dist/commands/action/include.cjs +70 -0
  17. package/dist/commands/action/list.cjs +119 -0
  18. package/dist/commands/action/types.cjs +63 -0
  19. package/dist/commands/action/update.cjs +86 -0
  20. package/dist/commands/action/upload.cjs +89 -0
  21. package/dist/commands/analytics/conversions/index.cjs +83 -0
  22. package/dist/commands/analytics/conversions/timeseries.cjs +83 -0
  23. package/dist/commands/analytics/conversions/totals.cjs +83 -0
  24. package/dist/commands/analytics/live/event-timeseries.cjs +86 -0
  25. package/dist/commands/analytics/live/event-totals.cjs +86 -0
  26. package/dist/commands/analytics/live/event.cjs +88 -0
  27. package/dist/commands/analytics/live/index.cjs +89 -0
  28. package/dist/commands/analytics/live/timeseries.cjs +85 -0
  29. package/dist/commands/analytics/live/totals.cjs +85 -0
  30. package/dist/commands/analytics/live/weekday/timeseries.cjs +85 -0
  31. package/dist/commands/analytics/live/weekday/totals.cjs +85 -0
  32. package/dist/commands/analytics/live/weekday.cjs +88 -0
  33. package/dist/commands/analytics/usage/devices/timeseries.cjs +83 -0
  34. package/dist/commands/analytics/usage/devices/totals.cjs +86 -0
  35. package/dist/commands/analytics/usage/devices.cjs +89 -0
  36. package/dist/commands/analytics/usage/domains/totals.cjs +83 -0
  37. package/dist/commands/analytics/usage/domains.cjs +89 -0
  38. package/dist/commands/analytics/usage/locations/totals.cjs +83 -0
  39. package/dist/commands/analytics/usage/locations.cjs +89 -0
  40. package/dist/commands/analytics/usage/sourceids/totals.cjs +83 -0
  41. package/dist/commands/analytics/usage/sourceids.cjs +89 -0
  42. package/dist/commands/analytics/usage/sources/totals.cjs +83 -0
  43. package/dist/commands/analytics/usage/sources.cjs +89 -0
  44. package/dist/commands/analytics/usage/spots/timeseries.cjs +83 -0
  45. package/dist/commands/analytics/usage/spots/totals.cjs +83 -0
  46. package/dist/commands/analytics/usage/spots.cjs +89 -0
  47. package/dist/commands/analytics/usage/storage.cjs +52 -0
  48. package/dist/commands/analytics/usage/traffic/timeseries.cjs +83 -0
  49. package/dist/commands/analytics/usage/traffic/totals.cjs +86 -0
  50. package/dist/commands/analytics/usage/traffic.cjs +89 -0
  51. package/dist/commands/analytics/video/index.cjs +89 -0
  52. package/dist/commands/analytics/video/performance/timeseries.cjs +83 -0
  53. package/dist/commands/analytics/video/performance/totals.cjs +80 -0
  54. package/dist/commands/analytics/video/performance.cjs +89 -0
  55. package/dist/commands/analytics/video/published/timeseries.cjs +83 -0
  56. package/dist/commands/analytics/video/published/totals.cjs +80 -0
  57. package/dist/commands/analytics/video/published.cjs +89 -0
  58. package/dist/commands/analytics/video/timeseries.cjs +86 -0
  59. package/dist/commands/analytics/video/totals.cjs +86 -0
  60. package/dist/commands/analytics/video/weekday/timeseries.cjs +86 -0
  61. package/dist/commands/analytics/video/weekday/totals.cjs +83 -0
  62. package/dist/commands/analytics/video/weekday.cjs +89 -0
  63. package/dist/commands/app/add.cjs +76 -0
  64. package/dist/commands/app/delete.cjs +57 -0
  65. package/dist/commands/app/update.cjs +77 -0
  66. package/dist/commands/audience/companies.cjs +116 -0
  67. package/dist/commands/audience/field/list.cjs +83 -0
  68. package/dist/commands/audience/field/remove.cjs +63 -0
  69. package/dist/commands/audience/field/set.cjs +78 -0
  70. package/dist/commands/audience/field/types.cjs +57 -0
  71. package/dist/commands/audience/funnel.cjs +77 -0
  72. package/dist/commands/audience/identity-sources.cjs +64 -0
  73. package/dist/commands/audience/list-collectors.cjs +88 -0
  74. package/dist/commands/audience/list.cjs +122 -0
  75. package/dist/commands/audience/metrics.cjs +89 -0
  76. package/dist/commands/audience/register.cjs +106 -0
  77. package/dist/commands/audience/remove.cjs +72 -0
  78. package/dist/commands/audience/search.cjs +106 -0
  79. package/dist/commands/audience/timelines.cjs +115 -0
  80. package/dist/commands/audience/unregister.cjs +65 -0
  81. package/dist/commands/auth/credentials.cjs +89 -0
  82. package/dist/commands/auth/status.cjs +34 -0
  83. package/dist/commands/category/create.cjs +80 -0
  84. package/dist/commands/category/delete.cjs +70 -0
  85. package/dist/commands/category/index.cjs +11 -0
  86. package/dist/commands/category/list.cjs +98 -0
  87. package/dist/commands/category/update.cjs +134 -0
  88. package/dist/commands/collector/exclude.cjs +56 -0
  89. package/dist/commands/collector/include.cjs +56 -0
  90. package/dist/commands/collector/list.cjs +81 -0
  91. package/dist/commands/comment/add.cjs +102 -0
  92. package/dist/commands/comment/clone.cjs +59 -0
  93. package/dist/commands/comment/delete.cjs +55 -0
  94. package/dist/commands/comment/list.cjs +126 -0
  95. package/dist/commands/comment/promote.cjs +65 -0
  96. package/dist/commands/comment/reaction/add.cjs +81 -0
  97. package/dist/commands/comment/reaction/list.cjs +92 -0
  98. package/dist/commands/comment/reaction/remove.cjs +81 -0
  99. package/dist/commands/comment/set-order.cjs +63 -0
  100. package/dist/commands/comment/update.cjs +63 -0
  101. package/dist/commands/doctor.cjs +129 -0
  102. package/dist/commands/openupload/list.cjs +95 -0
  103. package/dist/commands/openupload/update-file.cjs +85 -0
  104. package/dist/commands/openupload/upload-file.cjs +130 -0
  105. package/dist/commands/player/delete.cjs +66 -0
  106. package/dist/commands/player/embed-versions.cjs +83 -0
  107. package/dist/commands/player/embed.cjs +134 -0
  108. package/dist/commands/player/list.cjs +86 -0
  109. package/dist/commands/player/styles.cjs +70 -0
  110. package/dist/commands/player/update.cjs +80 -0
  111. package/dist/commands/poll/add.cjs +84 -0
  112. package/dist/commands/poll/answer.cjs +89 -0
  113. package/dist/commands/poll/list.cjs +92 -0
  114. package/dist/commands/poll/remove.cjs +57 -0
  115. package/dist/commands/poll/set-options.cjs +84 -0
  116. package/dist/commands/poll/update.cjs +79 -0
  117. package/dist/commands/presentation/page/link-locations.cjs +57 -0
  118. package/dist/commands/presentation/setting/list.cjs +44 -0
  119. package/dist/commands/presentation/setting/update.cjs +67 -0
  120. package/dist/commands/protection/protect.cjs +68 -0
  121. package/dist/commands/protection/unprotect.cjs +65 -0
  122. package/dist/commands/protection/verify.cjs +80 -0
  123. package/dist/commands/session/get-token.cjs +75 -0
  124. package/dist/commands/session/redeem-token.cjs +56 -0
  125. package/dist/commands/setting/update.cjs +79 -0
  126. package/dist/commands/site/get.cjs +73 -0
  127. package/dist/commands/site/search.cjs +93 -0
  128. package/dist/commands/spot/check.cjs +52 -0
  129. package/dist/commands/spot/create.cjs +79 -0
  130. package/dist/commands/spot/delete.cjs +68 -0
  131. package/dist/commands/spot/list.cjs +120 -0
  132. package/dist/commands/spot/reset-version.cjs +53 -0
  133. package/dist/commands/spot/set-videos.cjs +64 -0
  134. package/dist/commands/spot/update.cjs +78 -0
  135. package/dist/commands/tag/list.cjs +98 -0
  136. package/dist/commands/tag/related.cjs +57 -0
  137. package/dist/commands/thumbnail/add.cjs +66 -0
  138. package/dist/commands/thumbnail/data.cjs +60 -0
  139. package/dist/commands/thumbnail/delete.cjs +61 -0
  140. package/dist/commands/thumbnail/duplicate.cjs +67 -0
  141. package/dist/commands/thumbnail/file/delete.cjs +71 -0
  142. package/dist/commands/thumbnail/file/list.cjs +74 -0
  143. package/dist/commands/thumbnail/file/upload.cjs +79 -0
  144. package/dist/commands/thumbnail/index.cjs +11 -0
  145. package/dist/commands/thumbnail/list.cjs +89 -0
  146. package/dist/commands/thumbnail/update.cjs +87 -0
  147. package/dist/commands/user/create.cjs +87 -0
  148. package/dist/commands/user/get-login-token.cjs +72 -0
  149. package/dist/commands/user/get.cjs +67 -0
  150. package/dist/commands/user/list.cjs +95 -0
  151. package/dist/commands/user/redeem-login-token.cjs +55 -0
  152. package/dist/commands/user/send-invitation.cjs +63 -0
  153. package/dist/commands/user/tokens.cjs +80 -0
  154. package/dist/commands/user/update.cjs +121 -0
  155. package/dist/commands/video/delete.cjs +67 -0
  156. package/dist/commands/video/frame.cjs +69 -0
  157. package/dist/commands/video/get.cjs +68 -0
  158. package/dist/commands/video/index.cjs +11 -0
  159. package/dist/commands/video/list.cjs +98 -0
  160. package/dist/commands/video/replace.cjs +126 -0
  161. package/dist/commands/video/section/create.cjs +73 -0
  162. package/dist/commands/video/section/delete.cjs +78 -0
  163. package/dist/commands/video/section/index.cjs +11 -0
  164. package/dist/commands/video/section/list.cjs +75 -0
  165. package/dist/commands/video/section/set-thumbnail.cjs +73 -0
  166. package/dist/commands/video/section/update.cjs +84 -0
  167. package/dist/commands/video/subtitle/archive.cjs +76 -0
  168. package/dist/commands/video/subtitle/create.cjs +80 -0
  169. package/dist/commands/video/subtitle/data.cjs +75 -0
  170. package/dist/commands/video/subtitle/delete.cjs +84 -0
  171. package/dist/commands/video/subtitle/duplicate.cjs +89 -0
  172. package/dist/commands/video/subtitle/index.cjs +11 -0
  173. package/dist/commands/video/subtitle/list.cjs +94 -0
  174. package/dist/commands/video/subtitle/locales.cjs +60 -0
  175. package/dist/commands/video/subtitle/set-primary.cjs +64 -0
  176. package/dist/commands/video/subtitle/types.cjs +42 -0
  177. package/dist/commands/video/subtitle/update.cjs +93 -0
  178. package/dist/commands/video/subtitle/upload.cjs +104 -0
  179. package/dist/commands/video/transcoding-progress.cjs +71 -0
  180. package/dist/commands/video/update.cjs +184 -0
  181. package/dist/commands/video/upload.cjs +151 -0
  182. package/dist/commands/webhook/events.cjs +68 -0
  183. package/dist/commands/webhook/list.cjs +64 -0
  184. package/dist/commands/webhook/sample.cjs +47 -0
  185. package/dist/commands/webhook/subscribe.cjs +66 -0
  186. package/dist/commands/webhook/unsubscribe.cjs +71 -0
  187. package/dist/commands/webinar/attachment/delete.cjs +79 -0
  188. package/dist/commands/webinar/attachment/list.cjs +94 -0
  189. package/dist/commands/webinar/attachment/set-hidden.cjs +85 -0
  190. package/dist/commands/webinar/attachment/upload.cjs +128 -0
  191. package/dist/commands/webinar/clips.cjs +77 -0
  192. package/dist/commands/webinar/create.cjs +107 -0
  193. package/dist/commands/webinar/delete.cjs +62 -0
  194. package/dist/commands/webinar/highlights.cjs +84 -0
  195. package/dist/commands/webinar/index.cjs +11 -0
  196. package/dist/commands/webinar/list-formats.cjs +50 -0
  197. package/dist/commands/webinar/list.cjs +134 -0
  198. package/dist/commands/webinar/log.cjs +69 -0
  199. package/dist/commands/webinar/mail/add.cjs +101 -0
  200. package/dist/commands/webinar/mail/list.cjs +83 -0
  201. package/dist/commands/webinar/mail/preview.cjs +75 -0
  202. package/dist/commands/webinar/mail/remove.cjs +75 -0
  203. package/dist/commands/webinar/mail/send.cjs +68 -0
  204. package/dist/commands/webinar/mail/test.cjs +86 -0
  205. package/dist/commands/webinar/mail/update.cjs +84 -0
  206. package/dist/commands/webinar/metrics.cjs +59 -0
  207. package/dist/commands/webinar/queued-video/add.cjs +81 -0
  208. package/dist/commands/webinar/queued-video/remove.cjs +81 -0
  209. package/dist/commands/webinar/recording/split.cjs +53 -0
  210. package/dist/commands/webinar/recording/start.cjs +53 -0
  211. package/dist/commands/webinar/recording/status.cjs +52 -0
  212. package/dist/commands/webinar/recording/stop.cjs +53 -0
  213. package/dist/commands/webinar/repeat.cjs +65 -0
  214. package/dist/commands/webinar/room/connect.cjs +60 -0
  215. package/dist/commands/webinar/room/info.cjs +60 -0
  216. package/dist/commands/webinar/room/send-recording.cjs +59 -0
  217. package/dist/commands/webinar/room/themes.cjs +63 -0
  218. package/dist/commands/webinar/section/add.cjs +98 -0
  219. package/dist/commands/webinar/section/list.cjs +86 -0
  220. package/dist/commands/webinar/section/remove.cjs +75 -0
  221. package/dist/commands/webinar/section/update.cjs +85 -0
  222. package/dist/commands/webinar/series/apply-recurrence.cjs +68 -0
  223. package/dist/commands/webinar/series/cancel.cjs +73 -0
  224. package/dist/commands/webinar/series/create.cjs +80 -0
  225. package/dist/commands/webinar/series/delete.cjs +73 -0
  226. package/dist/commands/webinar/series/list.cjs +79 -0
  227. package/dist/commands/webinar/series/mapped-objects.cjs +69 -0
  228. package/dist/commands/webinar/series/metrics.cjs +57 -0
  229. package/dist/commands/webinar/series/recurrences.cjs +72 -0
  230. package/dist/commands/webinar/series/set-ondemand.cjs +67 -0
  231. package/dist/commands/webinar/series/skip-recurrence.cjs +79 -0
  232. package/dist/commands/webinar/series/update.cjs +71 -0
  233. package/dist/commands/webinar/series/upload-thumbnail.cjs +117 -0
  234. package/dist/commands/webinar/speaker/add-from-speaker.cjs +78 -0
  235. package/dist/commands/webinar/speaker/add-from-user.cjs +78 -0
  236. package/dist/commands/webinar/speaker/add.cjs +112 -0
  237. package/dist/commands/webinar/speaker/cancel-guest-request.cjs +62 -0
  238. package/dist/commands/webinar/speaker/connection-types.cjs +66 -0
  239. package/dist/commands/webinar/speaker/library.cjs +59 -0
  240. package/dist/commands/webinar/speaker/list.cjs +90 -0
  241. package/dist/commands/webinar/speaker/remove-avatar.cjs +62 -0
  242. package/dist/commands/webinar/speaker/remove.cjs +69 -0
  243. package/dist/commands/webinar/speaker/request-guest.cjs +62 -0
  244. package/dist/commands/webinar/speaker/send-invitation.cjs +62 -0
  245. package/dist/commands/webinar/speaker/set-avatar.cjs +130 -0
  246. package/dist/commands/webinar/speaker/set-order.cjs +95 -0
  247. package/dist/commands/webinar/speaker/update.cjs +90 -0
  248. package/dist/commands/webinar/transcription/connect.cjs +69 -0
  249. package/dist/commands/webinar/transcription/list.cjs +88 -0
  250. package/dist/commands/webinar/transcription/locales.cjs +76 -0
  251. package/dist/commands/webinar/transcription/transcriptionlist.cjs +67 -0
  252. package/dist/commands/webinar/update.cjs +192 -0
  253. package/dist/commands/webinar/upload-image.cjs +133 -0
  254. package/dist/commands/workspace/list.cjs +47 -0
  255. package/dist/commands/workspace/use.cjs +52 -0
  256. package/dist/index.cjs +6 -0
  257. package/dist/lib/analytics-flags.cjs +60 -0
  258. package/dist/lib/audit.cjs +44 -0
  259. package/dist/lib/base-command.cjs +156 -0
  260. package/dist/lib/output.cjs +82 -0
  261. package/dist/lib/pagination.cjs +36 -0
  262. package/dist/lib/term-map.cjs +48 -0
  263. package/dist/upload/chunk-pool.cjs +47 -0
  264. package/dist/upload/chunked-upload.cjs +131 -0
  265. package/dist/upload/types.cjs +9 -0
  266. package/docs/commands/README.md +31 -0
  267. package/docs/commands/action/add.md +36 -0
  268. package/docs/commands/action/delete.md +32 -0
  269. package/docs/commands/action/exclude.md +38 -0
  270. package/docs/commands/action/get.md +47 -0
  271. package/docs/commands/action/include.md +38 -0
  272. package/docs/commands/action/list.md +43 -0
  273. package/docs/commands/action/types.md +34 -0
  274. package/docs/commands/action/update.md +42 -0
  275. package/docs/commands/action/upload.md +36 -0
  276. package/docs/commands/action.md +306 -0
  277. package/docs/commands/analytics/conversions.md +113 -0
  278. package/docs/commands/analytics/live.md +338 -0
  279. package/docs/commands/analytics/usage.md +674 -0
  280. package/docs/commands/analytics/video.md +449 -0
  281. package/docs/commands/analytics.md +1559 -0
  282. package/docs/commands/app/add.md +38 -0
  283. package/docs/commands/app/delete.md +32 -0
  284. package/docs/commands/app/update.md +41 -0
  285. package/docs/commands/app.md +101 -0
  286. package/docs/commands/audience/companies.md +41 -0
  287. package/docs/commands/audience/field.md +119 -0
  288. package/docs/commands/audience/funnel.md +38 -0
  289. package/docs/commands/audience/identity-sources.md +29 -0
  290. package/docs/commands/audience/list-collectors.md +35 -0
  291. package/docs/commands/audience/list.md +42 -0
  292. package/docs/commands/audience/metrics.md +40 -0
  293. package/docs/commands/audience/register.md +45 -0
  294. package/docs/commands/audience/remove.md +35 -0
  295. package/docs/commands/audience/search.md +39 -0
  296. package/docs/commands/audience/timelines.md +41 -0
  297. package/docs/commands/audience/unregister.md +36 -0
  298. package/docs/commands/audience.md +485 -0
  299. package/docs/commands/auth/credentials.md +23 -0
  300. package/docs/commands/auth/status.md +27 -0
  301. package/docs/commands/auth.md +45 -0
  302. package/docs/commands/category/create.md +36 -0
  303. package/docs/commands/category/delete.md +32 -0
  304. package/docs/commands/category/list.md +34 -0
  305. package/docs/commands/category/update.md +39 -0
  306. package/docs/commands/category.md +141 -0
  307. package/docs/commands/collector/exclude.md +33 -0
  308. package/docs/commands/collector/include.md +33 -0
  309. package/docs/commands/collector/list.md +37 -0
  310. package/docs/commands/collector.md +93 -0
  311. package/docs/commands/comment/add.md +43 -0
  312. package/docs/commands/comment/clone.md +35 -0
  313. package/docs/commands/comment/delete.md +32 -0
  314. package/docs/commands/comment/list.md +42 -0
  315. package/docs/commands/comment/promote.md +37 -0
  316. package/docs/commands/comment/reaction.md +106 -0
  317. package/docs/commands/comment/set-order.md +34 -0
  318. package/docs/commands/comment/update.md +36 -0
  319. package/docs/commands/comment.md +330 -0
  320. package/docs/commands/doctor.md +28 -0
  321. package/docs/commands/openupload/list.md +36 -0
  322. package/docs/commands/openupload/update-file.md +40 -0
  323. package/docs/commands/openupload/upload-file.md +39 -0
  324. package/docs/commands/openupload.md +105 -0
  325. package/docs/commands/player/delete.md +32 -0
  326. package/docs/commands/player/embed-versions.md +34 -0
  327. package/docs/commands/player/embed.md +51 -0
  328. package/docs/commands/player/list.md +32 -0
  329. package/docs/commands/player/styles.md +32 -0
  330. package/docs/commands/player/update.md +37 -0
  331. package/docs/commands/player.md +193 -0
  332. package/docs/commands/poll/add.md +33 -0
  333. package/docs/commands/poll/answer.md +38 -0
  334. package/docs/commands/poll/list.md +33 -0
  335. package/docs/commands/poll/remove.md +32 -0
  336. package/docs/commands/poll/set-options.md +35 -0
  337. package/docs/commands/poll/update.md +41 -0
  338. package/docs/commands/poll.md +187 -0
  339. package/docs/commands/presentation/page.md +29 -0
  340. package/docs/commands/presentation/setting.md +58 -0
  341. package/docs/commands/presentation.md +82 -0
  342. package/docs/commands/protection/protect.md +37 -0
  343. package/docs/commands/protection/unprotect.md +34 -0
  344. package/docs/commands/protection/verify.md +39 -0
  345. package/docs/commands/protection.md +100 -0
  346. package/docs/commands/session/get-token.md +38 -0
  347. package/docs/commands/session/redeem-token.md +32 -0
  348. package/docs/commands/session.md +65 -0
  349. package/docs/commands/setting/update.md +37 -0
  350. package/docs/commands/setting.md +37 -0
  351. package/docs/commands/site/get.md +35 -0
  352. package/docs/commands/site/search.md +38 -0
  353. package/docs/commands/site.md +68 -0
  354. package/docs/commands/spot/check.md +32 -0
  355. package/docs/commands/spot/create.md +38 -0
  356. package/docs/commands/spot/delete.md +32 -0
  357. package/docs/commands/spot/list.md +43 -0
  358. package/docs/commands/spot/reset-version.md +32 -0
  359. package/docs/commands/spot/set-videos.md +35 -0
  360. package/docs/commands/spot/update.md +40 -0
  361. package/docs/commands/spot.md +222 -0
  362. package/docs/commands/tag/list.md +44 -0
  363. package/docs/commands/tag/related.md +32 -0
  364. package/docs/commands/tag.md +71 -0
  365. package/docs/commands/thumbnail/add.md +33 -0
  366. package/docs/commands/thumbnail/data.md +35 -0
  367. package/docs/commands/thumbnail/delete.md +32 -0
  368. package/docs/commands/thumbnail/duplicate.md +37 -0
  369. package/docs/commands/thumbnail/file.md +90 -0
  370. package/docs/commands/thumbnail/list.md +37 -0
  371. package/docs/commands/thumbnail/update.md +44 -0
  372. package/docs/commands/thumbnail.md +293 -0
  373. package/docs/commands/user/create.md +41 -0
  374. package/docs/commands/user/get-login-token.md +37 -0
  375. package/docs/commands/user/get.md +37 -0
  376. package/docs/commands/user/list.md +40 -0
  377. package/docs/commands/user/redeem-login-token.md +32 -0
  378. package/docs/commands/user/send-invitation.md +37 -0
  379. package/docs/commands/user/tokens.md +34 -0
  380. package/docs/commands/user/update.md +44 -0
  381. package/docs/commands/user.md +267 -0
  382. package/docs/commands/video/delete.md +32 -0
  383. package/docs/commands/video/frame.md +37 -0
  384. package/docs/commands/video/get.md +32 -0
  385. package/docs/commands/video/list.md +33 -0
  386. package/docs/commands/video/replace.md +37 -0
  387. package/docs/commands/video/section.md +177 -0
  388. package/docs/commands/video/subtitle.md +362 -0
  389. package/docs/commands/video/transcoding-progress.md +32 -0
  390. package/docs/commands/video/update.md +45 -0
  391. package/docs/commands/video/upload.md +44 -0
  392. package/docs/commands/video.md +801 -0
  393. package/docs/commands/webhook/events.md +34 -0
  394. package/docs/commands/webhook/list.md +29 -0
  395. package/docs/commands/webhook/sample.md +32 -0
  396. package/docs/commands/webhook/subscribe.md +33 -0
  397. package/docs/commands/webhook/unsubscribe.md +35 -0
  398. package/docs/commands/webhook.md +143 -0
  399. package/docs/commands/webinar/attachment.md +135 -0
  400. package/docs/commands/webinar/clips.md +32 -0
  401. package/docs/commands/webinar/create.md +40 -0
  402. package/docs/commands/webinar/delete.md +32 -0
  403. package/docs/commands/webinar/highlights.md +37 -0
  404. package/docs/commands/webinar/list-formats.md +29 -0
  405. package/docs/commands/webinar/list.md +41 -0
  406. package/docs/commands/webinar/log.md +32 -0
  407. package/docs/commands/webinar/mail.md +238 -0
  408. package/docs/commands/webinar/metrics.md +32 -0
  409. package/docs/commands/webinar/queued-video.md +65 -0
  410. package/docs/commands/webinar/recording.md +113 -0
  411. package/docs/commands/webinar/repeat.md +35 -0
  412. package/docs/commands/webinar/room.md +110 -0
  413. package/docs/commands/webinar/section.md +134 -0
  414. package/docs/commands/webinar/series.md +365 -0
  415. package/docs/commands/webinar/speaker.md +430 -0
  416. package/docs/commands/webinar/transcription.md +125 -0
  417. package/docs/commands/webinar/update.md +43 -0
  418. package/docs/commands/webinar/upload-image.md +42 -0
  419. package/docs/commands/webinar.md +2030 -0
  420. package/docs/commands/workspace/list.md +27 -0
  421. package/docs/commands/workspace/use.md +32 -0
  422. package/docs/commands/workspace.md +54 -0
  423. package/docs/guides/api-spec-upgrade.md +92 -0
  424. package/docs/guides/getting-started.md +66 -0
  425. package/oclif.manifest.json +21609 -0
  426. package/package.json +71 -0
@@ -0,0 +1,73 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ //#region src/commands/video/section/set-thumbnail.ts
9
+ /**
10
+ * Video section set-thumbnail command — sets the thumbnail for a section.
11
+ */
12
+ var VideoSectionSetThumbnail = class VideoSectionSetThumbnail extends require_lib_base_command.AuthenticatedCommand {
13
+ static description = "Set the thumbnail for a video section";
14
+ static examples = [
15
+ "<%= config.bin %> video section set-thumbnail 12345 --section-id 67",
16
+ "<%= config.bin %> video section set-thumbnail 12345 --section-id 67 --time 15",
17
+ "<%= config.bin %> video section set-thumbnail 12345 --section-id 67 --time 15 --json"
18
+ ];
19
+ static enableJsonFlag = true;
20
+ static agentMetadata = {
21
+ api_endpoint: "POST /photo/section/set-thumbnail",
22
+ auth_scope: "write",
23
+ output_shape: { type: "key-value" },
24
+ side_effects: "updates"
25
+ };
26
+ static flags = {
27
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
28
+ "section-id": _oclif_core.Flags.string({
29
+ description: "Section ID",
30
+ required: true
31
+ }),
32
+ time: _oclif_core.Flags.integer({
33
+ description: "Time offset in seconds for the thumbnail frame",
34
+ required: false
35
+ })
36
+ };
37
+ static args = { id: _oclif_core.Args.string({
38
+ description: "Video ID",
39
+ required: true
40
+ }) };
41
+ async run() {
42
+ const { args, flags } = await this.parse(VideoSectionSetThumbnail);
43
+ this.printWorkspaceHeader();
44
+ const { data, error } = await this.apiClient.POST("/photo/section/set-thumbnail", {
45
+ body: {
46
+ photo_id: Number(args.id),
47
+ section_id: flags["section-id"],
48
+ ...flags.time !== void 0 && { time: flags.time }
49
+ },
50
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
51
+ });
52
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
53
+ this.log(chalk.default.green(`Thumbnail set for section ${flags["section-id"]} of video ${args.id}`));
54
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
55
+ ok: true,
56
+ data,
57
+ summary: `Thumbnail set for section ${flags["section-id"]} of video ${args.id}`,
58
+ breadcrumbs: [
59
+ { domain: this.activeWorkspace.domain },
60
+ {
61
+ resource: "video",
62
+ id: args.id
63
+ },
64
+ {
65
+ resource: "section",
66
+ id: flags["section-id"]
67
+ }
68
+ ]
69
+ });
70
+ }
71
+ };
72
+ //#endregion
73
+ module.exports = VideoSectionSetThumbnail;
@@ -0,0 +1,84 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ //#region src/commands/video/section/update.ts
9
+ /**
10
+ * Video section update command — updates an existing section for a video.
11
+ *
12
+ * Threat mitigations:
13
+ * T-03-12: Only sends fields explicitly provided by the user — prevents
14
+ * clearing fields with undefined.
15
+ */
16
+ var VideoSectionUpdate = class VideoSectionUpdate extends require_lib_base_command.AuthenticatedCommand {
17
+ static description = "Update an existing section for a video";
18
+ static examples = ["<%= config.bin %> video section update 12345 --section-id 67 --title \"New Title\"", "<%= config.bin %> video section update 12345 --section-id 67 --start-time 45 --description \"Updated\""];
19
+ static enableJsonFlag = true;
20
+ static agentMetadata = {
21
+ api_endpoint: "POST /photo/section/update",
22
+ auth_scope: "write",
23
+ output_shape: { type: "key-value" },
24
+ side_effects: "updates"
25
+ };
26
+ static flags = {
27
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
28
+ "section-id": _oclif_core.Flags.string({
29
+ description: "Section ID to update",
30
+ required: true
31
+ }),
32
+ title: _oclif_core.Flags.string({
33
+ description: "New section title",
34
+ required: false
35
+ }),
36
+ "start-time": _oclif_core.Flags.integer({
37
+ description: "New start time in seconds",
38
+ required: false
39
+ }),
40
+ description: _oclif_core.Flags.string({
41
+ description: "New section description",
42
+ required: false
43
+ })
44
+ };
45
+ static args = { id: _oclif_core.Args.string({
46
+ description: "Video ID",
47
+ required: true
48
+ }) };
49
+ async run() {
50
+ const { args, flags } = await this.parse(VideoSectionUpdate);
51
+ this.printWorkspaceHeader();
52
+ const body = {
53
+ photo_id: Number(args.id),
54
+ section_id: flags["section-id"]
55
+ };
56
+ if (flags.title !== void 0) body.title = flags.title;
57
+ if (flags["start-time"] !== void 0) body.start_time = flags["start-time"];
58
+ if (flags.description !== void 0) body.description = flags.description;
59
+ const { data, error } = await this.apiClient.POST("/photo/section/update", {
60
+ body,
61
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
62
+ });
63
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
64
+ this.log(chalk.default.green(`Section ${flags["section-id"]} updated`));
65
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
66
+ ok: true,
67
+ data,
68
+ summary: `Section ${flags["section-id"]} updated for video ${args.id}`,
69
+ breadcrumbs: [
70
+ { domain: this.activeWorkspace.domain },
71
+ {
72
+ resource: "video",
73
+ id: args.id
74
+ },
75
+ {
76
+ resource: "section",
77
+ id: flags["section-id"]
78
+ }
79
+ ]
80
+ });
81
+ }
82
+ };
83
+ //#endregion
84
+ module.exports = VideoSectionUpdate;
@@ -0,0 +1,76 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ //#region src/commands/video/subtitle/archive.ts
9
+ /**
10
+ * Video subtitle archive command — triggers workspace-level subtitle archive transcription
11
+ * or checks transcription progress.
12
+ *
13
+ * Without --progress: POST /photo/subtitle/archive/transcribe
14
+ * Queues all eligible workspace videos for automatic transcription.
15
+ *
16
+ * With --progress: POST /photo/subtitle/archive/get-progress
17
+ * Returns a breakdown of the archive transcription queue by status.
18
+ *
19
+ * Both operations are workspace-level (not video-specific).
20
+ */
21
+ var VideoSubtitleArchive = class VideoSubtitleArchive extends require_lib_base_command.AuthenticatedCommand {
22
+ static description = "Manage workspace subtitle archive transcription";
23
+ static examples = [
24
+ "<%= config.bin %> video subtitle archive",
25
+ "<%= config.bin %> video subtitle archive --progress",
26
+ "<%= config.bin %> video subtitle archive --progress --json"
27
+ ];
28
+ static enableJsonFlag = true;
29
+ static agentMetadata = {
30
+ api_endpoint: "POST /photo/subtitle/archive/transcribe",
31
+ auth_scope: "write",
32
+ output_shape: { type: "key-value" },
33
+ side_effects: "creates"
34
+ };
35
+ static flags = {
36
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
37
+ progress: _oclif_core.Flags.boolean({
38
+ description: "Check transcription progress instead of triggering transcription",
39
+ default: false
40
+ })
41
+ };
42
+ async run() {
43
+ const { flags } = await this.parse(VideoSubtitleArchive);
44
+ this.printWorkspaceHeader();
45
+ if (flags.progress) {
46
+ const { data, error } = await this.apiClient.POST("/photo/subtitle/archive/get-progress", {
47
+ body: {},
48
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
49
+ });
50
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
51
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
52
+ ok: true,
53
+ data,
54
+ summary: "Subtitle archive transcription progress",
55
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "subtitle-archive" }]
56
+ });
57
+ const progress = data?.data ?? data;
58
+ this.log(JSON.stringify(progress, null, 2));
59
+ } else {
60
+ const { data, error } = await this.apiClient.POST("/photo/subtitle/archive/transcribe", {
61
+ body: {},
62
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
63
+ });
64
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
65
+ this.log(chalk.default.green("Transcription started for all videos in the workspace archive"));
66
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
67
+ ok: true,
68
+ data,
69
+ summary: "Transcription started for all videos in the workspace archive",
70
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "subtitle-archive" }]
71
+ });
72
+ }
73
+ }
74
+ };
75
+ //#endregion
76
+ module.exports = VideoSubtitleArchive;
@@ -0,0 +1,80 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ //#region src/commands/video/subtitle/create.ts
9
+ /**
10
+ * Video subtitle create command — creates a new subtitle track for a video.
11
+ */
12
+ var VideoSubtitleCreate = class VideoSubtitleCreate extends require_lib_base_command.AuthenticatedCommand {
13
+ static description = "Create a new subtitle track for a video";
14
+ static examples = [
15
+ "<%= config.bin %> video subtitle create 12345 --locale en_US",
16
+ "<%= config.bin %> video subtitle create 12345 --locale fr_FR --type closedcaptions",
17
+ "<%= config.bin %> video subtitle create 12345 --locale auto --draft"
18
+ ];
19
+ static enableJsonFlag = true;
20
+ static agentMetadata = {
21
+ api_endpoint: "POST /photo/subtitle/create",
22
+ auth_scope: "write",
23
+ output_shape: { type: "key-value" },
24
+ side_effects: "creates"
25
+ };
26
+ static flags = {
27
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
28
+ locale: _oclif_core.Flags.string({
29
+ description: "Locale for the subtitle track (e.g. en_US, fr_FR, auto)",
30
+ required: true
31
+ }),
32
+ type: _oclif_core.Flags.string({
33
+ description: "Subtitle type (general, closedcaptions, audiodescriptions)",
34
+ default: "general"
35
+ }),
36
+ draft: _oclif_core.Flags.boolean({
37
+ description: "Create the subtitle track as a draft (hidden from viewers)",
38
+ allowNo: true,
39
+ required: false
40
+ }),
41
+ "draft-p": _oclif_core.Flags.string({
42
+ hidden: true,
43
+ required: false
44
+ })
45
+ };
46
+ static args = { id: _oclif_core.Args.string({
47
+ description: "Video ID",
48
+ required: true
49
+ }) };
50
+ async run() {
51
+ const { args, flags } = await this.parse(VideoSubtitleCreate);
52
+ this.printWorkspaceHeader();
53
+ const { data, error } = await this.apiClient.POST("/photo/subtitle/create", {
54
+ body: {
55
+ photo_id: Number(args.id),
56
+ locale: flags.locale,
57
+ type: flags.type,
58
+ ...parseBoolParam(flags.draft, flags["draft-p"]) !== void 0 && { draft_p: parseBoolParam(flags.draft, flags["draft-p"]) }
59
+ },
60
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
61
+ });
62
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
63
+ this.log(chalk.default.green(`Subtitle track created for video ${args.id} (locale: ${flags.locale})`));
64
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
65
+ ok: true,
66
+ data,
67
+ summary: `Subtitle track created for video ${args.id} (locale: ${flags.locale})`,
68
+ breadcrumbs: [
69
+ { domain: this.activeWorkspace.domain },
70
+ {
71
+ resource: "video",
72
+ id: args.id
73
+ },
74
+ { resource: "subtitle" }
75
+ ]
76
+ });
77
+ }
78
+ };
79
+ //#endregion
80
+ module.exports = VideoSubtitleCreate;
@@ -0,0 +1,75 @@
1
+ require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ //#region src/commands/video/subtitle/data.ts
7
+ /**
8
+ * Video subtitle data command — retrieves the raw subtitle content (SRT/WebVTT) for a track.
9
+ */
10
+ var VideoSubtitleData = class VideoSubtitleData extends require_lib_base_command.AuthenticatedCommand {
11
+ static description = "Get raw subtitle content for a subtitle track";
12
+ static examples = [
13
+ "<%= config.bin %> video subtitle data 12345 --subtitle-id en_US",
14
+ "<%= config.bin %> video subtitle data 12345 --subtitle-id fr_FR --format websrt",
15
+ "<%= config.bin %> video subtitle data 12345 --subtitle-id en_US --json"
16
+ ];
17
+ static enableJsonFlag = true;
18
+ static agentMetadata = {
19
+ api_endpoint: "GET /photo/subtitle/data",
20
+ auth_scope: "read",
21
+ output_shape: { type: "key-value" },
22
+ side_effects: "none"
23
+ };
24
+ static flags = {
25
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
26
+ "subtitle-id": _oclif_core.Flags.string({
27
+ description: "Locale of the subtitle track to retrieve (e.g. en_US)",
28
+ required: true
29
+ }),
30
+ format: _oclif_core.Flags.string({
31
+ description: "Subtitle format (websrt, webvtt, json, adobe, subviewer)",
32
+ default: "websrt"
33
+ }),
34
+ type: _oclif_core.Flags.string({
35
+ description: "Subtitle type (general, closedcaptions, audiodescriptions)",
36
+ default: "general"
37
+ })
38
+ };
39
+ static args = { id: _oclif_core.Args.string({
40
+ description: "Video ID",
41
+ required: true
42
+ }) };
43
+ async run() {
44
+ const { args, flags } = await this.parse(VideoSubtitleData);
45
+ this.printWorkspaceHeader();
46
+ const { data, error } = await this.apiClient.GET("/photo/subtitle/data", { params: { query: {
47
+ photo_id: Number(args.id),
48
+ locale: flags["subtitle-id"],
49
+ subtitle_format: flags.format,
50
+ type: flags.type
51
+ } } });
52
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
53
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
54
+ ok: true,
55
+ data,
56
+ summary: `Subtitle data for video ${args.id} (locale: ${flags["subtitle-id"]})`,
57
+ breadcrumbs: [
58
+ { domain: this.activeWorkspace.domain },
59
+ {
60
+ resource: "video",
61
+ id: args.id
62
+ },
63
+ {
64
+ resource: "subtitle",
65
+ id: flags["subtitle-id"]
66
+ }
67
+ ]
68
+ });
69
+ const content = data?.subtitle ?? data?.data ?? "";
70
+ if (content) this.log(String(content));
71
+ else this.log(JSON.stringify(data, null, 2));
72
+ }
73
+ };
74
+ //#endregion
75
+ module.exports = VideoSubtitleData;
@@ -0,0 +1,84 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ let _clack_prompts = require("@clack/prompts");
9
+ //#region src/commands/video/subtitle/delete.ts
10
+ /**
11
+ * Video subtitle delete command — removes a subtitle track after confirmation.
12
+ *
13
+ * Posts to /photo/subtitle/remove (not /delete) — the API endpoint is /remove.
14
+ *
15
+ * Prompts user to confirm deletion showing workspace domain and subtitle locale
16
+ * so they know exactly what is being deleted (T-03-14 repudiation mitigation).
17
+ *
18
+ * --json flag skips the confirmation prompt (scripting mode — assume confirmed).
19
+ *
20
+ * Threat mitigations:
21
+ * T-03-14: Confirmation prompt includes workspace domain and subtitle locale
22
+ */
23
+ var VideoSubtitleDelete = class VideoSubtitleDelete extends require_lib_base_command.AuthenticatedCommand {
24
+ static description = "Delete a subtitle track from a video";
25
+ static examples = ["<%= config.bin %> video subtitle delete 12345 --subtitle-id en_US", "<%= config.bin %> video subtitle delete 12345 --subtitle-id en_US --json"];
26
+ static enableJsonFlag = true;
27
+ static agentMetadata = {
28
+ api_endpoint: "POST /photo/subtitle/remove",
29
+ auth_scope: "write",
30
+ output_shape: { type: "key-value" },
31
+ side_effects: "destructive"
32
+ };
33
+ static flags = {
34
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
35
+ "subtitle-id": _oclif_core.Flags.string({
36
+ description: "Locale of the subtitle track to delete (e.g. en_US)",
37
+ required: true
38
+ }),
39
+ type: _oclif_core.Flags.string({
40
+ description: "Subtitle type to delete (general, closedcaptions, audiodescriptions)",
41
+ default: "general"
42
+ })
43
+ };
44
+ static args = { id: _oclif_core.Args.string({
45
+ description: "Video ID",
46
+ required: true
47
+ }) };
48
+ async run() {
49
+ const { args, flags } = await this.parse(VideoSubtitleDelete);
50
+ this.printWorkspaceHeader();
51
+ if (!this.jsonEnabled()) {
52
+ const confirmed = await (0, _clack_prompts.confirm)({ message: `Delete subtitle track "${flags["subtitle-id"]}" from video ${args.id} on ${this.activeWorkspace.domain}?` });
53
+ if ((0, _clack_prompts.isCancel)(confirmed) || !confirmed) process.exit(2);
54
+ }
55
+ const { data, error } = await this.apiClient.POST("/photo/subtitle/remove", {
56
+ body: {
57
+ photo_id: Number(args.id),
58
+ locale: flags["subtitle-id"],
59
+ type: flags.type
60
+ },
61
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
62
+ });
63
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
64
+ this.log(chalk.default.green(`Subtitle track "${flags["subtitle-id"]}" deleted from video ${args.id}`));
65
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
66
+ ok: true,
67
+ data,
68
+ summary: `Subtitle track "${flags["subtitle-id"]}" deleted from video ${args.id}`,
69
+ breadcrumbs: [
70
+ { domain: this.activeWorkspace.domain },
71
+ {
72
+ resource: "video",
73
+ id: args.id
74
+ },
75
+ {
76
+ resource: "subtitle",
77
+ id: flags["subtitle-id"]
78
+ }
79
+ ]
80
+ });
81
+ }
82
+ };
83
+ //#endregion
84
+ module.exports = VideoSubtitleDelete;
@@ -0,0 +1,89 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ //#region src/commands/video/subtitle/duplicate.ts
9
+ /**
10
+ * Video subtitle duplicate command — duplicates a subtitle track to a new locale.
11
+ */
12
+ var VideoSubtitleDuplicate = class VideoSubtitleDuplicate extends require_lib_base_command.AuthenticatedCommand {
13
+ static description = "Duplicate a subtitle track to a new locale";
14
+ static examples = ["<%= config.bin %> video subtitle duplicate 12345 --subtitle-id en_US --target-locale fr_FR", "<%= config.bin %> video subtitle duplicate 12345 --subtitle-id en_US --target-locale de_DE --json"];
15
+ static enableJsonFlag = true;
16
+ static agentMetadata = {
17
+ api_endpoint: "POST /photo/subtitle/duplicate",
18
+ auth_scope: "write",
19
+ output_shape: { type: "key-value" },
20
+ side_effects: "creates"
21
+ };
22
+ static flags = {
23
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
24
+ "subtitle-id": _oclif_core.Flags.string({
25
+ description: "Source locale of the subtitle track to duplicate (e.g. en_US)",
26
+ required: true
27
+ }),
28
+ "target-locale": _oclif_core.Flags.string({
29
+ description: "Target locale for the duplicated subtitle track (e.g. fr_FR)",
30
+ required: true
31
+ }),
32
+ "source-type": _oclif_core.Flags.string({
33
+ description: "Source subtitle type (general, closedcaptions, audiodescriptions)",
34
+ default: "general"
35
+ }),
36
+ "target-type": _oclif_core.Flags.string({
37
+ description: "Target subtitle type (general, closedcaptions, audiodescriptions)",
38
+ default: "general"
39
+ }),
40
+ draft: _oclif_core.Flags.boolean({
41
+ description: "Create the duplicated track as a draft",
42
+ allowNo: true,
43
+ required: false
44
+ }),
45
+ "draft-p": _oclif_core.Flags.string({
46
+ hidden: true,
47
+ required: false
48
+ })
49
+ };
50
+ static args = { id: _oclif_core.Args.string({
51
+ description: "Video ID",
52
+ required: true
53
+ }) };
54
+ async run() {
55
+ const { args, flags } = await this.parse(VideoSubtitleDuplicate);
56
+ this.printWorkspaceHeader();
57
+ const { data, error } = await this.apiClient.POST("/photo/subtitle/duplicate", {
58
+ body: {
59
+ photo_id: Number(args.id),
60
+ from_locale: flags["subtitle-id"],
61
+ to_locale: flags["target-locale"],
62
+ type_from: flags["source-type"],
63
+ type_to: flags["target-type"],
64
+ ...parseBoolParam(flags.draft, flags["draft-p"]) !== void 0 && { draft_p: parseBoolParam(flags.draft, flags["draft-p"]) }
65
+ },
66
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
67
+ });
68
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
69
+ this.log(chalk.default.green(`Subtitle track "${flags["subtitle-id"]}" duplicated to "${flags["target-locale"]}" for video ${args.id}`));
70
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
71
+ ok: true,
72
+ data,
73
+ summary: `Subtitle track "${flags["subtitle-id"]}" duplicated to "${flags["target-locale"]}" for video ${args.id}`,
74
+ breadcrumbs: [
75
+ { domain: this.activeWorkspace.domain },
76
+ {
77
+ resource: "video",
78
+ id: args.id
79
+ },
80
+ {
81
+ resource: "subtitle",
82
+ id: flags["target-locale"]
83
+ }
84
+ ]
85
+ });
86
+ }
87
+ };
88
+ //#endregion
89
+ module.exports = VideoSubtitleDuplicate;
@@ -0,0 +1,11 @@
1
+ require("../../../_virtual/_rolldown/runtime.cjs");
2
+ let _oclif_core = require("@oclif/core");
3
+ //#region src/commands/video/subtitle/index.ts
4
+ var SubtitleIndex = class extends _oclif_core.Command {
5
+ static description = "Manage video subtitles and captions";
6
+ async run() {
7
+ this.log("Run \"twentythree video subtitle --help\" for available commands");
8
+ }
9
+ };
10
+ //#endregion
11
+ module.exports = SubtitleIndex;
@@ -0,0 +1,94 @@
1
+ require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ //#region src/commands/video/subtitle/list.ts
7
+ /**
8
+ * Video subtitle list command — lists all subtitle tracks for a video.
9
+ */
10
+ var VideoSubtitleList = class VideoSubtitleList extends require_lib_base_command.AuthenticatedCommand {
11
+ static description = "List all subtitle tracks for a video";
12
+ static examples = [
13
+ "<%= config.bin %> video subtitle list 12345",
14
+ "<%= config.bin %> video subtitle list 12345 --json",
15
+ "<%= config.bin %> video subtitle list 12345 --include-drafts"
16
+ ];
17
+ static enableJsonFlag = true;
18
+ static agentMetadata = {
19
+ api_endpoint: "GET /photo/subtitle/list",
20
+ auth_scope: "read",
21
+ output_shape: {
22
+ type: "table",
23
+ columns: [
24
+ "Locale",
25
+ "Language",
26
+ "Type",
27
+ "Status",
28
+ "Primary"
29
+ ]
30
+ },
31
+ side_effects: "none"
32
+ };
33
+ static flags = {
34
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
35
+ "include-drafts": _oclif_core.Flags.boolean({
36
+ description: "Include draft (unpublished) subtitle tracks",
37
+ allowNo: true,
38
+ required: false
39
+ }),
40
+ "include-drafts-p": _oclif_core.Flags.string({
41
+ hidden: true,
42
+ required: false
43
+ })
44
+ };
45
+ static args = { id: _oclif_core.Args.string({
46
+ description: "Video ID",
47
+ required: true
48
+ }) };
49
+ async run() {
50
+ const { args, flags } = await this.parse(VideoSubtitleList);
51
+ this.printWorkspaceHeader();
52
+ const token = await this.fetchVideoToken(args.id);
53
+ const { data, error } = await this.apiClient.GET("/photo/subtitle/list", { params: { query: {
54
+ photo_id: Number(args.id),
55
+ token,
56
+ ...parseBoolParam(flags["include-drafts"], flags["include-drafts-p"]) && { include_drafts_p: true }
57
+ } } });
58
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
59
+ const subtitles = data?.subtitles ?? data?.data ?? [];
60
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
61
+ ok: true,
62
+ data: subtitles,
63
+ summary: `Subtitles for video ${args.id}`,
64
+ breadcrumbs: [
65
+ { domain: this.activeWorkspace.domain },
66
+ {
67
+ resource: "video",
68
+ id: args.id
69
+ },
70
+ { resource: "subtitle" }
71
+ ]
72
+ });
73
+ if (subtitles.length === 0) {
74
+ this.log("No subtitle tracks found.");
75
+ return;
76
+ }
77
+ const table = require_lib_output.renderTable([
78
+ "Locale",
79
+ "Language",
80
+ "Type",
81
+ "Status",
82
+ "Primary"
83
+ ], subtitles.map((s) => [
84
+ String(s.locale ?? ""),
85
+ String(s.language ?? ""),
86
+ String(s.type ?? ""),
87
+ s.draft_p ? "draft" : "published",
88
+ s.default_p ? "yes" : "no"
89
+ ]));
90
+ this.log(table.toString());
91
+ }
92
+ };
93
+ //#endregion
94
+ module.exports = VideoSubtitleList;