|
| 1 | +--- |
| 2 | +quick_id: 260521-a01 |
| 3 | +slug: api-spec-review-add-new-options |
| 4 | +description: Review updated API spec and add new options/features to CLI and skill |
| 5 | +date: 2026-05-21 |
| 6 | +status: in-progress |
| 7 | +--- |
| 8 | + |
| 9 | +# Quick Task 260521-a01: API Spec Update — New Options and Features |
| 10 | + |
| 11 | +## Summary of Changes |
| 12 | + |
| 13 | +Diff between latest live API spec and committed spec reveals: |
| 14 | + |
| 15 | +1. **NEW ENDPOINT**: `POST /photo/section/check-generate-available` — checks if AI chapter generation is available for a video |
| 16 | +2. **NEW PARAM**: `player_id` (integer) on `POST /app/add` — "Add a contextual player being forked" |
| 17 | +3. **NEW PARAM**: `webinar_design_id` (integer) on `POST /live/create`, `POST /live/update`, `POST /live/repeat` — "Assign a webinar design by id to this webinar" |
| 18 | + |
| 19 | +## Tasks |
| 20 | + |
| 21 | +### Task 1: Update spec file and regenerate types |
| 22 | + |
| 23 | +- **files**: `packages/twentythree-cli/specs/twentythree-api-swagger.json`, `packages/twentythree-cli/src/api/types.ts` |
| 24 | +- **action**: Copy downloaded spec and regenerate types via `pnpm generate-types` |
| 25 | +- **verify**: Types file updated with new endpoint + parameters |
| 26 | +- **done**: [ ] |
| 27 | + |
| 28 | +### Task 2: Add `player-id` flag to `app add` |
| 29 | + |
| 30 | +- **files**: `packages/twentythree-cli/src/commands/app/add.ts` |
| 31 | +- **action**: Add optional `--player-id` integer flag mapping to `player_id` body param |
| 32 | +- **verify**: Flag present, sent in body when provided |
| 33 | +- **done**: [ ] |
| 34 | + |
| 35 | +### Task 3: Add `webinar-design-id` to webinar create/update/repeat |
| 36 | + |
| 37 | +- **files**: |
| 38 | + - `packages/twentythree-cli/src/commands/webinar/create.ts` |
| 39 | + - `packages/twentythree-cli/src/commands/webinar/update.ts` |
| 40 | + - `packages/twentythree-cli/src/commands/webinar/repeat.ts` |
| 41 | +- **action**: Add optional `--webinar-design-id` integer flag to each; send as `webinar_design_id` in body (flag mode only for update) |
| 42 | +- **verify**: Flag present in each command, correctly mapped in body |
| 43 | +- **done**: [ ] |
| 44 | + |
| 45 | +### Task 4: Add `video section check-generate-available` command |
| 46 | + |
| 47 | +- **files**: `packages/twentythree-cli/src/commands/video/section/check-generate-available.ts` |
| 48 | +- **action**: Create new command that POSTs to `/photo/section/check-generate-available` with `photo_id` (required) and optional `fields`; outputs `section_generation_available_p` boolean |
| 49 | +- **verify**: Command file created, manifest updated after build |
| 50 | +- **done**: [ ] |
| 51 | + |
| 52 | +### Task 5: Update skill documentation |
| 53 | + |
| 54 | +- **files**: |
| 55 | + - `packages/twentythree-skills/.cursor/skills/twentythree/reference/video.md` |
| 56 | + - `packages/twentythree-skills/.cursor/skills/twentythree/reference/webinar.md` |
| 57 | +- **action**: |
| 58 | + - Add `video section check-generate-available` command section after `video section generate` |
| 59 | + - Add `--webinar-design-id` flag to webinar create, update, and repeat sections |
| 60 | +- **verify**: Both files updated with accurate documentation |
| 61 | +- **done**: [ ] |
| 62 | + |
| 63 | +### Task 6: TypeScript check |
| 64 | + |
| 65 | +- **files**: N/A |
| 66 | +- **action**: Run `pnpm --filter twentythree-cli exec tsc --noEmit` to confirm no new type errors |
| 67 | +- **verify**: Clean compile (ignoring pre-existing errors) |
| 68 | +- **done**: [ ] |
0 commit comments