twentythree-skills 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 +47 -0
- package/bin/add.js +103 -0
- package/package.json +46 -0
- package/skills/SKILL.md +211 -0
- package/skills/reference/action.md +233 -0
- package/skills/reference/analytics.md +337 -0
- package/skills/reference/app.md +160 -0
- package/skills/reference/audience.md +377 -0
- package/skills/reference/category.md +123 -0
- package/skills/reference/collector.md +103 -0
- package/skills/reference/comment.md +225 -0
- package/skills/reference/openupload.md +138 -0
- package/skills/reference/player.md +192 -0
- package/skills/reference/poll.md +174 -0
- package/skills/reference/presentation.md +99 -0
- package/skills/reference/protection.md +131 -0
- package/skills/reference/session.md +98 -0
- package/skills/reference/setting.md +115 -0
- package/skills/reference/site.md +94 -0
- package/skills/reference/spot.md +188 -0
- package/skills/reference/tag.md +93 -0
- package/skills/reference/thumbnail.md +224 -0
- package/skills/reference/user.md +216 -0
- package/skills/reference/video.md +631 -0
- package/skills/reference/webhook.md +151 -0
- package/skills/reference/webinar.md +1371 -0
- package/skills/workflows/upload-and-publish.md +146 -0
- package/skills/workflows/webinar-lifecycle.md +209 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: poll
|
|
3
|
+
description: Create and manage in-webinar polls (questions with answer options shown to live viewers).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Poll Commands
|
|
7
|
+
|
|
8
|
+
> Create, configure, and manage interactive polls shown to live webinar viewers.
|
|
9
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Auth scope required: anonymous (list, answer), write (add, update, remove, set-options).
|
|
14
|
+
Run `twentythree auth credentials` if not already configured.
|
|
15
|
+
Verify: `twentythree auth status --json`
|
|
16
|
+
|
|
17
|
+
> Polls are attached to webinars (live objects) via `--object-id`. Always pass the webinar ID as `--object-id`.
|
|
18
|
+
> For any flag not listed here, run `twentythree poll <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### poll list
|
|
23
|
+
|
|
24
|
+
**Auth scope:** anonymous **Side effects:** none **Output:** table (ID, Question, Open, Results Visible)
|
|
25
|
+
|
|
26
|
+
Flags:
|
|
27
|
+
|
|
28
|
+
| Flag | Required | Description |
|
|
29
|
+
|------|----------|-------------|
|
|
30
|
+
| `--object-id` | yes | Object ID (webinar or live object) |
|
|
31
|
+
| `--object-token` | no | Object token (auto-looked up if omitted) |
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# List all polls for a webinar
|
|
35
|
+
twentythree poll list --object-id <webinar-id> --json
|
|
36
|
+
|
|
37
|
+
# List polls using a specific object token
|
|
38
|
+
twentythree poll list --object-id <webinar-id> --object-token <token> --json
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### poll add
|
|
42
|
+
|
|
43
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
44
|
+
|
|
45
|
+
Flags:
|
|
46
|
+
|
|
47
|
+
| Flag | Required | Description |
|
|
48
|
+
|------|----------|-------------|
|
|
49
|
+
| `--object-id` | yes | Object ID (webinar or live object) |
|
|
50
|
+
| `--question` | no | Poll question text |
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Create a new poll for a webinar
|
|
54
|
+
twentythree poll add --object-id <webinar-id> --question "What is your role?" --json
|
|
55
|
+
|
|
56
|
+
# Create a poll without a question (set it later with update)
|
|
57
|
+
twentythree poll add --object-id <webinar-id> --json
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### poll update
|
|
61
|
+
|
|
62
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
63
|
+
|
|
64
|
+
Takes `<poll-id>` as positional argument.
|
|
65
|
+
|
|
66
|
+
Flags:
|
|
67
|
+
|
|
68
|
+
| Flag | Required | Description |
|
|
69
|
+
|------|----------|-------------|
|
|
70
|
+
| `--question` | no | Updated poll question text |
|
|
71
|
+
| `--open` | no | Open or close the poll (boolean) |
|
|
72
|
+
| `--display-results` | no | Show or hide results to viewers (boolean) |
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Open a poll for voting
|
|
76
|
+
twentythree poll update <poll-id> --open --json
|
|
77
|
+
|
|
78
|
+
# Close the poll and display results to viewers
|
|
79
|
+
twentythree poll update <poll-id> --no-open --display-results --json
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### poll remove
|
|
83
|
+
|
|
84
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
85
|
+
|
|
86
|
+
Takes `<poll-id>` as positional argument. No additional flags.
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Delete a poll from a webinar
|
|
90
|
+
twentythree poll remove <poll-id> --json
|
|
91
|
+
|
|
92
|
+
# Remove a poll that is no longer needed
|
|
93
|
+
twentythree poll remove <poll-id> --json
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### poll answer
|
|
97
|
+
|
|
98
|
+
**Auth scope:** anonymous **Side effects:** creates **Output:** none
|
|
99
|
+
|
|
100
|
+
Takes `<poll-id>` as positional argument. Submits a viewer's answer to a poll.
|
|
101
|
+
|
|
102
|
+
Flags:
|
|
103
|
+
|
|
104
|
+
| Flag | Required | Description |
|
|
105
|
+
|------|----------|-------------|
|
|
106
|
+
| `--object-id` | no | Object ID (webinar or live object) |
|
|
107
|
+
| `--object-token` | no | Object token (auto-looked up if omitted) |
|
|
108
|
+
| `--option-id` | no | Poll option ID to vote for |
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Submit a poll answer by option ID
|
|
112
|
+
twentythree poll answer <poll-id> --object-id <webinar-id> --option-id <option-id> --json
|
|
113
|
+
|
|
114
|
+
# Answer with an object token
|
|
115
|
+
twentythree poll answer <poll-id> --object-id <webinar-id> --object-token <token> --option-id <option-id> --json
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### poll set-options
|
|
119
|
+
|
|
120
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
121
|
+
|
|
122
|
+
Takes `<poll-id>` as positional argument. Use `--option` repeatedly to set multiple options.
|
|
123
|
+
|
|
124
|
+
Flags:
|
|
125
|
+
|
|
126
|
+
| Flag | Required | Description |
|
|
127
|
+
|------|----------|-------------|
|
|
128
|
+
| `--option` | no | Poll option text (repeat flag for multiple options) |
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Set two options on a poll
|
|
132
|
+
twentythree poll set-options <poll-id> --option "Yes" --option "No" --json
|
|
133
|
+
|
|
134
|
+
# Set multiple options
|
|
135
|
+
twentythree poll set-options <poll-id> --option "Option A" --option "Option B" --option "Option C" --json
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Common Patterns
|
|
139
|
+
|
|
140
|
+
### Create a poll with options and open it for voting
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Step 1: Create the poll for a webinar
|
|
144
|
+
twentythree poll add --object-id <webinar-id> --question "Which feature matters most?" --json
|
|
145
|
+
|
|
146
|
+
# Step 2: Set the answer options using the poll ID from step 1
|
|
147
|
+
twentythree poll set-options <poll-id> --option "Performance" --option "Ease of Use" --option "Integrations" --json
|
|
148
|
+
|
|
149
|
+
# Step 3: Open the poll so viewers can vote
|
|
150
|
+
twentythree poll update <poll-id> --open --json
|
|
151
|
+
|
|
152
|
+
# Step 4: Close the poll and display results at the end
|
|
153
|
+
twentythree poll update <poll-id> --no-open --display-results --json
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Review existing polls on a webinar
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# List all polls and their current state
|
|
160
|
+
twentythree poll list --object-id <webinar-id> --json
|
|
161
|
+
|
|
162
|
+
# Open a previously closed poll again
|
|
163
|
+
twentythree poll update <poll-id> --open --json
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Update a poll question before opening
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Change the question text before opening to viewers
|
|
170
|
+
twentythree poll update <poll-id> --question "Updated: Which feature is most important?" --json
|
|
171
|
+
|
|
172
|
+
# Then open for voting
|
|
173
|
+
twentythree poll update <poll-id> --open --json
|
|
174
|
+
```
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: presentation
|
|
3
|
+
description: Workspace-level presentation and embed settings (link locations and setting CRUD).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Presentation Commands
|
|
7
|
+
|
|
8
|
+
> Manage workspace-level presentation and embed configuration.
|
|
9
|
+
> There is no CRUD for presentation objects — these commands manage workspace-level settings only.
|
|
10
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
Auth scope required: read (page link-locations, setting list), write (setting update).
|
|
15
|
+
Run `twentythree auth credentials` if not already configured.
|
|
16
|
+
Verify: `twentythree auth status --json`
|
|
17
|
+
|
|
18
|
+
> For any flag not listed here, run `twentythree presentation <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### presentation page link-locations
|
|
23
|
+
|
|
24
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Link Location, Label)
|
|
25
|
+
|
|
26
|
+
Lists valid link location identifiers for presentation pages. No flags required.
|
|
27
|
+
Use this to discover accepted values before authoring presentation content.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Discover all available link locations
|
|
31
|
+
twentythree presentation page link-locations --json
|
|
32
|
+
|
|
33
|
+
# Use in a script to inspect available values
|
|
34
|
+
twentythree presentation page link-locations --json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### presentation setting list
|
|
38
|
+
|
|
39
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value
|
|
40
|
+
|
|
41
|
+
Lists all current workspace presentation settings as key-value pairs. No flags required.
|
|
42
|
+
Use this to review current configuration before making updates.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# List all current presentation settings
|
|
46
|
+
twentythree presentation setting list --json
|
|
47
|
+
|
|
48
|
+
# Inspect settings before planning updates
|
|
49
|
+
twentythree presentation setting list --json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### presentation setting update
|
|
53
|
+
|
|
54
|
+
**Auth scope:** write **Side effects:** updates **Output:** key-value
|
|
55
|
+
|
|
56
|
+
Updates one or more workspace presentation settings. The `--set` flag is repeatable — pass it
|
|
57
|
+
multiple times to update several settings in a single call.
|
|
58
|
+
|
|
59
|
+
Flags:
|
|
60
|
+
|
|
61
|
+
| Flag | Required | Description |
|
|
62
|
+
|------|----------|-------------|
|
|
63
|
+
| `--set` | no | Setting key=value pair (repeatable) |
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Update the site name
|
|
67
|
+
twentythree presentation setting update --set site_name="My Brand" --json
|
|
68
|
+
|
|
69
|
+
# Update multiple settings atomically
|
|
70
|
+
twentythree presentation setting update \
|
|
71
|
+
--set site_name="My Brand" \
|
|
72
|
+
--set logo_url="https://example.com/logo.png" \
|
|
73
|
+
--json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Common Patterns
|
|
77
|
+
|
|
78
|
+
### Discover link locations before authoring content
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Step 1: List available link locations to know accepted values
|
|
82
|
+
twentythree presentation page link-locations --json
|
|
83
|
+
|
|
84
|
+
# Step 2: Review current presentation settings
|
|
85
|
+
twentythree presentation setting list --json
|
|
86
|
+
|
|
87
|
+
# Step 3: Update relevant settings
|
|
88
|
+
twentythree presentation setting update --set site_name="Updated Brand" --json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Update multiple presentation settings atomically
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Apply several settings in one command call
|
|
95
|
+
twentythree presentation setting update \
|
|
96
|
+
--set site_name="Q2 Campaign" \
|
|
97
|
+
--set logo_url="https://assets.example.com/logo-q2.png" \
|
|
98
|
+
--json
|
|
99
|
+
```
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: protection
|
|
3
|
+
description: Apply and verify access protection (password/SSO/token) on videos and webinars.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Protection Commands
|
|
7
|
+
|
|
8
|
+
> Apply, remove, and verify access protection on videos and webinars.
|
|
9
|
+
> Supported protection methods: `password`, `sso`, `token`.
|
|
10
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
Auth scope required: write (protect, unprotect), read (verify).
|
|
15
|
+
Valid `--protection-method` values: `password`, `sso`, `token`.
|
|
16
|
+
Run `twentythree auth credentials` if not already configured.
|
|
17
|
+
Verify: `twentythree auth status --json`
|
|
18
|
+
|
|
19
|
+
> For any flag not listed here, run `twentythree protection <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
20
|
+
|
|
21
|
+
## Commands
|
|
22
|
+
|
|
23
|
+
### protection protect
|
|
24
|
+
|
|
25
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value
|
|
26
|
+
|
|
27
|
+
Applies protection to a video or webinar. Specify the method with `--protection-method`.
|
|
28
|
+
The optional `--grace-minutes` flag delays protection activation to allow existing sessions to continue.
|
|
29
|
+
|
|
30
|
+
Flags:
|
|
31
|
+
|
|
32
|
+
| Flag | Required | Description |
|
|
33
|
+
|------|----------|-------------|
|
|
34
|
+
| `--protection-method` | yes | Protection method: `password`, `sso`, or `token` |
|
|
35
|
+
| `--object-id` | no | ID of the video or webinar to protect |
|
|
36
|
+
| `--grace-minutes` | no | Grace period in minutes before protection activates |
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Protect a video with password, allowing a 10-minute grace period
|
|
40
|
+
twentythree protection protect --protection-method password \
|
|
41
|
+
--object-id <video-id> --grace-minutes 10 --json
|
|
42
|
+
|
|
43
|
+
# Apply SSO protection to a webinar
|
|
44
|
+
twentythree protection protect --protection-method sso \
|
|
45
|
+
--object-id <webinar-id> --json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### protection unprotect
|
|
49
|
+
|
|
50
|
+
**Auth scope:** write **Side effects:** destructive **Output:** key-value
|
|
51
|
+
|
|
52
|
+
Removes protection from a video or webinar.
|
|
53
|
+
|
|
54
|
+
Flags:
|
|
55
|
+
|
|
56
|
+
| Flag | Required | Description |
|
|
57
|
+
|------|----------|-------------|
|
|
58
|
+
| `--object-id` | no | ID of the video or webinar to unprotect |
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Remove protection from a specific video
|
|
62
|
+
twentythree protection unprotect --object-id <video-id> --json
|
|
63
|
+
|
|
64
|
+
# Remove protection from a webinar
|
|
65
|
+
twentythree protection unprotect --object-id <webinar-id> --json
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### protection verify
|
|
69
|
+
|
|
70
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value
|
|
71
|
+
|
|
72
|
+
Checks whether a viewer has valid credentials for protected content. Useful for server-side
|
|
73
|
+
access checks before serving an embed or issuing a session token.
|
|
74
|
+
|
|
75
|
+
Flags:
|
|
76
|
+
|
|
77
|
+
| Flag | Required | Description |
|
|
78
|
+
|------|----------|-------------|
|
|
79
|
+
| `--protection-method` | yes | Protection method to verify against: `password`, `sso`, or `token` |
|
|
80
|
+
| `--video-id` | no | Video ID to verify access for (maps to photo_id in API) |
|
|
81
|
+
| `--webinar-id` | no | Webinar ID to verify access for (maps to live_id in API) |
|
|
82
|
+
| `--object-id` | no | Object ID to verify access for |
|
|
83
|
+
| `--verification-data` | no | Verification data (e.g. password value, token) |
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Verify password access to a video
|
|
87
|
+
twentythree protection verify --protection-method password \
|
|
88
|
+
--video-id <video-id> --verification-data "secretpass" --json
|
|
89
|
+
|
|
90
|
+
# Verify token access to a webinar
|
|
91
|
+
twentythree protection verify --protection-method token \
|
|
92
|
+
--webinar-id <webinar-id> --verification-data <viewer-token> --json
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Common Patterns
|
|
96
|
+
|
|
97
|
+
### Protect a webinar with a password and a grace period
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Apply password protection with a 30-minute grace period for current viewers
|
|
101
|
+
twentythree protection protect \
|
|
102
|
+
--protection-method password \
|
|
103
|
+
--object-id <webinar-id> \
|
|
104
|
+
--grace-minutes 30 \
|
|
105
|
+
--json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Verify a viewer's access before serving content
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Server-side check: verify the viewer has a valid token before embedding
|
|
112
|
+
twentythree protection verify \
|
|
113
|
+
--protection-method token \
|
|
114
|
+
--video-id <video-id> \
|
|
115
|
+
--verification-data <viewer-token> \
|
|
116
|
+
--json
|
|
117
|
+
# => Returns access status in the response
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Full lifecycle: protect, verify, then unprotect
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Step 1: Apply SSO protection to a video
|
|
124
|
+
twentythree protection protect --protection-method sso --object-id <video-id> --json
|
|
125
|
+
|
|
126
|
+
# Step 2: Verify a viewer has SSO access
|
|
127
|
+
twentythree protection verify --protection-method sso --video-id <video-id> --json
|
|
128
|
+
|
|
129
|
+
# Step 3: Remove protection when the access period ends
|
|
130
|
+
twentythree protection unprotect --object-id <video-id> --json
|
|
131
|
+
```
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: session
|
|
3
|
+
description: Generate and redeem short-lived viewer session tokens for SSO-style access.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Session Commands
|
|
7
|
+
|
|
8
|
+
> Generate and redeem short-lived viewer session tokens for SSO-style access to TwentyThree content.
|
|
9
|
+
> Session tokens are for viewer SSO. They are distinct from CLI auth (`twentythree auth credentials`).
|
|
10
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
Auth scope required: read (both commands).
|
|
15
|
+
Run `twentythree auth credentials` if not already configured.
|
|
16
|
+
Verify: `twentythree auth status --json`
|
|
17
|
+
|
|
18
|
+
> For any flag not listed here, run `twentythree session <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### session get-token
|
|
23
|
+
|
|
24
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value
|
|
25
|
+
|
|
26
|
+
Generates a short-lived session token for a viewer. The token can be passed to the viewer who
|
|
27
|
+
then redeems it via `session redeem-token` to gain authenticated access to TwentyThree content.
|
|
28
|
+
|
|
29
|
+
Flags:
|
|
30
|
+
|
|
31
|
+
| Flag | Required | Description |
|
|
32
|
+
|------|----------|-------------|
|
|
33
|
+
| `--return-url` | no | Return URL after the viewer authenticates via the session token |
|
|
34
|
+
| `--email` | no | Viewer's email address (used to identify the viewer in the session) |
|
|
35
|
+
| `--full-name` | no | Viewer's full name (used to identify the viewer in the session) |
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Generate a basic session token
|
|
39
|
+
twentythree session get-token --json
|
|
40
|
+
|
|
41
|
+
# Generate a session token for a named viewer with a return URL
|
|
42
|
+
twentythree session get-token \
|
|
43
|
+
--email viewer@example.com \
|
|
44
|
+
--full-name "Jane Doe" \
|
|
45
|
+
--return-url "https://example.com/videos" \
|
|
46
|
+
--json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### session redeem-token
|
|
50
|
+
|
|
51
|
+
**Auth scope:** read **Side effects:** updates **Output:** key-value
|
|
52
|
+
|
|
53
|
+
Redeems a session token to authenticate a viewer. The token is typically passed from the
|
|
54
|
+
server-side `session get-token` response to the viewer's browser, which then exchanges it
|
|
55
|
+
for a session.
|
|
56
|
+
|
|
57
|
+
Flags:
|
|
58
|
+
|
|
59
|
+
| Flag | Required | Description |
|
|
60
|
+
|------|----------|-------------|
|
|
61
|
+
| `--session-token` | yes | Session token to redeem |
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Redeem a session token
|
|
65
|
+
twentythree session redeem-token --session-token <token> --json
|
|
66
|
+
|
|
67
|
+
# Redeem in a scripted viewer-access flow
|
|
68
|
+
twentythree session redeem-token --session-token <session-token> --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Common Patterns
|
|
72
|
+
|
|
73
|
+
### Full SSO viewer access flow
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Step 1: Server-side — generate a session token for the viewer
|
|
77
|
+
twentythree session get-token \
|
|
78
|
+
--email viewer@example.com \
|
|
79
|
+
--full-name "Jane Doe" \
|
|
80
|
+
--return-url "https://platform.example.com/dashboard" \
|
|
81
|
+
--json
|
|
82
|
+
# => Returns { session_token: "<token>", ... }
|
|
83
|
+
# Capture: session_token
|
|
84
|
+
|
|
85
|
+
# Step 2: Pass the token to the viewer (via redirect, page param, or API response)
|
|
86
|
+
|
|
87
|
+
# Step 3: Viewer redeems the token to establish their session
|
|
88
|
+
twentythree session redeem-token --session-token <token> --json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Generate a session token for anonymous viewer access
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Token without email/name — creates an anonymous viewer session
|
|
95
|
+
twentythree session get-token \
|
|
96
|
+
--return-url "https://example.com/content" \
|
|
97
|
+
--json
|
|
98
|
+
```
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setting
|
|
3
|
+
description: Update workspace settings via key=value pairs with optional dry-run validation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Setting Commands
|
|
7
|
+
|
|
8
|
+
> Update workspace configuration settings as key=value pairs.
|
|
9
|
+
> Setting keys are workspace-specific. Check the workspace admin UI for the list of valid keys.
|
|
10
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
Auth scope required: write.
|
|
15
|
+
Run `twentythree auth credentials` if not already configured.
|
|
16
|
+
Verify: `twentythree auth status --json`
|
|
17
|
+
|
|
18
|
+
> For any flag not listed here, run `twentythree setting update --agent` to get the complete flag list, types, and defaults.
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### setting update
|
|
23
|
+
|
|
24
|
+
**Auth scope:** write **Side effects:** updates **Output:** key-value
|
|
25
|
+
|
|
26
|
+
Updates one or more workspace settings as key=value pairs. The `--set` flag is repeatable —
|
|
27
|
+
pass it multiple times to update several settings in a single call.
|
|
28
|
+
|
|
29
|
+
Use `--validate-only` to perform a dry-run and verify that the key=value pairs are accepted
|
|
30
|
+
before actually applying them. This is especially useful when updating multiple settings.
|
|
31
|
+
|
|
32
|
+
Flags:
|
|
33
|
+
|
|
34
|
+
| Flag | Required | Description |
|
|
35
|
+
|------|----------|-------------|
|
|
36
|
+
| `--set` | no | Setting key=value pair (repeatable) |
|
|
37
|
+
| `--validate-only` | no | Dry-run: validate settings without applying changes |
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Update a single setting
|
|
41
|
+
twentythree setting update --set site_name="My Workspace" --json
|
|
42
|
+
|
|
43
|
+
# Update multiple settings in one call
|
|
44
|
+
twentythree setting update --set theme=dark --set language=en --json
|
|
45
|
+
|
|
46
|
+
# Dry-run: validate before applying
|
|
47
|
+
twentythree setting update --set site_name="Test" --validate-only --json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Common Patterns
|
|
51
|
+
|
|
52
|
+
### Dry-run a setting change before applying
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Step 1: Validate the change (no write to the workspace)
|
|
56
|
+
twentythree setting update --set branding_color="#ff0000" --validate-only --json
|
|
57
|
+
|
|
58
|
+
# Step 2: If validation passes, apply the change for real
|
|
59
|
+
twentythree setting update --set branding_color="#ff0000" --json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Apply multiple settings atomically
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# All settings applied in a single API call
|
|
66
|
+
twentythree setting update \
|
|
67
|
+
--set site_name="Brand Workspace" \
|
|
68
|
+
--set language=en \
|
|
69
|
+
--set timezone=UTC \
|
|
70
|
+
--json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Validate a multi-key update before committing
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Step 1: Validate all keys together
|
|
77
|
+
twentythree setting update \
|
|
78
|
+
--set key1=val1 \
|
|
79
|
+
--set key2=val2 \
|
|
80
|
+
--set key3=val3 \
|
|
81
|
+
--validate-only \
|
|
82
|
+
--json
|
|
83
|
+
|
|
84
|
+
# Step 2: Review validation response, then apply if OK
|
|
85
|
+
twentythree setting update \
|
|
86
|
+
--set key1=val1 \
|
|
87
|
+
--set key2=val2 \
|
|
88
|
+
--set key3=val3 \
|
|
89
|
+
--json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Timezone and locale configuration
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Set workspace timezone
|
|
96
|
+
twentythree setting update --set timezone=Europe/Copenhagen --json
|
|
97
|
+
|
|
98
|
+
# Set workspace language
|
|
99
|
+
twentythree setting update --set language=da --json
|
|
100
|
+
|
|
101
|
+
# Set both together with a dry-run check first
|
|
102
|
+
twentythree setting update --set timezone=Europe/Copenhagen --set language=da --validate-only --json
|
|
103
|
+
twentythree setting update --set timezone=Europe/Copenhagen --set language=da --json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Branding and appearance settings
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Update the workspace site name shown in the embed player
|
|
110
|
+
twentythree setting update --set site_name="Company Video Hub" --json
|
|
111
|
+
|
|
112
|
+
# Validate a logo URL before applying
|
|
113
|
+
twentythree setting update --set logo_url="https://cdn.example.com/logo.png" --validate-only --json
|
|
114
|
+
twentythree setting update --set logo_url="https://cdn.example.com/logo.png" --json
|
|
115
|
+
```
|