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.
- package/README.md +25 -0
- package/bin/dev.cmd +2 -0
- package/bin/dev.js +28 -0
- package/bin/run.cmd +2 -0
- package/bin/run.js +23 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/api/client.cjs +24 -0
- package/dist/api/types.cjs +0 -0
- package/dist/auth/credential-store.cjs +22 -0
- package/dist/auth/token-refresh.cjs +70 -0
- package/dist/auth/workspace-config.cjs +61 -0
- package/dist/commands/action/add.cjs +75 -0
- package/dist/commands/action/delete.cjs +64 -0
- package/dist/commands/action/exclude.cjs +70 -0
- package/dist/commands/action/get.cjs +112 -0
- package/dist/commands/action/include.cjs +70 -0
- package/dist/commands/action/list.cjs +119 -0
- package/dist/commands/action/types.cjs +63 -0
- package/dist/commands/action/update.cjs +86 -0
- package/dist/commands/action/upload.cjs +89 -0
- package/dist/commands/analytics/conversions/index.cjs +83 -0
- package/dist/commands/analytics/conversions/timeseries.cjs +83 -0
- package/dist/commands/analytics/conversions/totals.cjs +83 -0
- package/dist/commands/analytics/live/event-timeseries.cjs +86 -0
- package/dist/commands/analytics/live/event-totals.cjs +86 -0
- package/dist/commands/analytics/live/event.cjs +88 -0
- package/dist/commands/analytics/live/index.cjs +89 -0
- package/dist/commands/analytics/live/timeseries.cjs +85 -0
- package/dist/commands/analytics/live/totals.cjs +85 -0
- package/dist/commands/analytics/live/weekday/timeseries.cjs +85 -0
- package/dist/commands/analytics/live/weekday/totals.cjs +85 -0
- package/dist/commands/analytics/live/weekday.cjs +88 -0
- package/dist/commands/analytics/usage/devices/timeseries.cjs +83 -0
- package/dist/commands/analytics/usage/devices/totals.cjs +86 -0
- package/dist/commands/analytics/usage/devices.cjs +89 -0
- package/dist/commands/analytics/usage/domains/totals.cjs +83 -0
- package/dist/commands/analytics/usage/domains.cjs +89 -0
- package/dist/commands/analytics/usage/locations/totals.cjs +83 -0
- package/dist/commands/analytics/usage/locations.cjs +89 -0
- package/dist/commands/analytics/usage/sourceids/totals.cjs +83 -0
- package/dist/commands/analytics/usage/sourceids.cjs +89 -0
- package/dist/commands/analytics/usage/sources/totals.cjs +83 -0
- package/dist/commands/analytics/usage/sources.cjs +89 -0
- package/dist/commands/analytics/usage/spots/timeseries.cjs +83 -0
- package/dist/commands/analytics/usage/spots/totals.cjs +83 -0
- package/dist/commands/analytics/usage/spots.cjs +89 -0
- package/dist/commands/analytics/usage/storage.cjs +52 -0
- package/dist/commands/analytics/usage/traffic/timeseries.cjs +83 -0
- package/dist/commands/analytics/usage/traffic/totals.cjs +86 -0
- package/dist/commands/analytics/usage/traffic.cjs +89 -0
- package/dist/commands/analytics/video/index.cjs +89 -0
- package/dist/commands/analytics/video/performance/timeseries.cjs +83 -0
- package/dist/commands/analytics/video/performance/totals.cjs +80 -0
- package/dist/commands/analytics/video/performance.cjs +89 -0
- package/dist/commands/analytics/video/published/timeseries.cjs +83 -0
- package/dist/commands/analytics/video/published/totals.cjs +80 -0
- package/dist/commands/analytics/video/published.cjs +89 -0
- package/dist/commands/analytics/video/timeseries.cjs +86 -0
- package/dist/commands/analytics/video/totals.cjs +86 -0
- package/dist/commands/analytics/video/weekday/timeseries.cjs +86 -0
- package/dist/commands/analytics/video/weekday/totals.cjs +83 -0
- package/dist/commands/analytics/video/weekday.cjs +89 -0
- package/dist/commands/app/add.cjs +76 -0
- package/dist/commands/app/delete.cjs +57 -0
- package/dist/commands/app/update.cjs +77 -0
- package/dist/commands/audience/companies.cjs +116 -0
- package/dist/commands/audience/field/list.cjs +83 -0
- package/dist/commands/audience/field/remove.cjs +63 -0
- package/dist/commands/audience/field/set.cjs +78 -0
- package/dist/commands/audience/field/types.cjs +57 -0
- package/dist/commands/audience/funnel.cjs +77 -0
- package/dist/commands/audience/identity-sources.cjs +64 -0
- package/dist/commands/audience/list-collectors.cjs +88 -0
- package/dist/commands/audience/list.cjs +122 -0
- package/dist/commands/audience/metrics.cjs +89 -0
- package/dist/commands/audience/register.cjs +106 -0
- package/dist/commands/audience/remove.cjs +72 -0
- package/dist/commands/audience/search.cjs +106 -0
- package/dist/commands/audience/timelines.cjs +115 -0
- package/dist/commands/audience/unregister.cjs +65 -0
- package/dist/commands/auth/credentials.cjs +89 -0
- package/dist/commands/auth/status.cjs +34 -0
- package/dist/commands/category/create.cjs +80 -0
- package/dist/commands/category/delete.cjs +70 -0
- package/dist/commands/category/index.cjs +11 -0
- package/dist/commands/category/list.cjs +98 -0
- package/dist/commands/category/update.cjs +134 -0
- package/dist/commands/collector/exclude.cjs +56 -0
- package/dist/commands/collector/include.cjs +56 -0
- package/dist/commands/collector/list.cjs +81 -0
- package/dist/commands/comment/add.cjs +102 -0
- package/dist/commands/comment/clone.cjs +59 -0
- package/dist/commands/comment/delete.cjs +55 -0
- package/dist/commands/comment/list.cjs +126 -0
- package/dist/commands/comment/promote.cjs +65 -0
- package/dist/commands/comment/reaction/add.cjs +81 -0
- package/dist/commands/comment/reaction/list.cjs +92 -0
- package/dist/commands/comment/reaction/remove.cjs +81 -0
- package/dist/commands/comment/set-order.cjs +63 -0
- package/dist/commands/comment/update.cjs +63 -0
- package/dist/commands/doctor.cjs +129 -0
- package/dist/commands/openupload/list.cjs +95 -0
- package/dist/commands/openupload/update-file.cjs +85 -0
- package/dist/commands/openupload/upload-file.cjs +130 -0
- package/dist/commands/player/delete.cjs +66 -0
- package/dist/commands/player/embed-versions.cjs +83 -0
- package/dist/commands/player/embed.cjs +134 -0
- package/dist/commands/player/list.cjs +86 -0
- package/dist/commands/player/styles.cjs +70 -0
- package/dist/commands/player/update.cjs +80 -0
- package/dist/commands/poll/add.cjs +84 -0
- package/dist/commands/poll/answer.cjs +89 -0
- package/dist/commands/poll/list.cjs +92 -0
- package/dist/commands/poll/remove.cjs +57 -0
- package/dist/commands/poll/set-options.cjs +84 -0
- package/dist/commands/poll/update.cjs +79 -0
- package/dist/commands/presentation/page/link-locations.cjs +57 -0
- package/dist/commands/presentation/setting/list.cjs +44 -0
- package/dist/commands/presentation/setting/update.cjs +67 -0
- package/dist/commands/protection/protect.cjs +68 -0
- package/dist/commands/protection/unprotect.cjs +65 -0
- package/dist/commands/protection/verify.cjs +80 -0
- package/dist/commands/session/get-token.cjs +75 -0
- package/dist/commands/session/redeem-token.cjs +56 -0
- package/dist/commands/setting/update.cjs +79 -0
- package/dist/commands/site/get.cjs +73 -0
- package/dist/commands/site/search.cjs +93 -0
- package/dist/commands/spot/check.cjs +52 -0
- package/dist/commands/spot/create.cjs +79 -0
- package/dist/commands/spot/delete.cjs +68 -0
- package/dist/commands/spot/list.cjs +120 -0
- package/dist/commands/spot/reset-version.cjs +53 -0
- package/dist/commands/spot/set-videos.cjs +64 -0
- package/dist/commands/spot/update.cjs +78 -0
- package/dist/commands/tag/list.cjs +98 -0
- package/dist/commands/tag/related.cjs +57 -0
- package/dist/commands/thumbnail/add.cjs +66 -0
- package/dist/commands/thumbnail/data.cjs +60 -0
- package/dist/commands/thumbnail/delete.cjs +61 -0
- package/dist/commands/thumbnail/duplicate.cjs +67 -0
- package/dist/commands/thumbnail/file/delete.cjs +71 -0
- package/dist/commands/thumbnail/file/list.cjs +74 -0
- package/dist/commands/thumbnail/file/upload.cjs +79 -0
- package/dist/commands/thumbnail/index.cjs +11 -0
- package/dist/commands/thumbnail/list.cjs +89 -0
- package/dist/commands/thumbnail/update.cjs +87 -0
- package/dist/commands/user/create.cjs +87 -0
- package/dist/commands/user/get-login-token.cjs +72 -0
- package/dist/commands/user/get.cjs +67 -0
- package/dist/commands/user/list.cjs +95 -0
- package/dist/commands/user/redeem-login-token.cjs +55 -0
- package/dist/commands/user/send-invitation.cjs +63 -0
- package/dist/commands/user/tokens.cjs +80 -0
- package/dist/commands/user/update.cjs +121 -0
- package/dist/commands/video/delete.cjs +67 -0
- package/dist/commands/video/frame.cjs +69 -0
- package/dist/commands/video/get.cjs +68 -0
- package/dist/commands/video/index.cjs +11 -0
- package/dist/commands/video/list.cjs +98 -0
- package/dist/commands/video/replace.cjs +126 -0
- package/dist/commands/video/section/create.cjs +73 -0
- package/dist/commands/video/section/delete.cjs +78 -0
- package/dist/commands/video/section/index.cjs +11 -0
- package/dist/commands/video/section/list.cjs +75 -0
- package/dist/commands/video/section/set-thumbnail.cjs +73 -0
- package/dist/commands/video/section/update.cjs +84 -0
- package/dist/commands/video/subtitle/archive.cjs +76 -0
- package/dist/commands/video/subtitle/create.cjs +80 -0
- package/dist/commands/video/subtitle/data.cjs +75 -0
- package/dist/commands/video/subtitle/delete.cjs +84 -0
- package/dist/commands/video/subtitle/duplicate.cjs +89 -0
- package/dist/commands/video/subtitle/index.cjs +11 -0
- package/dist/commands/video/subtitle/list.cjs +94 -0
- package/dist/commands/video/subtitle/locales.cjs +60 -0
- package/dist/commands/video/subtitle/set-primary.cjs +64 -0
- package/dist/commands/video/subtitle/types.cjs +42 -0
- package/dist/commands/video/subtitle/update.cjs +93 -0
- package/dist/commands/video/subtitle/upload.cjs +104 -0
- package/dist/commands/video/transcoding-progress.cjs +71 -0
- package/dist/commands/video/update.cjs +184 -0
- package/dist/commands/video/upload.cjs +151 -0
- package/dist/commands/webhook/events.cjs +68 -0
- package/dist/commands/webhook/list.cjs +64 -0
- package/dist/commands/webhook/sample.cjs +47 -0
- package/dist/commands/webhook/subscribe.cjs +66 -0
- package/dist/commands/webhook/unsubscribe.cjs +71 -0
- package/dist/commands/webinar/attachment/delete.cjs +79 -0
- package/dist/commands/webinar/attachment/list.cjs +94 -0
- package/dist/commands/webinar/attachment/set-hidden.cjs +85 -0
- package/dist/commands/webinar/attachment/upload.cjs +128 -0
- package/dist/commands/webinar/clips.cjs +77 -0
- package/dist/commands/webinar/create.cjs +107 -0
- package/dist/commands/webinar/delete.cjs +62 -0
- package/dist/commands/webinar/highlights.cjs +84 -0
- package/dist/commands/webinar/index.cjs +11 -0
- package/dist/commands/webinar/list-formats.cjs +50 -0
- package/dist/commands/webinar/list.cjs +134 -0
- package/dist/commands/webinar/log.cjs +69 -0
- package/dist/commands/webinar/mail/add.cjs +101 -0
- package/dist/commands/webinar/mail/list.cjs +83 -0
- package/dist/commands/webinar/mail/preview.cjs +75 -0
- package/dist/commands/webinar/mail/remove.cjs +75 -0
- package/dist/commands/webinar/mail/send.cjs +68 -0
- package/dist/commands/webinar/mail/test.cjs +86 -0
- package/dist/commands/webinar/mail/update.cjs +84 -0
- package/dist/commands/webinar/metrics.cjs +59 -0
- package/dist/commands/webinar/queued-video/add.cjs +81 -0
- package/dist/commands/webinar/queued-video/remove.cjs +81 -0
- package/dist/commands/webinar/recording/split.cjs +53 -0
- package/dist/commands/webinar/recording/start.cjs +53 -0
- package/dist/commands/webinar/recording/status.cjs +52 -0
- package/dist/commands/webinar/recording/stop.cjs +53 -0
- package/dist/commands/webinar/repeat.cjs +65 -0
- package/dist/commands/webinar/room/connect.cjs +60 -0
- package/dist/commands/webinar/room/info.cjs +60 -0
- package/dist/commands/webinar/room/send-recording.cjs +59 -0
- package/dist/commands/webinar/room/themes.cjs +63 -0
- package/dist/commands/webinar/section/add.cjs +98 -0
- package/dist/commands/webinar/section/list.cjs +86 -0
- package/dist/commands/webinar/section/remove.cjs +75 -0
- package/dist/commands/webinar/section/update.cjs +85 -0
- package/dist/commands/webinar/series/apply-recurrence.cjs +68 -0
- package/dist/commands/webinar/series/cancel.cjs +73 -0
- package/dist/commands/webinar/series/create.cjs +80 -0
- package/dist/commands/webinar/series/delete.cjs +73 -0
- package/dist/commands/webinar/series/list.cjs +79 -0
- package/dist/commands/webinar/series/mapped-objects.cjs +69 -0
- package/dist/commands/webinar/series/metrics.cjs +57 -0
- package/dist/commands/webinar/series/recurrences.cjs +72 -0
- package/dist/commands/webinar/series/set-ondemand.cjs +67 -0
- package/dist/commands/webinar/series/skip-recurrence.cjs +79 -0
- package/dist/commands/webinar/series/update.cjs +71 -0
- package/dist/commands/webinar/series/upload-thumbnail.cjs +117 -0
- package/dist/commands/webinar/speaker/add-from-speaker.cjs +78 -0
- package/dist/commands/webinar/speaker/add-from-user.cjs +78 -0
- package/dist/commands/webinar/speaker/add.cjs +112 -0
- package/dist/commands/webinar/speaker/cancel-guest-request.cjs +62 -0
- package/dist/commands/webinar/speaker/connection-types.cjs +66 -0
- package/dist/commands/webinar/speaker/library.cjs +59 -0
- package/dist/commands/webinar/speaker/list.cjs +90 -0
- package/dist/commands/webinar/speaker/remove-avatar.cjs +62 -0
- package/dist/commands/webinar/speaker/remove.cjs +69 -0
- package/dist/commands/webinar/speaker/request-guest.cjs +62 -0
- package/dist/commands/webinar/speaker/send-invitation.cjs +62 -0
- package/dist/commands/webinar/speaker/set-avatar.cjs +130 -0
- package/dist/commands/webinar/speaker/set-order.cjs +95 -0
- package/dist/commands/webinar/speaker/update.cjs +90 -0
- package/dist/commands/webinar/transcription/connect.cjs +69 -0
- package/dist/commands/webinar/transcription/list.cjs +88 -0
- package/dist/commands/webinar/transcription/locales.cjs +76 -0
- package/dist/commands/webinar/transcription/transcriptionlist.cjs +67 -0
- package/dist/commands/webinar/update.cjs +192 -0
- package/dist/commands/webinar/upload-image.cjs +133 -0
- package/dist/commands/workspace/list.cjs +47 -0
- package/dist/commands/workspace/use.cjs +52 -0
- package/dist/index.cjs +6 -0
- package/dist/lib/analytics-flags.cjs +60 -0
- package/dist/lib/audit.cjs +44 -0
- package/dist/lib/base-command.cjs +156 -0
- package/dist/lib/output.cjs +82 -0
- package/dist/lib/pagination.cjs +36 -0
- package/dist/lib/term-map.cjs +48 -0
- package/dist/upload/chunk-pool.cjs +47 -0
- package/dist/upload/chunked-upload.cjs +131 -0
- package/dist/upload/types.cjs +9 -0
- package/docs/commands/README.md +31 -0
- package/docs/commands/action/add.md +36 -0
- package/docs/commands/action/delete.md +32 -0
- package/docs/commands/action/exclude.md +38 -0
- package/docs/commands/action/get.md +47 -0
- package/docs/commands/action/include.md +38 -0
- package/docs/commands/action/list.md +43 -0
- package/docs/commands/action/types.md +34 -0
- package/docs/commands/action/update.md +42 -0
- package/docs/commands/action/upload.md +36 -0
- package/docs/commands/action.md +306 -0
- package/docs/commands/analytics/conversions.md +113 -0
- package/docs/commands/analytics/live.md +338 -0
- package/docs/commands/analytics/usage.md +674 -0
- package/docs/commands/analytics/video.md +449 -0
- package/docs/commands/analytics.md +1559 -0
- package/docs/commands/app/add.md +38 -0
- package/docs/commands/app/delete.md +32 -0
- package/docs/commands/app/update.md +41 -0
- package/docs/commands/app.md +101 -0
- package/docs/commands/audience/companies.md +41 -0
- package/docs/commands/audience/field.md +119 -0
- package/docs/commands/audience/funnel.md +38 -0
- package/docs/commands/audience/identity-sources.md +29 -0
- package/docs/commands/audience/list-collectors.md +35 -0
- package/docs/commands/audience/list.md +42 -0
- package/docs/commands/audience/metrics.md +40 -0
- package/docs/commands/audience/register.md +45 -0
- package/docs/commands/audience/remove.md +35 -0
- package/docs/commands/audience/search.md +39 -0
- package/docs/commands/audience/timelines.md +41 -0
- package/docs/commands/audience/unregister.md +36 -0
- package/docs/commands/audience.md +485 -0
- package/docs/commands/auth/credentials.md +23 -0
- package/docs/commands/auth/status.md +27 -0
- package/docs/commands/auth.md +45 -0
- package/docs/commands/category/create.md +36 -0
- package/docs/commands/category/delete.md +32 -0
- package/docs/commands/category/list.md +34 -0
- package/docs/commands/category/update.md +39 -0
- package/docs/commands/category.md +141 -0
- package/docs/commands/collector/exclude.md +33 -0
- package/docs/commands/collector/include.md +33 -0
- package/docs/commands/collector/list.md +37 -0
- package/docs/commands/collector.md +93 -0
- package/docs/commands/comment/add.md +43 -0
- package/docs/commands/comment/clone.md +35 -0
- package/docs/commands/comment/delete.md +32 -0
- package/docs/commands/comment/list.md +42 -0
- package/docs/commands/comment/promote.md +37 -0
- package/docs/commands/comment/reaction.md +106 -0
- package/docs/commands/comment/set-order.md +34 -0
- package/docs/commands/comment/update.md +36 -0
- package/docs/commands/comment.md +330 -0
- package/docs/commands/doctor.md +28 -0
- package/docs/commands/openupload/list.md +36 -0
- package/docs/commands/openupload/update-file.md +40 -0
- package/docs/commands/openupload/upload-file.md +39 -0
- package/docs/commands/openupload.md +105 -0
- package/docs/commands/player/delete.md +32 -0
- package/docs/commands/player/embed-versions.md +34 -0
- package/docs/commands/player/embed.md +51 -0
- package/docs/commands/player/list.md +32 -0
- package/docs/commands/player/styles.md +32 -0
- package/docs/commands/player/update.md +37 -0
- package/docs/commands/player.md +193 -0
- package/docs/commands/poll/add.md +33 -0
- package/docs/commands/poll/answer.md +38 -0
- package/docs/commands/poll/list.md +33 -0
- package/docs/commands/poll/remove.md +32 -0
- package/docs/commands/poll/set-options.md +35 -0
- package/docs/commands/poll/update.md +41 -0
- package/docs/commands/poll.md +187 -0
- package/docs/commands/presentation/page.md +29 -0
- package/docs/commands/presentation/setting.md +58 -0
- package/docs/commands/presentation.md +82 -0
- package/docs/commands/protection/protect.md +37 -0
- package/docs/commands/protection/unprotect.md +34 -0
- package/docs/commands/protection/verify.md +39 -0
- package/docs/commands/protection.md +100 -0
- package/docs/commands/session/get-token.md +38 -0
- package/docs/commands/session/redeem-token.md +32 -0
- package/docs/commands/session.md +65 -0
- package/docs/commands/setting/update.md +37 -0
- package/docs/commands/setting.md +37 -0
- package/docs/commands/site/get.md +35 -0
- package/docs/commands/site/search.md +38 -0
- package/docs/commands/site.md +68 -0
- package/docs/commands/spot/check.md +32 -0
- package/docs/commands/spot/create.md +38 -0
- package/docs/commands/spot/delete.md +32 -0
- package/docs/commands/spot/list.md +43 -0
- package/docs/commands/spot/reset-version.md +32 -0
- package/docs/commands/spot/set-videos.md +35 -0
- package/docs/commands/spot/update.md +40 -0
- package/docs/commands/spot.md +222 -0
- package/docs/commands/tag/list.md +44 -0
- package/docs/commands/tag/related.md +32 -0
- package/docs/commands/tag.md +71 -0
- package/docs/commands/thumbnail/add.md +33 -0
- package/docs/commands/thumbnail/data.md +35 -0
- package/docs/commands/thumbnail/delete.md +32 -0
- package/docs/commands/thumbnail/duplicate.md +37 -0
- package/docs/commands/thumbnail/file.md +90 -0
- package/docs/commands/thumbnail/list.md +37 -0
- package/docs/commands/thumbnail/update.md +44 -0
- package/docs/commands/thumbnail.md +293 -0
- package/docs/commands/user/create.md +41 -0
- package/docs/commands/user/get-login-token.md +37 -0
- package/docs/commands/user/get.md +37 -0
- package/docs/commands/user/list.md +40 -0
- package/docs/commands/user/redeem-login-token.md +32 -0
- package/docs/commands/user/send-invitation.md +37 -0
- package/docs/commands/user/tokens.md +34 -0
- package/docs/commands/user/update.md +44 -0
- package/docs/commands/user.md +267 -0
- package/docs/commands/video/delete.md +32 -0
- package/docs/commands/video/frame.md +37 -0
- package/docs/commands/video/get.md +32 -0
- package/docs/commands/video/list.md +33 -0
- package/docs/commands/video/replace.md +37 -0
- package/docs/commands/video/section.md +177 -0
- package/docs/commands/video/subtitle.md +362 -0
- package/docs/commands/video/transcoding-progress.md +32 -0
- package/docs/commands/video/update.md +45 -0
- package/docs/commands/video/upload.md +44 -0
- package/docs/commands/video.md +801 -0
- package/docs/commands/webhook/events.md +34 -0
- package/docs/commands/webhook/list.md +29 -0
- package/docs/commands/webhook/sample.md +32 -0
- package/docs/commands/webhook/subscribe.md +33 -0
- package/docs/commands/webhook/unsubscribe.md +35 -0
- package/docs/commands/webhook.md +143 -0
- package/docs/commands/webinar/attachment.md +135 -0
- package/docs/commands/webinar/clips.md +32 -0
- package/docs/commands/webinar/create.md +40 -0
- package/docs/commands/webinar/delete.md +32 -0
- package/docs/commands/webinar/highlights.md +37 -0
- package/docs/commands/webinar/list-formats.md +29 -0
- package/docs/commands/webinar/list.md +41 -0
- package/docs/commands/webinar/log.md +32 -0
- package/docs/commands/webinar/mail.md +238 -0
- package/docs/commands/webinar/metrics.md +32 -0
- package/docs/commands/webinar/queued-video.md +65 -0
- package/docs/commands/webinar/recording.md +113 -0
- package/docs/commands/webinar/repeat.md +35 -0
- package/docs/commands/webinar/room.md +110 -0
- package/docs/commands/webinar/section.md +134 -0
- package/docs/commands/webinar/series.md +365 -0
- package/docs/commands/webinar/speaker.md +430 -0
- package/docs/commands/webinar/transcription.md +125 -0
- package/docs/commands/webinar/update.md +43 -0
- package/docs/commands/webinar/upload-image.md +42 -0
- package/docs/commands/webinar.md +2030 -0
- package/docs/commands/workspace/list.md +27 -0
- package/docs/commands/workspace/use.md +32 -0
- package/docs/commands/workspace.md +54 -0
- package/docs/guides/api-spec-upgrade.md +92 -0
- package/docs/guides/getting-started.md +66 -0
- package/oclif.manifest.json +21609 -0
- 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;
|