twentythree-cli 1.4.0 → 1.5.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/dist/commands/agentic/session/list.cjs +79 -0
- package/dist/commands/agentic/session/metrics.cjs +50 -0
- package/dist/commands/agentic/session/status.cjs +86 -0
- package/dist/commands/seo/metrics.cjs +56 -0
- package/dist/commands/webinar/create.cjs +57 -5
- package/dist/commands/webinar/mail/add.cjs +44 -5
- package/dist/commands/webinar/mail/update.cjs +44 -0
- package/dist/commands/webinar/speaker/add.cjs +32 -2
- package/dist/commands/webinar/speaker/update.cjs +32 -2
- package/dist/commands/webinar/update.cjs +60 -1
- package/docs/commands/action/add.md +1 -1
- package/docs/commands/action/delete.md +1 -1
- package/docs/commands/action/exclude.md +1 -1
- package/docs/commands/action/get.md +1 -1
- package/docs/commands/action/include.md +1 -1
- package/docs/commands/action/list.md +1 -1
- package/docs/commands/action/types.md +1 -1
- package/docs/commands/action/update.md +1 -1
- package/docs/commands/action/upload.md +1 -1
- package/docs/commands/action.md +9 -9
- package/docs/commands/agentic/session.md +104 -0
- package/docs/commands/agentic.md +94 -0
- package/docs/commands/analytics/conversions.md +3 -3
- package/docs/commands/analytics/live.md +9 -9
- package/docs/commands/analytics/usage.md +18 -18
- package/docs/commands/analytics/video.md +12 -12
- package/docs/commands/analytics.md +42 -42
- package/docs/commands/app/add.md +1 -1
- package/docs/commands/app/delete.md +1 -1
- package/docs/commands/app/list.md +1 -1
- package/docs/commands/app/remove-thumbnail.md +1 -1
- package/docs/commands/app/set-thumbnail.md +1 -1
- package/docs/commands/app/update.md +1 -1
- package/docs/commands/app.md +6 -6
- package/docs/commands/audience/companies.md +1 -1
- package/docs/commands/audience/field.md +4 -4
- package/docs/commands/audience/funnel.md +1 -1
- package/docs/commands/audience/identity-sources.md +1 -1
- package/docs/commands/audience/list-collectors.md +1 -1
- package/docs/commands/audience/list.md +1 -1
- package/docs/commands/audience/metrics.md +1 -1
- package/docs/commands/audience/register.md +1 -1
- package/docs/commands/audience/remove.md +1 -1
- package/docs/commands/audience/search.md +1 -1
- package/docs/commands/audience/timelines.md +1 -1
- package/docs/commands/audience/unregister.md +1 -1
- package/docs/commands/audience.md +15 -15
- package/docs/commands/auth/credentials.md +1 -1
- package/docs/commands/auth/status.md +1 -1
- package/docs/commands/auth/switch.md +1 -1
- package/docs/commands/auth.md +3 -3
- package/docs/commands/autocomplete.md +1 -1
- package/docs/commands/category/create.md +1 -1
- package/docs/commands/category/delete.md +1 -1
- package/docs/commands/category/list.md +1 -1
- package/docs/commands/category/update.md +1 -1
- package/docs/commands/category.md +5 -5
- package/docs/commands/collector/exclude.md +1 -1
- package/docs/commands/collector/include.md +1 -1
- package/docs/commands/collector/list.md +1 -1
- package/docs/commands/collector.md +3 -3
- package/docs/commands/comment/add.md +1 -1
- package/docs/commands/comment/clone.md +1 -1
- package/docs/commands/comment/delete.md +1 -1
- package/docs/commands/comment/list.md +1 -1
- package/docs/commands/comment/promote.md +1 -1
- package/docs/commands/comment/reaction.md +3 -3
- package/docs/commands/comment/set-order.md +1 -1
- package/docs/commands/comment/update.md +1 -1
- package/docs/commands/comment.md +10 -10
- package/docs/commands/doctor.md +1 -1
- package/docs/commands/openupload/list.md +1 -1
- package/docs/commands/openupload/update-file.md +1 -1
- package/docs/commands/openupload/upload-file.md +1 -1
- package/docs/commands/openupload.md +3 -3
- package/docs/commands/player/delete.md +1 -1
- package/docs/commands/player/embed-versions.md +1 -1
- package/docs/commands/player/embed.md +1 -1
- package/docs/commands/player/list.md +1 -1
- package/docs/commands/player/remove-thumbnail.md +1 -1
- package/docs/commands/player/set-thumbnail.md +1 -1
- package/docs/commands/player/styles.md +1 -1
- package/docs/commands/player/update.md +1 -1
- package/docs/commands/player.md +8 -8
- package/docs/commands/poll/add.md +1 -1
- package/docs/commands/poll/answer.md +1 -1
- package/docs/commands/poll/list.md +1 -1
- package/docs/commands/poll/remove.md +1 -1
- package/docs/commands/poll/set-options.md +1 -1
- package/docs/commands/poll/update.md +1 -1
- package/docs/commands/poll.md +6 -6
- package/docs/commands/presentation/page.md +1 -1
- package/docs/commands/presentation/setting.md +2 -2
- package/docs/commands/presentation.md +3 -3
- package/docs/commands/protection/protect.md +1 -1
- package/docs/commands/protection/unprotect.md +1 -1
- package/docs/commands/protection/verify.md +1 -1
- package/docs/commands/protection.md +3 -3
- package/docs/commands/seo/get.md +1 -1
- package/docs/commands/seo/metrics.md +35 -0
- package/docs/commands/seo/status.md +1 -1
- package/docs/commands/seo/update.md +1 -1
- package/docs/commands/seo.md +30 -3
- package/docs/commands/session/get-token.md +1 -1
- package/docs/commands/session/redeem-token.md +1 -1
- package/docs/commands/session.md +2 -2
- package/docs/commands/setting/update.md +1 -1
- package/docs/commands/setting.md +1 -1
- package/docs/commands/site/get.md +1 -1
- package/docs/commands/site/search.md +1 -1
- package/docs/commands/site.md +2 -2
- package/docs/commands/spot/check.md +1 -1
- package/docs/commands/spot/create.md +1 -1
- package/docs/commands/spot/delete.md +1 -1
- package/docs/commands/spot/list.md +1 -1
- package/docs/commands/spot/reset-version.md +1 -1
- package/docs/commands/spot/set-videos.md +1 -1
- package/docs/commands/spot/update.md +1 -1
- package/docs/commands/spot.md +7 -7
- package/docs/commands/tag/list.md +1 -1
- package/docs/commands/tag/related.md +1 -1
- package/docs/commands/tag.md +2 -2
- package/docs/commands/thumbnail/add.md +1 -1
- package/docs/commands/thumbnail/data.md +1 -1
- package/docs/commands/thumbnail/delete.md +1 -1
- package/docs/commands/thumbnail/duplicate.md +1 -1
- package/docs/commands/thumbnail/file.md +3 -3
- package/docs/commands/thumbnail/list.md +1 -1
- package/docs/commands/thumbnail/preview-scss.md +1 -1
- package/docs/commands/thumbnail/update.md +1 -1
- package/docs/commands/thumbnail.md +11 -11
- package/docs/commands/user/create.md +1 -1
- package/docs/commands/user/get-login-token.md +1 -1
- package/docs/commands/user/get.md +1 -1
- package/docs/commands/user/list.md +1 -1
- package/docs/commands/user/redeem-login-token.md +1 -1
- package/docs/commands/user/send-invitation.md +1 -1
- package/docs/commands/user/tokens.md +1 -1
- package/docs/commands/user/update.md +1 -1
- package/docs/commands/user.md +8 -8
- package/docs/commands/video/delete.md +1 -1
- package/docs/commands/video/frame.md +1 -1
- package/docs/commands/video/get.md +1 -1
- package/docs/commands/video/list.md +1 -1
- package/docs/commands/video/replace.md +1 -1
- package/docs/commands/video/section.md +8 -8
- package/docs/commands/video/subtitle.md +12 -12
- package/docs/commands/video/transcoding-progress.md +1 -1
- package/docs/commands/video/update.md +1 -1
- package/docs/commands/video/upload.md +1 -1
- package/docs/commands/video.md +28 -28
- package/docs/commands/webhook/events.md +1 -1
- package/docs/commands/webhook/list.md +1 -1
- package/docs/commands/webhook/sample.md +1 -1
- package/docs/commands/webhook/subscribe.md +1 -1
- package/docs/commands/webhook/unsubscribe.md +1 -1
- package/docs/commands/webhook.md +5 -5
- package/docs/commands/webinar/attachment.md +4 -4
- package/docs/commands/webinar/clips.md +1 -1
- package/docs/commands/webinar/create.md +30 -12
- package/docs/commands/webinar/delete.md +1 -1
- package/docs/commands/webinar/highlights.md +1 -1
- package/docs/commands/webinar/list-formats.md +1 -1
- package/docs/commands/webinar/list.md +1 -1
- package/docs/commands/webinar/log.md +1 -1
- package/docs/commands/webinar/mail.md +35 -18
- package/docs/commands/webinar/metrics.md +1 -1
- package/docs/commands/webinar/queued-video.md +2 -2
- package/docs/commands/webinar/recording.md +4 -4
- package/docs/commands/webinar/repeat.md +1 -1
- package/docs/commands/webinar/room.md +4 -4
- package/docs/commands/webinar/section.md +4 -4
- package/docs/commands/webinar/series.md +12 -12
- package/docs/commands/webinar/speaker.md +41 -26
- package/docs/commands/webinar/transcription.md +4 -4
- package/docs/commands/webinar/update.md +25 -10
- package/docs/commands/webinar/upload-image.md +1 -1
- package/docs/commands/webinar.md +185 -109
- package/docs/commands/workspace/list.md +1 -1
- package/docs/commands/workspace/use.md +1 -1
- package/docs/commands/workspace.md +2 -2
- package/oclif.manifest.json +2967 -2285
- package/package.json +1 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_lib_base_command = require("../../../lib/base-command.cjs");
|
|
3
|
+
const require_lib_output = require("../../../lib/output.cjs");
|
|
4
|
+
let _oclif_core = require("@oclif/core");
|
|
5
|
+
let chalk = require("chalk");
|
|
6
|
+
chalk = require_runtime.__toESM(chalk);
|
|
7
|
+
//#region src/commands/agentic/session/list.ts
|
|
8
|
+
/**
|
|
9
|
+
* Agentic session list command — lists agentic (AI agent) sessions that have
|
|
10
|
+
* been reported to the workspace via `agentic session status`.
|
|
11
|
+
*/
|
|
12
|
+
var AgenticSessionList = class AgenticSessionList extends require_lib_base_command.AuthenticatedCommand {
|
|
13
|
+
static description = "List reported agentic (AI agent) sessions";
|
|
14
|
+
static examples = ["<%= config.bin %> agentic session list", "<%= config.bin %> agentic session list --json"];
|
|
15
|
+
static enableJsonFlag = true;
|
|
16
|
+
static agentMetadata = {
|
|
17
|
+
api_endpoint: "POST /agentic/session/list",
|
|
18
|
+
auth_scope: "read",
|
|
19
|
+
output_shape: {
|
|
20
|
+
type: "table",
|
|
21
|
+
columns: [
|
|
22
|
+
"Session",
|
|
23
|
+
"Summary",
|
|
24
|
+
"Prompts",
|
|
25
|
+
"Duration (s)",
|
|
26
|
+
"Started"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
side_effects: "none"
|
|
30
|
+
};
|
|
31
|
+
static flags = {
|
|
32
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
33
|
+
fields: _oclif_core.Flags.string({
|
|
34
|
+
description: "Comma-separated fields to return",
|
|
35
|
+
required: false
|
|
36
|
+
})
|
|
37
|
+
};
|
|
38
|
+
static args = {};
|
|
39
|
+
async run() {
|
|
40
|
+
const { flags } = await this.parse(AgenticSessionList);
|
|
41
|
+
this.printWorkspaceHeader();
|
|
42
|
+
const body = {};
|
|
43
|
+
if (flags.fields) body.fields = flags.fields;
|
|
44
|
+
const { data, error } = await this.apiClient.POST("/agentic/session/list", {
|
|
45
|
+
body,
|
|
46
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
47
|
+
});
|
|
48
|
+
if (error) this.error(require_lib_output.formatApiError(error), { exit: 1 });
|
|
49
|
+
const resp = data;
|
|
50
|
+
const sessions = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
|
|
51
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
52
|
+
ok: true,
|
|
53
|
+
data: sessions,
|
|
54
|
+
summary: `${sessions.length} session${sessions.length === 1 ? "" : "s"}`,
|
|
55
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "agentic" }]
|
|
56
|
+
});
|
|
57
|
+
if (sessions.length === 0) {
|
|
58
|
+
this.log("No agentic sessions found.");
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const table = require_lib_output.renderTable([
|
|
62
|
+
"Session",
|
|
63
|
+
"Summary",
|
|
64
|
+
"Prompts",
|
|
65
|
+
"Duration (s)",
|
|
66
|
+
"Started"
|
|
67
|
+
], sessions.map((s) => [
|
|
68
|
+
String(s.session_identifier ?? ""),
|
|
69
|
+
String(s.summary ?? ""),
|
|
70
|
+
String(s.number_of_prompts ?? ""),
|
|
71
|
+
String(s.session_duration_seconds ?? ""),
|
|
72
|
+
s.session_start_time_epoch ? (/* @__PURE__ */ new Date(Number(s.session_start_time_epoch) * 1e3)).toISOString() : ""
|
|
73
|
+
]));
|
|
74
|
+
this.log(table.toString());
|
|
75
|
+
this.log(chalk.default.dim(`${sessions.length} session${sessions.length === 1 ? "" : "s"}`));
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
module.exports = AgenticSessionList;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_lib_base_command = require("../../../lib/base-command.cjs");
|
|
3
|
+
const require_lib_output = require("../../../lib/output.cjs");
|
|
4
|
+
let _oclif_core = require("@oclif/core");
|
|
5
|
+
//#region src/commands/agentic/session/metrics.ts
|
|
6
|
+
/**
|
|
7
|
+
* Agentic session metrics command — retrieves aggregate metrics across all
|
|
8
|
+
* reported agentic (AI agent) sessions in the workspace.
|
|
9
|
+
*/
|
|
10
|
+
var AgenticSessionMetrics = class AgenticSessionMetrics extends require_lib_base_command.AuthenticatedCommand {
|
|
11
|
+
static description = "Get aggregate metrics for reported agentic (AI agent) sessions";
|
|
12
|
+
static examples = ["<%= config.bin %> agentic session metrics", "<%= config.bin %> agentic session metrics --json"];
|
|
13
|
+
static enableJsonFlag = true;
|
|
14
|
+
static agentMetadata = {
|
|
15
|
+
api_endpoint: "POST /agentic/session/metrics",
|
|
16
|
+
auth_scope: "read",
|
|
17
|
+
output_shape: { type: "key-value" },
|
|
18
|
+
side_effects: "none"
|
|
19
|
+
};
|
|
20
|
+
static flags = {
|
|
21
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
22
|
+
fields: _oclif_core.Flags.string({
|
|
23
|
+
description: "Comma-separated fields to return",
|
|
24
|
+
required: false
|
|
25
|
+
})
|
|
26
|
+
};
|
|
27
|
+
async run() {
|
|
28
|
+
const { flags } = await this.parse(AgenticSessionMetrics);
|
|
29
|
+
this.printWorkspaceHeader();
|
|
30
|
+
const body = {};
|
|
31
|
+
if (flags.fields) body.fields = flags.fields;
|
|
32
|
+
const { data, error } = await this.apiClient.POST("/agentic/session/metrics", {
|
|
33
|
+
body,
|
|
34
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
35
|
+
});
|
|
36
|
+
if (error) this.error(require_lib_output.formatApiError(error), { exit: 1 });
|
|
37
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
38
|
+
ok: true,
|
|
39
|
+
data,
|
|
40
|
+
summary: "Agentic session metrics",
|
|
41
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "agentic" }]
|
|
42
|
+
});
|
|
43
|
+
const resp = data?.data ?? data;
|
|
44
|
+
this.log(`session_count: ${String(resp?.session_count ?? "")}`);
|
|
45
|
+
this.log(`number_of_prompts: ${String(resp?.number_of_prompts ?? "")}`);
|
|
46
|
+
this.log(`session_duration_seconds: ${String(resp?.session_duration_seconds ?? "")}`);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
//#endregion
|
|
50
|
+
module.exports = AgenticSessionMetrics;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_lib_base_command = require("../../../lib/base-command.cjs");
|
|
3
|
+
const require_lib_output = require("../../../lib/output.cjs");
|
|
4
|
+
let _oclif_core = require("@oclif/core");
|
|
5
|
+
let chalk = require("chalk");
|
|
6
|
+
chalk = require_runtime.__toESM(chalk);
|
|
7
|
+
//#region src/commands/agentic/session/status.ts
|
|
8
|
+
/**
|
|
9
|
+
* Agentic session status command — reports (stores) the outcome of an agentic
|
|
10
|
+
* (AI agent) session: what it accomplished, prompt count, duration, the AI
|
|
11
|
+
* provider used, and the TwentyThree skill version.
|
|
12
|
+
*/
|
|
13
|
+
var AgenticSessionStatus = class AgenticSessionStatus extends require_lib_base_command.AuthenticatedCommand {
|
|
14
|
+
static description = "Report (store) the status of an agentic (AI agent) session";
|
|
15
|
+
static examples = ["<%= config.bin %> agentic session status --session-identifier abc123 --summary \"Uploaded 3 videos\" --number-of-prompts 12 --session-duration-seconds 540 --ai-provider \"claude code\" --twentythree-skill-version 1.4.0", "<%= config.bin %> agentic session status --session-identifier abc123 --summary \"Created a webinar\" --number-of-prompts 5 --session-duration-seconds 120 --ai-provider \"codex\" --twentythree-skill-version 1.4.0 --json"];
|
|
16
|
+
static enableJsonFlag = true;
|
|
17
|
+
static agentMetadata = {
|
|
18
|
+
api_endpoint: "POST /agentic/session/status",
|
|
19
|
+
auth_scope: "read",
|
|
20
|
+
output_shape: { type: "none" },
|
|
21
|
+
side_effects: "creates"
|
|
22
|
+
};
|
|
23
|
+
static flags = {
|
|
24
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
25
|
+
"session-identifier": _oclif_core.Flags.string({
|
|
26
|
+
description: "Unique identifier for the agent session being reported",
|
|
27
|
+
required: true
|
|
28
|
+
}),
|
|
29
|
+
summary: _oclif_core.Flags.string({
|
|
30
|
+
description: "Short summary of what the agent session accomplished",
|
|
31
|
+
required: true
|
|
32
|
+
}),
|
|
33
|
+
"number-of-prompts": _oclif_core.Flags.integer({
|
|
34
|
+
description: "Number of user prompts in the agent session (0 if unknown)",
|
|
35
|
+
required: true
|
|
36
|
+
}),
|
|
37
|
+
"session-duration-seconds": _oclif_core.Flags.integer({
|
|
38
|
+
description: "Duration of the agent session, in seconds (0 if unknown)",
|
|
39
|
+
required: true
|
|
40
|
+
}),
|
|
41
|
+
"ai-provider": _oclif_core.Flags.string({
|
|
42
|
+
description: "AI/LLM provider used in the session (e.g. \"claude code\", \"codex\")",
|
|
43
|
+
required: true
|
|
44
|
+
}),
|
|
45
|
+
"twentythree-skill-version": _oclif_core.Flags.string({
|
|
46
|
+
description: "Version of the TwentyThree skill used (\"unknown\" if unknown)",
|
|
47
|
+
required: true
|
|
48
|
+
}),
|
|
49
|
+
fields: _oclif_core.Flags.string({
|
|
50
|
+
description: "Comma-separated fields to return",
|
|
51
|
+
required: false
|
|
52
|
+
})
|
|
53
|
+
};
|
|
54
|
+
static args = {};
|
|
55
|
+
async run() {
|
|
56
|
+
const { flags } = await this.parse(AgenticSessionStatus);
|
|
57
|
+
this.printWorkspaceHeader();
|
|
58
|
+
const body = {
|
|
59
|
+
session_identifier: flags["session-identifier"],
|
|
60
|
+
summary: flags.summary,
|
|
61
|
+
number_of_prompts: flags["number-of-prompts"],
|
|
62
|
+
session_duration_seconds: flags["session-duration-seconds"],
|
|
63
|
+
ai_provider: flags["ai-provider"],
|
|
64
|
+
twentythree_skill_version: flags["twentythree-skill-version"]
|
|
65
|
+
};
|
|
66
|
+
if (flags.fields) body.fields = flags.fields;
|
|
67
|
+
const { data, error } = await this.apiClient.POST("/agentic/session/status", {
|
|
68
|
+
body,
|
|
69
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
70
|
+
});
|
|
71
|
+
if (error) this.error(require_lib_output.formatApiError(error), { exit: 1 });
|
|
72
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
73
|
+
ok: true,
|
|
74
|
+
data,
|
|
75
|
+
summary: "Agentic session status reported",
|
|
76
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
77
|
+
resource: "agentic",
|
|
78
|
+
id: flags["session-identifier"]
|
|
79
|
+
}]
|
|
80
|
+
});
|
|
81
|
+
this.log(chalk.default.green("Agentic session status reported"));
|
|
82
|
+
this.log(`Session: ${flags["session-identifier"]}`);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
//#endregion
|
|
86
|
+
module.exports = AgenticSessionStatus;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_lib_base_command = require("../../lib/base-command.cjs");
|
|
3
|
+
const require_lib_output = require("../../lib/output.cjs");
|
|
4
|
+
let _oclif_core = require("@oclif/core");
|
|
5
|
+
//#region src/commands/seo/metrics.ts
|
|
6
|
+
/**
|
|
7
|
+
* SEO metrics command — retrieves workspace-wide SEO and GEO metrics:
|
|
8
|
+
* average score across all objects, video/webinar/page counts, and the
|
|
9
|
+
* library's SEO health broken into high/medium/low tiers.
|
|
10
|
+
*/
|
|
11
|
+
var SeoMetrics = class SeoMetrics extends require_lib_base_command.AuthenticatedCommand {
|
|
12
|
+
static description = "Get workspace-wide SEO and GEO metrics";
|
|
13
|
+
static examples = ["<%= config.bin %> seo metrics", "<%= config.bin %> seo metrics --json"];
|
|
14
|
+
static enableJsonFlag = true;
|
|
15
|
+
static agentMetadata = {
|
|
16
|
+
api_endpoint: "POST /seo/metrics",
|
|
17
|
+
auth_scope: "read",
|
|
18
|
+
output_shape: { type: "key-value" },
|
|
19
|
+
side_effects: "none"
|
|
20
|
+
};
|
|
21
|
+
static flags = {
|
|
22
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
23
|
+
fields: _oclif_core.Flags.string({
|
|
24
|
+
description: "Comma-separated fields to return",
|
|
25
|
+
required: false
|
|
26
|
+
})
|
|
27
|
+
};
|
|
28
|
+
async run() {
|
|
29
|
+
const { flags } = await this.parse(SeoMetrics);
|
|
30
|
+
this.printWorkspaceHeader();
|
|
31
|
+
const body = {};
|
|
32
|
+
if (flags.fields) body.fields = flags.fields;
|
|
33
|
+
const { data, error } = await this.apiClient.POST("/seo/metrics", {
|
|
34
|
+
body,
|
|
35
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
36
|
+
});
|
|
37
|
+
if (error) this.error(require_lib_output.formatApiError(error), { exit: 1 });
|
|
38
|
+
const domain = this.activeWorkspace.domain;
|
|
39
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
40
|
+
ok: true,
|
|
41
|
+
data,
|
|
42
|
+
summary: "SEO metrics",
|
|
43
|
+
breadcrumbs: [{ domain }, { resource: "seo" }]
|
|
44
|
+
});
|
|
45
|
+
const resp = data?.data ?? data;
|
|
46
|
+
this.log(`average_score: ${String(resp?.average_score ?? "")}`);
|
|
47
|
+
this.log(`video_count: ${String(resp?.video_count ?? "")}`);
|
|
48
|
+
this.log(`webinar_count: ${String(resp?.webinar_count ?? "")}`);
|
|
49
|
+
this.log(`page_count: ${String(resp?.page_count ?? "")}`);
|
|
50
|
+
this.log(`library_health_high: ${String(resp?.library_health_high ?? "")}`);
|
|
51
|
+
this.log(`library_health_medium: ${String(resp?.library_health_medium ?? "")}`);
|
|
52
|
+
this.log(`library_health_low: ${String(resp?.library_health_low ?? "")}`);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
//#endregion
|
|
56
|
+
module.exports = SeoMetrics;
|
|
@@ -19,11 +19,13 @@ chalk = require_runtime.__toESM(chalk);
|
|
|
19
19
|
* T-04-08: extends AuthenticatedCommand — anonymous mode rejected
|
|
20
20
|
*/
|
|
21
21
|
var WebinarCreate = class WebinarCreate extends require_lib_base_command.AuthenticatedCommand {
|
|
22
|
-
static description = "Create a new webinar";
|
|
22
|
+
static description = "Create a new webinar. By default the webinar is created as a draft with registration enabled (registration-mode=all); pass --no-draft/--publish or --registration-mode none to change this.";
|
|
23
23
|
static examples = [
|
|
24
24
|
"<%= config.bin %> webinar create --title \"My Webinar\"",
|
|
25
|
-
"<%= config.bin %> webinar create --title \"My Webinar\" --live-date \"2024-12-01T14:00:00Z\"",
|
|
26
|
-
"<%= config.bin %> webinar create --title \"My Webinar\" --
|
|
25
|
+
"<%= config.bin %> webinar create --title \"My Webinar\" --live-date \"2024-12-01T14:00:00Z\" --timezone Europe/Copenhagen",
|
|
26
|
+
"<%= config.bin %> webinar create --title \"My Webinar\" --format webinar --locale da_DK --category-id 127972488",
|
|
27
|
+
"<%= config.bin %> webinar create --title \"My Webinar\" --no-draft --no-private --publish-recordings",
|
|
28
|
+
"<%= config.bin %> webinar create --title \"Episode 3\" --series-id 67890 --json"
|
|
27
29
|
];
|
|
28
30
|
static enableJsonFlag = true;
|
|
29
31
|
static flags = {
|
|
@@ -58,6 +60,47 @@ var WebinarCreate = class WebinarCreate extends require_lib_base_command.Authent
|
|
|
58
60
|
description: "Assign a webinar design by ID to this webinar",
|
|
59
61
|
required: false
|
|
60
62
|
}),
|
|
63
|
+
format: _oclif_core.Flags.string({
|
|
64
|
+
description: "Webinar format: \"webinar\" (registration, hub) or \"event\" (freeform live stream)",
|
|
65
|
+
options: ["event", "webinar"],
|
|
66
|
+
required: false
|
|
67
|
+
}),
|
|
68
|
+
"registration-mode": _oclif_core.Flags.string({
|
|
69
|
+
description: "Registration mode. Defaults to \"all\" (registration enabled); pass \"none\" to disable.",
|
|
70
|
+
options: [
|
|
71
|
+
"",
|
|
72
|
+
"all",
|
|
73
|
+
"none"
|
|
74
|
+
],
|
|
75
|
+
default: "all",
|
|
76
|
+
required: false
|
|
77
|
+
}),
|
|
78
|
+
private: _oclif_core.Flags.boolean({
|
|
79
|
+
description: "Make the webinar private (use --no-private to make it public and appear on the hub)",
|
|
80
|
+
allowNo: true,
|
|
81
|
+
required: false
|
|
82
|
+
}),
|
|
83
|
+
"category-id": _oclif_core.Flags.integer({
|
|
84
|
+
description: "Assign the webinar to a category by ID (API album_id)",
|
|
85
|
+
required: false
|
|
86
|
+
}),
|
|
87
|
+
locale: _oclif_core.Flags.string({
|
|
88
|
+
description: "Webinar language/locale (e.g. en_US, da_DK)",
|
|
89
|
+
required: false
|
|
90
|
+
}),
|
|
91
|
+
"publish-recordings": _oclif_core.Flags.boolean({
|
|
92
|
+
description: "Publish the webinar recordings",
|
|
93
|
+
allowNo: true,
|
|
94
|
+
required: false
|
|
95
|
+
}),
|
|
96
|
+
"series-id": _oclif_core.Flags.integer({
|
|
97
|
+
description: "Attach the webinar to a webinar series by ID",
|
|
98
|
+
required: false
|
|
99
|
+
}),
|
|
100
|
+
timezone: _oclif_core.Flags.string({
|
|
101
|
+
description: "Timezone for the webinar schedule (e.g. Europe/Copenhagen)",
|
|
102
|
+
required: false
|
|
103
|
+
}),
|
|
61
104
|
"draft-p": _oclif_core.Flags.string({
|
|
62
105
|
hidden: true,
|
|
63
106
|
required: false
|
|
@@ -81,11 +124,20 @@ var WebinarCreate = class WebinarCreate extends require_lib_base_command.Authent
|
|
|
81
124
|
if (flags.description !== void 0) body.description = flags.description;
|
|
82
125
|
if (flags.status !== void 0) body.live_status = flags.status;
|
|
83
126
|
if (flags["live-date"] !== void 0) body.start_time = flags["live-date"];
|
|
84
|
-
const draftVal = require_lib_output.parseBoolParam(flags.draft, flags["draft-p"]);
|
|
85
|
-
if (draftVal !== void 0) body.draft_p = draftVal ? 1 : 0;
|
|
86
127
|
const publishVal = require_lib_output.parseBoolParam(flags.publish, flags["published-p"]);
|
|
128
|
+
let draftVal = require_lib_output.parseBoolParam(flags.draft, flags["draft-p"]);
|
|
129
|
+
if (draftVal === void 0) draftVal = publishVal === true ? false : true;
|
|
130
|
+
body.draft_p = draftVal ? 1 : 0;
|
|
87
131
|
if (publishVal !== void 0) body.published_p = publishVal ? 1 : 0;
|
|
88
132
|
if (flags["webinar-design-id"] !== void 0) body.webinar_design_id = flags["webinar-design-id"];
|
|
133
|
+
if (flags.format !== void 0) body.live_format = flags.format;
|
|
134
|
+
if (flags["registration-mode"] !== void 0) body.registration_mode = flags["registration-mode"];
|
|
135
|
+
if (flags.private !== void 0) body.private_p = flags.private ? 1 : 0;
|
|
136
|
+
if (flags["category-id"] !== void 0) body.album_id = flags["category-id"];
|
|
137
|
+
if (flags.locale !== void 0) body.locale = flags.locale;
|
|
138
|
+
if (flags["publish-recordings"] !== void 0) body.publish_recordings_p = flags["publish-recordings"] ? 1 : 0;
|
|
139
|
+
if (flags["series-id"] !== void 0) body.live_series_id = flags["series-id"];
|
|
140
|
+
if (flags.timezone !== void 0) body.timezone = flags.timezone;
|
|
89
141
|
const { data: createData, error: createError } = await this.apiClient.POST("/live/create", {
|
|
90
142
|
body,
|
|
91
143
|
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
@@ -34,6 +34,37 @@ var WebinarMailAdd = class WebinarMailAdd extends require_lib_base_command.Authe
|
|
|
34
34
|
message: _oclif_core.Flags.string({
|
|
35
35
|
description: "Email message body",
|
|
36
36
|
required: false
|
|
37
|
+
}),
|
|
38
|
+
"recipient-groups": _oclif_core.Flags.string({
|
|
39
|
+
description: "Recipient groups (comma-separated): speakers, registered, attendees, noshows",
|
|
40
|
+
required: false
|
|
41
|
+
}),
|
|
42
|
+
"scheduled-at": _oclif_core.Flags.string({
|
|
43
|
+
description: "When to send the email (ISO 8601 timestamp)",
|
|
44
|
+
required: false
|
|
45
|
+
}),
|
|
46
|
+
"cta-link": _oclif_core.Flags.string({
|
|
47
|
+
description: "Call-to-action link URL",
|
|
48
|
+
required: false
|
|
49
|
+
}),
|
|
50
|
+
"cta-label": _oclif_core.Flags.string({
|
|
51
|
+
description: "Call-to-action button label",
|
|
52
|
+
required: false
|
|
53
|
+
}),
|
|
54
|
+
"send-immediately": _oclif_core.Flags.boolean({
|
|
55
|
+
description: "Send the email immediately",
|
|
56
|
+
allowNo: true,
|
|
57
|
+
required: false
|
|
58
|
+
}),
|
|
59
|
+
"include-live-info": _oclif_core.Flags.boolean({
|
|
60
|
+
description: "Include the webinar info block in the email",
|
|
61
|
+
allowNo: true,
|
|
62
|
+
required: false
|
|
63
|
+
}),
|
|
64
|
+
"include-series-archive": _oclif_core.Flags.boolean({
|
|
65
|
+
description: "Include the series archive block in the email",
|
|
66
|
+
allowNo: true,
|
|
67
|
+
required: false
|
|
37
68
|
})
|
|
38
69
|
};
|
|
39
70
|
static args = { id: _oclif_core.Args.string({
|
|
@@ -67,12 +98,20 @@ var WebinarMailAdd = class WebinarMailAdd extends require_lib_base_command.Authe
|
|
|
67
98
|
}
|
|
68
99
|
if (!subject) this.error("--subject is required in non-interactive mode", { exit: 1 });
|
|
69
100
|
if (!message) this.error("--message is required in non-interactive mode", { exit: 1 });
|
|
101
|
+
const body = {
|
|
102
|
+
...contextField,
|
|
103
|
+
subject,
|
|
104
|
+
message
|
|
105
|
+
};
|
|
106
|
+
if (flags["recipient-groups"] !== void 0) body.recipient_groups = flags["recipient-groups"];
|
|
107
|
+
if (flags["scheduled-at"] !== void 0) body.scheduled_at = flags["scheduled-at"];
|
|
108
|
+
if (flags["cta-link"] !== void 0) body.cta_link = flags["cta-link"];
|
|
109
|
+
if (flags["cta-label"] !== void 0) body.cta_label = flags["cta-label"];
|
|
110
|
+
if (flags["send-immediately"] !== void 0) body.send_immediately_p = flags["send-immediately"] ? 1 : 0;
|
|
111
|
+
if (flags["include-live-info"] !== void 0) body.include_live_info_p = flags["include-live-info"] ? 1 : 0;
|
|
112
|
+
if (flags["include-series-archive"] !== void 0) body.include_series_archive_p = flags["include-series-archive"] ? 1 : 0;
|
|
70
113
|
const { data, error } = await this.apiClient.POST("/live/mail/add", {
|
|
71
|
-
body
|
|
72
|
-
...contextField,
|
|
73
|
-
subject,
|
|
74
|
-
message
|
|
75
|
-
},
|
|
114
|
+
body,
|
|
76
115
|
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
77
116
|
});
|
|
78
117
|
if (error) this.error(require_lib_term_map.applyCliTerms(require_lib_output.formatApiError(error)), { exit: 1 });
|
|
@@ -40,6 +40,42 @@ var WebinarMailUpdate = class WebinarMailUpdate extends require_lib_base_command
|
|
|
40
40
|
message: _oclif_core.Flags.string({
|
|
41
41
|
description: "Email message body",
|
|
42
42
|
required: false
|
|
43
|
+
}),
|
|
44
|
+
enabled: _oclif_core.Flags.boolean({
|
|
45
|
+
description: "Enable or disable the email (e.g. --no-enabled to disable the \"missed\" mail)",
|
|
46
|
+
allowNo: true,
|
|
47
|
+
required: false
|
|
48
|
+
}),
|
|
49
|
+
"recipient-groups": _oclif_core.Flags.string({
|
|
50
|
+
description: "Recipient groups (comma-separated): speakers, registered, attendees, noshows",
|
|
51
|
+
required: false
|
|
52
|
+
}),
|
|
53
|
+
"scheduled-at": _oclif_core.Flags.string({
|
|
54
|
+
description: "When to send the email (ISO 8601 timestamp)",
|
|
55
|
+
required: false
|
|
56
|
+
}),
|
|
57
|
+
"cta-link": _oclif_core.Flags.string({
|
|
58
|
+
description: "Call-to-action link URL",
|
|
59
|
+
required: false
|
|
60
|
+
}),
|
|
61
|
+
"cta-label": _oclif_core.Flags.string({
|
|
62
|
+
description: "Call-to-action button label",
|
|
63
|
+
required: false
|
|
64
|
+
}),
|
|
65
|
+
"include-live-info": _oclif_core.Flags.boolean({
|
|
66
|
+
description: "Include the webinar info block in the email",
|
|
67
|
+
allowNo: true,
|
|
68
|
+
required: false
|
|
69
|
+
}),
|
|
70
|
+
"include-series-archive": _oclif_core.Flags.boolean({
|
|
71
|
+
description: "Include the series archive block in the email",
|
|
72
|
+
allowNo: true,
|
|
73
|
+
required: false
|
|
74
|
+
}),
|
|
75
|
+
"require-recording": _oclif_core.Flags.boolean({
|
|
76
|
+
description: "Only send once a recording is available",
|
|
77
|
+
allowNo: true,
|
|
78
|
+
required: false
|
|
43
79
|
})
|
|
44
80
|
};
|
|
45
81
|
static args = { id: _oclif_core.Args.string({
|
|
@@ -63,6 +99,14 @@ var WebinarMailUpdate = class WebinarMailUpdate extends require_lib_base_command
|
|
|
63
99
|
};
|
|
64
100
|
if (flags.subject !== void 0) body.subject = flags.subject;
|
|
65
101
|
if (flags.message !== void 0) body.message = flags.message;
|
|
102
|
+
if (flags.enabled !== void 0) body.enabled_p = flags.enabled ? 1 : 0;
|
|
103
|
+
if (flags["recipient-groups"] !== void 0) body.recipient_groups = flags["recipient-groups"];
|
|
104
|
+
if (flags["scheduled-at"] !== void 0) body.scheduled_at = flags["scheduled-at"];
|
|
105
|
+
if (flags["cta-link"] !== void 0) body.cta_link = flags["cta-link"];
|
|
106
|
+
if (flags["cta-label"] !== void 0) body.cta_label = flags["cta-label"];
|
|
107
|
+
if (flags["include-live-info"] !== void 0) body.include_live_info_p = flags["include-live-info"] ? 1 : 0;
|
|
108
|
+
if (flags["include-series-archive"] !== void 0) body.include_series_archive_p = flags["include-series-archive"] ? 1 : 0;
|
|
109
|
+
if (flags["require-recording"] !== void 0) body.require_recording_p = flags["require-recording"] ? 1 : 0;
|
|
66
110
|
const { data, error } = await this.apiClient.POST("/live/mail/update", {
|
|
67
111
|
body,
|
|
68
112
|
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
@@ -38,8 +38,32 @@ var WebinarSpeakerAdd = class WebinarSpeakerAdd extends require_lib_base_command
|
|
|
38
38
|
description: "Speaker title or job title",
|
|
39
39
|
required: false
|
|
40
40
|
}),
|
|
41
|
+
bio: _oclif_core.Flags.string({
|
|
42
|
+
description: "Speaker bio shown in the UI",
|
|
43
|
+
required: false
|
|
44
|
+
}),
|
|
41
45
|
description: _oclif_core.Flags.string({
|
|
42
|
-
description: "
|
|
46
|
+
description: "Alias for --bio (sets the speaker bio shown in the UI)",
|
|
47
|
+
required: false
|
|
48
|
+
}),
|
|
49
|
+
company: _oclif_core.Flags.string({
|
|
50
|
+
description: "Speaker company / organization",
|
|
51
|
+
required: false
|
|
52
|
+
}),
|
|
53
|
+
website: _oclif_core.Flags.string({
|
|
54
|
+
description: "Speaker website URL",
|
|
55
|
+
required: false
|
|
56
|
+
}),
|
|
57
|
+
linkedin: _oclif_core.Flags.string({
|
|
58
|
+
description: "Speaker LinkedIn URL or handle",
|
|
59
|
+
required: false
|
|
60
|
+
}),
|
|
61
|
+
facebook: _oclif_core.Flags.string({
|
|
62
|
+
description: "Speaker Facebook URL or handle",
|
|
63
|
+
required: false
|
|
64
|
+
}),
|
|
65
|
+
twitter: _oclif_core.Flags.string({
|
|
66
|
+
description: "Speaker Twitter/X handle",
|
|
43
67
|
required: false
|
|
44
68
|
}),
|
|
45
69
|
"connection-type": _oclif_core.Flags.string({
|
|
@@ -86,7 +110,13 @@ var WebinarSpeakerAdd = class WebinarSpeakerAdd extends require_lib_base_command
|
|
|
86
110
|
};
|
|
87
111
|
if (email !== void 0) body.email = email;
|
|
88
112
|
if (flags.title !== void 0) body.title = flags.title;
|
|
89
|
-
|
|
113
|
+
const bio = flags.bio ?? flags.description;
|
|
114
|
+
if (bio !== void 0) body.bio = bio;
|
|
115
|
+
if (flags.company !== void 0) body.company = flags.company;
|
|
116
|
+
if (flags.website !== void 0) body.link = flags.website;
|
|
117
|
+
if (flags.linkedin !== void 0) body.linkedin = flags.linkedin;
|
|
118
|
+
if (flags.facebook !== void 0) body.facebook = flags.facebook;
|
|
119
|
+
if (flags.twitter !== void 0) body.twitter = flags.twitter;
|
|
90
120
|
if (flags["connection-type"] !== void 0) body.connection_type = flags["connection-type"];
|
|
91
121
|
if (flags["connection-type-pull-url"] !== void 0) body.connection_type_pull_url = flags["connection-type-pull-url"];
|
|
92
122
|
const { data, error } = await this.apiClient.POST("/live/speaker/add", {
|
|
@@ -37,8 +37,32 @@ var WebinarSpeakerUpdate = class WebinarSpeakerUpdate extends require_lib_base_c
|
|
|
37
37
|
description: "Speaker title or job title",
|
|
38
38
|
required: false
|
|
39
39
|
}),
|
|
40
|
+
bio: _oclif_core.Flags.string({
|
|
41
|
+
description: "Speaker bio shown in the UI",
|
|
42
|
+
required: false
|
|
43
|
+
}),
|
|
40
44
|
description: _oclif_core.Flags.string({
|
|
41
|
-
description: "
|
|
45
|
+
description: "Alias for --bio (sets the speaker bio shown in the UI)",
|
|
46
|
+
required: false
|
|
47
|
+
}),
|
|
48
|
+
company: _oclif_core.Flags.string({
|
|
49
|
+
description: "Speaker company / organization",
|
|
50
|
+
required: false
|
|
51
|
+
}),
|
|
52
|
+
website: _oclif_core.Flags.string({
|
|
53
|
+
description: "Speaker website URL",
|
|
54
|
+
required: false
|
|
55
|
+
}),
|
|
56
|
+
linkedin: _oclif_core.Flags.string({
|
|
57
|
+
description: "Speaker LinkedIn URL or handle",
|
|
58
|
+
required: false
|
|
59
|
+
}),
|
|
60
|
+
facebook: _oclif_core.Flags.string({
|
|
61
|
+
description: "Speaker Facebook URL or handle",
|
|
62
|
+
required: false
|
|
63
|
+
}),
|
|
64
|
+
twitter: _oclif_core.Flags.string({
|
|
65
|
+
description: "Speaker Twitter/X handle",
|
|
42
66
|
required: false
|
|
43
67
|
}),
|
|
44
68
|
"connection-type": _oclif_core.Flags.string({
|
|
@@ -84,7 +108,13 @@ var WebinarSpeakerUpdate = class WebinarSpeakerUpdate extends require_lib_base_c
|
|
|
84
108
|
if (flags.name !== void 0) body.name = flags.name;
|
|
85
109
|
if (flags.email !== void 0) body.email = flags.email;
|
|
86
110
|
if (flags.title !== void 0) body.title = flags.title;
|
|
87
|
-
|
|
111
|
+
const bio = flags.bio ?? flags.description;
|
|
112
|
+
if (bio !== void 0) body.bio = bio;
|
|
113
|
+
if (flags.company !== void 0) body.company = flags.company;
|
|
114
|
+
if (flags.website !== void 0) body.link = flags.website;
|
|
115
|
+
if (flags.linkedin !== void 0) body.linkedin = flags.linkedin;
|
|
116
|
+
if (flags.facebook !== void 0) body.facebook = flags.facebook;
|
|
117
|
+
if (flags.twitter !== void 0) body.twitter = flags.twitter;
|
|
88
118
|
if (flags["connection-type"] !== void 0) body.connection_type = flags["connection-type"];
|
|
89
119
|
if (flags["connection-type-pull-url"] !== void 0) body.connection_type_pull_url = flags["connection-type-pull-url"];
|
|
90
120
|
const { data, error } = await this.apiClient.POST("/live/speaker/update", {
|
|
@@ -71,6 +71,47 @@ var WebinarUpdate = class WebinarUpdate extends require_lib_base_command.Authent
|
|
|
71
71
|
description: "Assign a webinar design by ID to this webinar",
|
|
72
72
|
required: false
|
|
73
73
|
}),
|
|
74
|
+
format: _oclif_core.Flags.string({
|
|
75
|
+
description: "Webinar format: \"webinar\" or \"event\"",
|
|
76
|
+
options: ["event", "webinar"],
|
|
77
|
+
required: false
|
|
78
|
+
}),
|
|
79
|
+
"registration-mode": _oclif_core.Flags.string({
|
|
80
|
+
description: "Registration mode: \"all\" (enabled) or \"none\" (disabled)",
|
|
81
|
+
options: ["all", "none"],
|
|
82
|
+
required: false
|
|
83
|
+
}),
|
|
84
|
+
private: _oclif_core.Flags.boolean({
|
|
85
|
+
description: "Make the webinar private (use --no-private to make it public)",
|
|
86
|
+
allowNo: true,
|
|
87
|
+
required: false
|
|
88
|
+
}),
|
|
89
|
+
"category-id": _oclif_core.Flags.integer({
|
|
90
|
+
description: "Assign the webinar to a category by ID (API album_id)",
|
|
91
|
+
required: false
|
|
92
|
+
}),
|
|
93
|
+
locale: _oclif_core.Flags.string({
|
|
94
|
+
description: "Webinar language/locale (e.g. en_US, da_DK)",
|
|
95
|
+
required: false
|
|
96
|
+
}),
|
|
97
|
+
"publish-recordings": _oclif_core.Flags.boolean({
|
|
98
|
+
description: "Publish the webinar recordings",
|
|
99
|
+
allowNo: true,
|
|
100
|
+
required: false
|
|
101
|
+
}),
|
|
102
|
+
ondemand: _oclif_core.Flags.boolean({
|
|
103
|
+
description: "Make the recording available on demand",
|
|
104
|
+
allowNo: true,
|
|
105
|
+
required: false
|
|
106
|
+
}),
|
|
107
|
+
"series-id": _oclif_core.Flags.integer({
|
|
108
|
+
description: "Attach the webinar to a webinar series by ID",
|
|
109
|
+
required: false
|
|
110
|
+
}),
|
|
111
|
+
timezone: _oclif_core.Flags.string({
|
|
112
|
+
description: "Timezone for the webinar schedule (e.g. Europe/Copenhagen)",
|
|
113
|
+
required: false
|
|
114
|
+
}),
|
|
74
115
|
"draft-p": _oclif_core.Flags.string({
|
|
75
116
|
hidden: true,
|
|
76
117
|
required: false
|
|
@@ -105,7 +146,16 @@ var WebinarUpdate = class WebinarUpdate extends require_lib_base_command.Authent
|
|
|
105
146
|
flags["draft-p"],
|
|
106
147
|
flags["published-p"],
|
|
107
148
|
flags["seo-policy"],
|
|
108
|
-
flags["webinar-design-id"]
|
|
149
|
+
flags["webinar-design-id"],
|
|
150
|
+
flags.format,
|
|
151
|
+
flags["registration-mode"],
|
|
152
|
+
flags.private,
|
|
153
|
+
flags["category-id"],
|
|
154
|
+
flags.locale,
|
|
155
|
+
flags["publish-recordings"],
|
|
156
|
+
flags.ondemand,
|
|
157
|
+
flags["series-id"],
|
|
158
|
+
flags.timezone
|
|
109
159
|
].some((v) => v !== void 0);
|
|
110
160
|
const body = { live_id: webinarId };
|
|
111
161
|
if (!metadataFlagsProvided && !this.jsonEnabled()) {
|
|
@@ -187,6 +237,15 @@ var WebinarUpdate = class WebinarUpdate extends require_lib_base_command.Authent
|
|
|
187
237
|
if (publishVal !== void 0) body.published_p = publishVal ? 1 : 0;
|
|
188
238
|
if (flags["seo-policy"] !== void 0) body.seo_policy = flags["seo-policy"];
|
|
189
239
|
if (flags["webinar-design-id"] !== void 0) body.webinar_design_id = flags["webinar-design-id"];
|
|
240
|
+
if (flags.format !== void 0) body.live_format = flags.format;
|
|
241
|
+
if (flags["registration-mode"] !== void 0) body.registration_mode = flags["registration-mode"];
|
|
242
|
+
if (flags.private !== void 0) body.private_p = flags.private ? 1 : 0;
|
|
243
|
+
if (flags["category-id"] !== void 0) body.album_id = flags["category-id"];
|
|
244
|
+
if (flags.locale !== void 0) body.locale = flags.locale;
|
|
245
|
+
if (flags["publish-recordings"] !== void 0) body.publish_recordings_p = flags["publish-recordings"] ? 1 : 0;
|
|
246
|
+
if (flags.ondemand !== void 0) body.enable_ondemand_p = flags.ondemand ? 1 : 0;
|
|
247
|
+
if (flags["series-id"] !== void 0) body.live_series_id = flags["series-id"];
|
|
248
|
+
if (flags.timezone !== void 0) body.timezone = flags.timezone;
|
|
190
249
|
}
|
|
191
250
|
const { data: updateData, error: updateError } = await this.apiClient.POST("/live/update", {
|
|
192
251
|
body,
|
|
@@ -33,4 +33,4 @@ EXAMPLES
|
|
|
33
33
|
$ twentythree action add --type overlay --object-id 12345 --json
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
_See code: [src/commands/action/add.ts](https://github.com/23/twentythree-cli/blob/v1.
|
|
36
|
+
_See code: [src/commands/action/add.ts](https://github.com/23/twentythree-cli/blob/v1.5.0/src/commands/action/add.ts)_
|