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,66 @@
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/thumbnail/add.ts
9
+ /**
10
+ * Thumbnail template add command — creates a new thumbnail template.
11
+ *
12
+ * Maps to POST /thumbnail/template/add.
13
+ * Requires name and liquid_template.
14
+ *
15
+ * Threat mitigations:
16
+ * T-08-09: extends AuthenticatedCommand — anonymous mode rejected
17
+ */
18
+ var ThumbnailAdd = class ThumbnailAdd extends require_lib_base_command.AuthenticatedCommand {
19
+ static description = "Create a new thumbnail template";
20
+ static examples = ["<%= config.bin %> thumbnail add --name \"My Template\" --liquid-template \"<div>{{ video.title }}</div>\"", "<%= config.bin %> thumbnail add --name \"My Template\" --liquid-template \"<div>{{ video.title }}</div>\" --json"];
21
+ static enableJsonFlag = true;
22
+ static flags = {
23
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
24
+ name: _oclif_core.Flags.string({
25
+ description: "Name for the new thumbnail template",
26
+ required: true
27
+ }),
28
+ "liquid-template": _oclif_core.Flags.string({
29
+ description: "Liquid template content for the thumbnail",
30
+ required: true
31
+ })
32
+ };
33
+ static args = {};
34
+ static agentMetadata = {
35
+ api_endpoint: "POST /thumbnail/template/add",
36
+ auth_scope: "write",
37
+ output_shape: { type: "key-value" },
38
+ side_effects: "creates"
39
+ };
40
+ async run() {
41
+ const { flags } = await this.parse(ThumbnailAdd);
42
+ this.printWorkspaceHeader();
43
+ const { data: createData, error: createError } = await this.apiClient.POST("/thumbnail/template/add", {
44
+ body: {
45
+ name: flags.name,
46
+ liquid_template: flags["liquid-template"]
47
+ },
48
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
49
+ });
50
+ if (createError) this.error(require_lib_term_map.applyCliTerms(formatApiError(createError)), { exit: 1 });
51
+ const thumbnailTemplateId = createData?.data?.thumbnail_template_id;
52
+ this.log(chalk.default.green("Thumbnail template created"));
53
+ this.log(`ID: ${thumbnailTemplateId}`);
54
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
55
+ ok: true,
56
+ data: createData,
57
+ summary: "Thumbnail template created",
58
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
59
+ resource: "thumbnail",
60
+ id: String(thumbnailTemplateId)
61
+ }]
62
+ });
63
+ }
64
+ };
65
+ //#endregion
66
+ module.exports = ThumbnailAdd;
@@ -0,0 +1,60 @@
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/thumbnail/data.ts
7
+ /**
8
+ * Thumbnail template data command — retrieves the Liquid render data for a template + object.
9
+ *
10
+ * Maps to GET /thumbnail/template/data.
11
+ * Returns complex nested JSON (workspace, theme, brand tokens, object data) — not suitable
12
+ * for key-value output. Outputs raw JSON.stringify instead.
13
+ *
14
+ * Threat mitigations:
15
+ * T-08-09: extends AuthenticatedCommand — anonymous mode rejected
16
+ */
17
+ var ThumbnailData = class ThumbnailData extends require_lib_base_command.AuthenticatedCommand {
18
+ static description = "Get Liquid render data for a thumbnail template and object";
19
+ static examples = ["<%= config.bin %> thumbnail data 42 --object-id 12345", "<%= config.bin %> thumbnail data 42 --object-id 12345 --json"];
20
+ static enableJsonFlag = true;
21
+ static flags = {
22
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
23
+ "object-id": _oclif_core.Flags.string({
24
+ description: "Object ID to get template data for",
25
+ required: true
26
+ })
27
+ };
28
+ static args = { id: _oclif_core.Args.string({
29
+ description: "Thumbnail template ID",
30
+ required: true
31
+ }) };
32
+ static agentMetadata = {
33
+ api_endpoint: "GET /thumbnail/template/data",
34
+ auth_scope: "read",
35
+ output_shape: { type: "key-value" },
36
+ side_effects: "none"
37
+ };
38
+ async run() {
39
+ const { args, flags } = await this.parse(ThumbnailData);
40
+ this.printWorkspaceHeader();
41
+ const { data, error } = await this.apiClient.GET("/thumbnail/template/data", { params: { query: {
42
+ thumbnail_template_id: Number(args.id),
43
+ object_id: Number(flags["object-id"])
44
+ } } });
45
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
46
+ const resp = data;
47
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
48
+ ok: true,
49
+ data: resp?.data ?? resp,
50
+ summary: `Thumbnail template ${args.id} data for object ${flags["object-id"]}`,
51
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
52
+ resource: "thumbnail",
53
+ id: args.id
54
+ }]
55
+ });
56
+ this.log(JSON.stringify(resp?.data ?? resp, null, 2));
57
+ }
58
+ };
59
+ //#endregion
60
+ module.exports = ThumbnailData;
@@ -0,0 +1,61 @@
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/thumbnail/delete.ts
10
+ /**
11
+ * Thumbnail template delete command — deletes a thumbnail template after confirmation.
12
+ *
13
+ * Maps to POST /thumbnail/template/delete.
14
+ * Prompts user to confirm deletion with workspace domain (T-08-07 repudiation mitigation).
15
+ * --json flag skips the confirmation prompt (scripting mode — assume confirmed).
16
+ *
17
+ * Threat mitigations:
18
+ * T-08-07: Confirmation prompt includes workspace domain
19
+ * T-08-09: extends AuthenticatedCommand — anonymous mode rejected
20
+ */
21
+ var ThumbnailDelete = class ThumbnailDelete extends require_lib_base_command.AuthenticatedCommand {
22
+ static description = "Delete a thumbnail template from the active workspace";
23
+ static examples = ["<%= config.bin %> thumbnail delete 42", "<%= config.bin %> thumbnail delete 42 --json"];
24
+ static enableJsonFlag = true;
25
+ static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
26
+ static args = { id: _oclif_core.Args.string({
27
+ description: "Thumbnail template ID",
28
+ required: true
29
+ }) };
30
+ static agentMetadata = {
31
+ api_endpoint: "POST /thumbnail/template/delete",
32
+ auth_scope: "write",
33
+ output_shape: { type: "key-value" },
34
+ side_effects: "destructive"
35
+ };
36
+ async run() {
37
+ const { args } = await this.parse(ThumbnailDelete);
38
+ this.printWorkspaceHeader();
39
+ if (!this.jsonEnabled()) {
40
+ const confirmed = await (0, _clack_prompts.confirm)({ message: `Delete thumbnail template ${args.id} from ${this.activeWorkspace.domain}? This cannot be undone.` });
41
+ if ((0, _clack_prompts.isCancel)(confirmed) || !confirmed) process.exit(2);
42
+ }
43
+ const { data: deleteData, error: deleteError } = await this.apiClient.POST("/thumbnail/template/delete", {
44
+ body: { thumbnail_template_id: Number(args.id) },
45
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
46
+ });
47
+ if (deleteError) this.error(require_lib_term_map.applyCliTerms(formatApiError(deleteError)), { exit: 1 });
48
+ this.log(chalk.default.green(`Thumbnail template ${args.id} deleted`));
49
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
50
+ ok: true,
51
+ data: deleteData,
52
+ summary: `Thumbnail template ${args.id} deleted`,
53
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
54
+ resource: "thumbnail",
55
+ id: args.id
56
+ }]
57
+ });
58
+ }
59
+ };
60
+ //#endregion
61
+ module.exports = ThumbnailDelete;
@@ -0,0 +1,67 @@
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/thumbnail/duplicate.ts
9
+ /**
10
+ * Thumbnail template duplicate command — duplicates an existing thumbnail template.
11
+ *
12
+ * Maps to POST /thumbnail/template/duplicate.
13
+ * If name is omitted, the API names the copy with a ' (Copy)' suffix.
14
+ *
15
+ * Threat mitigations:
16
+ * T-08-09: extends AuthenticatedCommand — anonymous mode rejected
17
+ */
18
+ var ThumbnailDuplicate = class ThumbnailDuplicate extends require_lib_base_command.AuthenticatedCommand {
19
+ static description = "Duplicate a thumbnail template";
20
+ static examples = [
21
+ "<%= config.bin %> thumbnail duplicate 42",
22
+ "<%= config.bin %> thumbnail duplicate 42 --name \"My Copy\"",
23
+ "<%= config.bin %> thumbnail duplicate 42 --name \"My Copy\" --json"
24
+ ];
25
+ static enableJsonFlag = true;
26
+ static flags = {
27
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
28
+ name: _oclif_core.Flags.string({
29
+ description: "Name for the duplicate",
30
+ required: false
31
+ })
32
+ };
33
+ static args = { id: _oclif_core.Args.string({
34
+ description: "Thumbnail template ID",
35
+ required: true
36
+ }) };
37
+ static agentMetadata = {
38
+ api_endpoint: "POST /thumbnail/template/duplicate",
39
+ auth_scope: "write",
40
+ output_shape: { type: "key-value" },
41
+ side_effects: "creates"
42
+ };
43
+ async run() {
44
+ const { args, flags } = await this.parse(ThumbnailDuplicate);
45
+ this.printWorkspaceHeader();
46
+ const { data, error } = await this.apiClient.POST("/thumbnail/template/duplicate", {
47
+ body: {
48
+ thumbnail_template_id: Number(args.id),
49
+ name: flags.name
50
+ },
51
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
52
+ });
53
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
54
+ this.log(chalk.default.green("Thumbnail template duplicated"));
55
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
56
+ ok: true,
57
+ data,
58
+ summary: `Thumbnail template ${args.id} duplicated`,
59
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
60
+ resource: "thumbnail",
61
+ id: args.id
62
+ }]
63
+ });
64
+ }
65
+ };
66
+ //#endregion
67
+ module.exports = ThumbnailDuplicate;
@@ -0,0 +1,71 @@
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/thumbnail/file/delete.ts
10
+ /**
11
+ * Thumbnail file delete command — deletes a file from a thumbnail template.
12
+ *
13
+ * Maps to POST /thumbnail/template/delete-file.
14
+ * Prompts user to confirm deletion with workspace domain (T-08-07 repudiation mitigation).
15
+ * --json flag skips the confirmation prompt (scripting mode — assume confirmed).
16
+ *
17
+ * Threat mitigations:
18
+ * T-08-07: Confirmation prompt includes workspace domain
19
+ * T-08-09: extends AuthenticatedCommand — anonymous mode rejected
20
+ */
21
+ var ThumbnailFileDelete = class ThumbnailFileDelete extends require_lib_base_command.AuthenticatedCommand {
22
+ static description = "Delete a file from a thumbnail template";
23
+ static examples = ["<%= config.bin %> thumbnail file delete --template-id 42 --filename logo.png", "<%= config.bin %> thumbnail file delete --template-id 42 --filename logo.png --json"];
24
+ static enableJsonFlag = true;
25
+ static flags = {
26
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
27
+ "template-id": _oclif_core.Flags.string({
28
+ description: "Thumbnail template ID",
29
+ required: true
30
+ }),
31
+ filename: _oclif_core.Flags.string({
32
+ description: "Filename to delete",
33
+ required: true
34
+ })
35
+ };
36
+ static args = {};
37
+ static agentMetadata = {
38
+ api_endpoint: "POST /thumbnail/template/delete-file",
39
+ auth_scope: "write",
40
+ output_shape: { type: "key-value" },
41
+ side_effects: "destructive"
42
+ };
43
+ async run() {
44
+ const { flags } = await this.parse(ThumbnailFileDelete);
45
+ this.printWorkspaceHeader();
46
+ if (!this.jsonEnabled()) {
47
+ const confirmed = await (0, _clack_prompts.confirm)({ message: `Delete file "${flags.filename}" from template ${flags["template-id"]} on ${this.activeWorkspace.domain}?` });
48
+ if ((0, _clack_prompts.isCancel)(confirmed) || !confirmed) process.exit(2);
49
+ }
50
+ const { data: deleteData, error: deleteError } = await this.apiClient.POST("/thumbnail/template/delete-file", {
51
+ body: {
52
+ thumbnail_template_id: Number(flags["template-id"]),
53
+ filename: flags.filename
54
+ },
55
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
56
+ });
57
+ if (deleteError) this.error(require_lib_term_map.applyCliTerms(formatApiError(deleteError)), { exit: 1 });
58
+ this.log(chalk.default.green(`File "${flags.filename}" deleted from template ${flags["template-id"]}`));
59
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
60
+ ok: true,
61
+ data: deleteData,
62
+ summary: `File "${flags.filename}" deleted from thumbnail template ${flags["template-id"]}`,
63
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
64
+ resource: "thumbnail",
65
+ id: flags["template-id"]
66
+ }]
67
+ });
68
+ }
69
+ };
70
+ //#endregion
71
+ module.exports = ThumbnailFileDelete;
@@ -0,0 +1,74 @@
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/thumbnail/file/list.ts
9
+ /**
10
+ * Thumbnail file list command — lists files associated with a thumbnail template.
11
+ *
12
+ * Maps to GET /thumbnail/template/list-files.
13
+ * 3-level oclif topic via directory structure (thumbnail/file/list.ts).
14
+ *
15
+ * Threat mitigations:
16
+ * T-08-09: extends AuthenticatedCommand — anonymous mode rejected
17
+ */
18
+ var ThumbnailFileList = class ThumbnailFileList extends require_lib_base_command.AuthenticatedCommand {
19
+ static description = "List files associated with a thumbnail template";
20
+ static examples = ["<%= config.bin %> thumbnail file list 42", "<%= config.bin %> thumbnail file list 42 --json"];
21
+ static enableJsonFlag = true;
22
+ static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
23
+ static args = { id: _oclif_core.Args.string({
24
+ description: "Thumbnail template ID",
25
+ required: true
26
+ }) };
27
+ static agentMetadata = {
28
+ api_endpoint: "GET /thumbnail/template/list-files",
29
+ auth_scope: "read",
30
+ output_shape: {
31
+ type: "table",
32
+ columns: [
33
+ "Filename",
34
+ "Size",
35
+ "URL"
36
+ ]
37
+ },
38
+ side_effects: "none"
39
+ };
40
+ async run() {
41
+ const { args } = await this.parse(ThumbnailFileList);
42
+ this.printWorkspaceHeader();
43
+ const { data, error } = await this.apiClient.GET("/thumbnail/template/list-files", { params: { query: { thumbnail_template_id: Number(args.id) } } });
44
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
45
+ const resp = data;
46
+ const rows = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
47
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
48
+ ok: true,
49
+ data: rows,
50
+ summary: `${rows.length} file(s)`,
51
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
52
+ resource: "thumbnail",
53
+ id: args.id
54
+ }]
55
+ });
56
+ if (rows.length === 0) {
57
+ this.log("No files found.");
58
+ return;
59
+ }
60
+ const table = require_lib_output.renderTable([
61
+ "Filename",
62
+ "Size",
63
+ "URL"
64
+ ], rows.map((r) => [
65
+ String(r.filename ?? ""),
66
+ String(r.size_fmt ?? r.size ?? ""),
67
+ String(r.url ?? "")
68
+ ]));
69
+ this.log(table.toString());
70
+ this.log(chalk.default.dim(`${rows.length} file(s)`));
71
+ }
72
+ };
73
+ //#endregion
74
+ module.exports = ThumbnailFileList;
@@ -0,0 +1,79 @@
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 node_fs = require("node:fs");
9
+ node_fs = require_runtime.__toESM(node_fs);
10
+ let node_path = require("node:path");
11
+ node_path = require_runtime.__toESM(node_path);
12
+ //#region src/commands/thumbnail/file/upload.ts
13
+ /**
14
+ * Thumbnail file upload command — uploads an image file to a thumbnail template.
15
+ *
16
+ * Maps to POST /thumbnail/template/upload-file.
17
+ * Uses direct multipart POST with bodySerializer to create FormData (Pattern F).
18
+ * Per D-3: this is NOT the chunked engine — thumbnail files are images uploaded directly.
19
+ *
20
+ * Threat mitigations:
21
+ * T-08-08: Validates file exists via fs.existsSync before reading (prevents misleading errors)
22
+ * T-08-09: extends AuthenticatedCommand — anonymous mode rejected
23
+ */
24
+ var ThumbnailFileUpload = class ThumbnailFileUpload extends require_lib_base_command.AuthenticatedCommand {
25
+ static description = "Upload an image file to a thumbnail template";
26
+ static examples = ["<%= config.bin %> thumbnail file upload ./logo.png --template-id 42", "<%= config.bin %> thumbnail file upload ./banner.jpg --template-id 42 --json"];
27
+ static enableJsonFlag = true;
28
+ static flags = {
29
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
30
+ "template-id": _oclif_core.Flags.string({
31
+ description: "Thumbnail template ID",
32
+ required: true
33
+ })
34
+ };
35
+ static args = { file: _oclif_core.Args.string({
36
+ description: "Path to the image file to upload",
37
+ required: true
38
+ }) };
39
+ static agentMetadata = {
40
+ api_endpoint: "POST /thumbnail/template/upload-file",
41
+ auth_scope: "write",
42
+ output_shape: { type: "key-value" },
43
+ side_effects: "creates"
44
+ };
45
+ async run() {
46
+ const { args, flags } = await this.parse(ThumbnailFileUpload);
47
+ this.printWorkspaceHeader();
48
+ const filePath = node_path.resolve(args.file);
49
+ if (!node_fs.existsSync(filePath)) this.error(`File not found: ${filePath}`, { exit: 1 });
50
+ const fileBuffer = node_fs.readFileSync(filePath);
51
+ const fileName = node_path.basename(filePath);
52
+ const fileBlob = new Blob([fileBuffer]);
53
+ const { data, error } = await this.apiClient.POST("/thumbnail/template/upload-file", {
54
+ body: {
55
+ thumbnail_template_id: Number(flags["template-id"]),
56
+ file: fileBlob
57
+ },
58
+ bodySerializer(body) {
59
+ const fd = new FormData();
60
+ for (const [k, v] of Object.entries(body)) if (v !== void 0) if (v instanceof Blob) fd.append(k, v, fileName);
61
+ else fd.append(k, String(v));
62
+ return fd;
63
+ }
64
+ });
65
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
66
+ this.log(chalk.default.green("File uploaded"));
67
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
68
+ ok: true,
69
+ data,
70
+ summary: `File "${fileName}" uploaded to thumbnail template ${flags["template-id"]}`,
71
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
72
+ resource: "thumbnail",
73
+ id: flags["template-id"]
74
+ }]
75
+ });
76
+ }
77
+ };
78
+ //#endregion
79
+ module.exports = ThumbnailFileUpload;
@@ -0,0 +1,11 @@
1
+ require("../../_virtual/_rolldown/runtime.cjs");
2
+ let _oclif_core = require("@oclif/core");
3
+ //#region src/commands/thumbnail/index.ts
4
+ var ThumbnailIndex = class extends _oclif_core.Command {
5
+ static description = "Manage thumbnail templates — list, add, update, delete, duplicate, data, and manage files";
6
+ async run() {
7
+ this.log("Run \"twentythree thumbnail --help\" for available commands");
8
+ }
9
+ };
10
+ //#endregion
11
+ module.exports = ThumbnailIndex;
@@ -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/thumbnail/list.ts
9
+ /**
10
+ * Thumbnail template list command — lists all thumbnail templates in the active workspace.
11
+ *
12
+ * Maps to GET /thumbnail/template/list.
13
+ * Supports optional search and object-type filtering.
14
+ */
15
+ var ThumbnailList = class ThumbnailList extends require_lib_base_command.AuthenticatedCommand {
16
+ static description = "List thumbnail templates in the active workspace";
17
+ static examples = [
18
+ "<%= config.bin %> thumbnail list",
19
+ "<%= config.bin %> thumbnail list --search \"my template\"",
20
+ "<%= config.bin %> thumbnail list --object-type photo",
21
+ "<%= config.bin %> thumbnail list --json"
22
+ ];
23
+ static enableJsonFlag = true;
24
+ static flags = {
25
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
26
+ search: _oclif_core.Flags.string({
27
+ description: "Filter by name",
28
+ required: false
29
+ }),
30
+ "object-type": _oclif_core.Flags.string({
31
+ description: "Filter by object type (photo, live, liveseries)",
32
+ required: false
33
+ })
34
+ };
35
+ static args = {};
36
+ static agentMetadata = {
37
+ api_endpoint: "GET /thumbnail/template/list",
38
+ auth_scope: "read",
39
+ output_shape: {
40
+ type: "table",
41
+ columns: [
42
+ "ID",
43
+ "Name",
44
+ "Type",
45
+ "Width",
46
+ "Height"
47
+ ]
48
+ },
49
+ side_effects: "none"
50
+ };
51
+ async run() {
52
+ const { flags } = await this.parse(ThumbnailList);
53
+ this.printWorkspaceHeader();
54
+ const { data, error } = await this.apiClient.GET("/thumbnail/template/list", { params: { query: {
55
+ search: flags.search,
56
+ object_type: flags["object-type"]
57
+ } } });
58
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
59
+ const resp = data;
60
+ const rows = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
61
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
62
+ ok: true,
63
+ data: rows,
64
+ summary: `${rows.length} thumbnail template(s)`,
65
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "thumbnail" }]
66
+ });
67
+ if (rows.length === 0) {
68
+ this.log("No thumbnail templates found.");
69
+ return;
70
+ }
71
+ const table = require_lib_output.renderTable([
72
+ "ID",
73
+ "Name",
74
+ "Type",
75
+ "Width",
76
+ "Height"
77
+ ], rows.map((r) => [
78
+ String(r.thumbnail_template_id ?? ""),
79
+ String(r.name ?? ""),
80
+ String(r.object_type ?? ""),
81
+ String(r.width ?? ""),
82
+ String(r.height ?? "")
83
+ ]));
84
+ this.log(table.toString());
85
+ this.log(chalk.default.dim(`${rows.length} thumbnail template(s)`));
86
+ }
87
+ };
88
+ //#endregion
89
+ module.exports = ThumbnailList;
@@ -0,0 +1,87 @@
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/thumbnail/update.ts
9
+ /**
10
+ * Thumbnail template update command — updates an existing thumbnail template.
11
+ *
12
+ * Maps to POST /thumbnail/template/update.
13
+ * Only flags explicitly provided are included in the update body.
14
+ *
15
+ * Threat mitigations:
16
+ * T-08-09: extends AuthenticatedCommand — anonymous mode rejected
17
+ */
18
+ var ThumbnailUpdate = class ThumbnailUpdate extends require_lib_base_command.AuthenticatedCommand {
19
+ static description = "Update a thumbnail template";
20
+ static examples = [
21
+ "<%= config.bin %> thumbnail update 42 --name \"Updated Name\"",
22
+ "<%= config.bin %> thumbnail update 42 --liquid-template \"<div>{{ video.title }}</div>\"",
23
+ "<%= config.bin %> thumbnail update 42 --object-type photo --width 1280 --height 720",
24
+ "<%= config.bin %> thumbnail update 42 --name \"Updated Name\" --json"
25
+ ];
26
+ static enableJsonFlag = true;
27
+ static flags = {
28
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
29
+ name: _oclif_core.Flags.string({
30
+ description: "New name for the template",
31
+ required: false
32
+ }),
33
+ "liquid-template": _oclif_core.Flags.string({
34
+ description: "New Liquid template content",
35
+ required: false
36
+ }),
37
+ "object-type": _oclif_core.Flags.string({
38
+ description: "Object type (photo, live, liveseries)",
39
+ required: false
40
+ }),
41
+ width: _oclif_core.Flags.integer({
42
+ description: "Template width in pixels",
43
+ required: false
44
+ }),
45
+ height: _oclif_core.Flags.integer({
46
+ description: "Template height in pixels",
47
+ required: false
48
+ })
49
+ };
50
+ static args = { id: _oclif_core.Args.string({
51
+ description: "Thumbnail template ID",
52
+ required: true
53
+ }) };
54
+ static agentMetadata = {
55
+ api_endpoint: "POST /thumbnail/template/update",
56
+ auth_scope: "write",
57
+ output_shape: { type: "key-value" },
58
+ side_effects: "updates"
59
+ };
60
+ async run() {
61
+ const { args, flags } = await this.parse(ThumbnailUpdate);
62
+ this.printWorkspaceHeader();
63
+ const body = { thumbnail_template_id: Number(args.id) };
64
+ if (flags.name !== void 0) body.name = flags.name;
65
+ if (flags["liquid-template"] !== void 0) body.liquid_template = flags["liquid-template"];
66
+ if (flags["object-type"] !== void 0) body.object_type = flags["object-type"];
67
+ if (flags.width !== void 0) body.width = flags.width;
68
+ if (flags.height !== void 0) body.height = flags.height;
69
+ const { data: updateData, error: updateError } = await this.apiClient.POST("/thumbnail/template/update", {
70
+ body,
71
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
72
+ });
73
+ if (updateError) this.error(require_lib_term_map.applyCliTerms(formatApiError(updateError)), { exit: 1 });
74
+ this.log(chalk.default.green(`Thumbnail template ${args.id} updated`));
75
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
76
+ ok: true,
77
+ data: updateData,
78
+ summary: `Thumbnail template ${args.id} updated`,
79
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
80
+ resource: "thumbnail",
81
+ id: args.id
82
+ }]
83
+ });
84
+ }
85
+ };
86
+ //#endregion
87
+ module.exports = ThumbnailUpdate;