[GH-ISSUE #155] Add In-App Events CLI support (events, localizations, media, submit) #38

Closed
opened 2026-02-26 21:32:56 +03:00 by kerem · 3 comments
Owner

Originally created by @rudrankriyam on GitHub (Jan 25, 2026).
Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/155

Overview

Add CLI support for App Store In-App Events: event creation, localization, media assets, and submission flow, using the App Store Connect API. This should follow JSON-first output and explicit flag conventions.

Scope (OpenAPI resources)

  • appEvents
  • appEventLocalizations
  • appEventScreenshots
  • appEventVideoClips
  • Submission endpoint (verify in spec, e.g. appEventSubmissions or an action on appEvents)

Proposed CLI

Top-level group:

  • asc app-events <subcommand> [flags]

Subcommands:

  • app-events list|get|create|update|delete
  • app-events localizations list|get|create|update|delete
  • app-events screenshots list|get|create|delete
  • app-events video-clips list|get|create|delete
  • app-events submit (submit for review when assets are ready)

Examples:

  • asc app-events list --app APP_ID
  • asc app-events create --app APP_ID --name "Summer Challenge" --event-type CHALLENGE --start "2026-06-01T00:00:00Z" --end "2026-06-30T23:59:59Z"
  • asc app-events localizations create --event-id EVENT_ID --locale en-US --short-description "Compete this week"
  • asc app-events screenshots create --event-id EVENT_ID --file screenshot.png
  • asc app-events submit --event-id EVENT_ID --confirm

Flag patterns

Common:

  • --app, --output, --pretty, --limit, --next, --paginate, --confirm

Resource-specific examples:

  • --event-id, --localization-id, --screenshot-id, --video-clip-id
  • --name, --event-type, --reference-name
  • --start, --end, --priority, --purchase-requirement, --purpose
  • --locale, --short-description, --long-description
  • --file for uploads

Output

  • JSON minified by default
  • --pretty for JSON
  • --output table/markdown for list commands

Acceptance criteria

  • Commands appear in asc app-events --help
  • CRUD works for app events
  • CRUD works for localizations
  • Upload/delete works for screenshots and video clips
  • Submission command works once assets are attached (endpoint verified)
  • Pagination and --next validation works
  • Delete requires --confirm

Tests

  • Command flag validation tests
  • HTTP client tests for list/get/create/update/delete
  • Upload tests for screenshots and video clips
  • Output tests for table/markdown

Implementation notes

  • Add cmd/app_events*.go and internal/asc/client_app_events*.go
  • Add output helpers in internal/asc/output_app_events.go
  • Register command in cmd/root.go
  • Add resource type constants in internal/asc/client_types.go
  • Follow patterns in cmd/localizations_commands.go, cmd/reviews.go, internal/asc/output_*
Originally created by @rudrankriyam on GitHub (Jan 25, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/155 # Overview Add CLI support for App Store In-App Events: event creation, localization, media assets, and submission flow, using the App Store Connect API. This should follow JSON-first output and explicit flag conventions. # Scope (OpenAPI resources) - `appEvents` - `appEventLocalizations` - `appEventScreenshots` - `appEventVideoClips` - Submission endpoint (verify in spec, e.g. `appEventSubmissions` or an action on `appEvents`) # Proposed CLI Top-level group: - `asc app-events <subcommand> [flags]` Subcommands: - `app-events list|get|create|update|delete` - `app-events localizations list|get|create|update|delete` - `app-events screenshots list|get|create|delete` - `app-events video-clips list|get|create|delete` - `app-events submit` (submit for review when assets are ready) Examples: - `asc app-events list --app APP_ID` - `asc app-events create --app APP_ID --name "Summer Challenge" --event-type CHALLENGE --start "2026-06-01T00:00:00Z" --end "2026-06-30T23:59:59Z"` - `asc app-events localizations create --event-id EVENT_ID --locale en-US --short-description "Compete this week"` - `asc app-events screenshots create --event-id EVENT_ID --file screenshot.png` - `asc app-events submit --event-id EVENT_ID --confirm` # Flag patterns Common: - `--app`, `--output`, `--pretty`, `--limit`, `--next`, `--paginate`, `--confirm` Resource-specific examples: - `--event-id`, `--localization-id`, `--screenshot-id`, `--video-clip-id` - `--name`, `--event-type`, `--reference-name` - `--start`, `--end`, `--priority`, `--purchase-requirement`, `--purpose` - `--locale`, `--short-description`, `--long-description` - `--file` for uploads # Output - JSON minified by default - `--pretty` for JSON - `--output table/markdown` for list commands # Acceptance criteria - [ ] Commands appear in `asc app-events --help` - [ ] CRUD works for app events - [ ] CRUD works for localizations - [ ] Upload/delete works for screenshots and video clips - [ ] Submission command works once assets are attached (endpoint verified) - [ ] Pagination and `--next` validation works - [ ] Delete requires `--confirm` # Tests - Command flag validation tests - HTTP client tests for list/get/create/update/delete - Upload tests for screenshots and video clips - Output tests for table/markdown # Implementation notes - Add `cmd/app_events*.go` and `internal/asc/client_app_events*.go` - Add output helpers in `internal/asc/output_app_events.go` - Register command in `cmd/root.go` - Add resource type constants in `internal/asc/client_types.go` - Follow patterns in `cmd/localizations_commands.go`, `cmd/reviews.go`, `internal/asc/output_*`
kerem closed this issue 2026-02-26 21:32:56 +03:00
Author
Owner

@rudrankriyam commented on GitHub (Jan 29, 2026):

@cursor Please implement this issue.

Guidance (same expectations as for me):

  • Follow docs/GO_STANDARDS.md and docs/TESTING.md.
  • Use docs/openapi/paths.txt + docs/openapi/latest.json for endpoints and schemas (verify submit endpoint).
  • Keep CLI behavior consistent: explicit flags, JSON-first output, no interactive prompts, --confirm for destructive actions.
  • Implement asc app-events group for events, localizations, screenshots, video clips, and submit as in the issue body.
  • Add table/markdown output for list commands and wire output in internal/asc/output_* + output_core.go.
  • Add HTTP client tests for CRUD + upload flows + CLI validation tests + output tests.
  • No live credentials are available. Do not run network tests; rely on mocks.
  • When done, run make build, make lint, make test, and create a PR.

Thanks!

<!-- gh-comment-id:3820976204 --> @rudrankriyam commented on GitHub (Jan 29, 2026): @cursor Please implement this issue. Guidance (same expectations as for me): - Follow `docs/GO_STANDARDS.md` and `docs/TESTING.md`. - Use `docs/openapi/paths.txt` + `docs/openapi/latest.json` for endpoints and schemas (verify submit endpoint). - Keep CLI behavior consistent: explicit flags, JSON-first output, no interactive prompts, `--confirm` for destructive actions. - Implement `asc app-events` group for events, localizations, screenshots, video clips, and submit as in the issue body. - Add table/markdown output for list commands and wire output in `internal/asc/output_*` + `output_core.go`. - Add HTTP client tests for CRUD + upload flows + CLI validation tests + output tests. - No live credentials are available. Do not run network tests; rely on mocks. - When done, run `make build`, `make lint`, `make test`, and create a PR. Thanks!
Author
Owner

@cursor[bot] commented on GitHub (Jan 29, 2026):

Summary of changes:

  • I added the full asc app-events CLI surface (events, localizations, screenshots, video clips, submit) with upload flows, delivery polling, and consistent validation/output behavior, plus client-side ID validation for the new App Store Connect endpoints.
  • I registered the new command group in the root registry and expanded output formatting tests for app-event entities (localizations, screenshots, video clips, delete/submission results).

Tests and verification:

  • make build
  • make lint
  • make test

Walkthrough artifact:

  • Video: app_events_build_lint_test/recording_demo.mp4 (shows running make build && make lint && make test in /workspace).
    Note: the media review tool was unavailable, so I couldn’t automatically verify the recording contents, but it was captured during the manual run.

View PR
Open in Cursor Open in Web

<!-- gh-comment-id:3820976500 --> @cursor[bot] commented on GitHub (Jan 29, 2026): Summary of changes: - I added the full `asc app-events` CLI surface (events, localizations, screenshots, video clips, submit) with upload flows, delivery polling, and consistent validation/output behavior, plus client-side ID validation for the new App Store Connect endpoints. - I registered the new command group in the root registry and expanded output formatting tests for app-event entities (localizations, screenshots, video clips, delete/submission results). Tests and verification: - ✅ `make build` - ✅ `make lint` - ✅ `make test` Walkthrough artifact: - **Video:** `app_events_build_lint_test/recording_demo.mp4` (shows running `make build && make lint && make test` in `/workspace`). *Note:* the media review tool was unavailable, so I couldn’t automatically verify the recording contents, but it was captured during the manual run. <a href="https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/314"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-pr-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-pr-light.png"><img alt="View PR" width="86" height="28" src="https://cursor.com/assets/images/view-pr-light.png"></picture></a> <a href="https://cursor.com/background-agent?bcId=bc-d7963874-bc62-4e02-a657-8f1a3787a630"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/agents?id=bc-d7963874-bc62-4e02-a657-8f1a3787a630"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>
Author
Owner

@rudrankriyam commented on GitHub (Jan 30, 2026):

Fixed by #314.

<!-- gh-comment-id:3822506854 --> @rudrankriyam commented on GitHub (Jan 30, 2026): Fixed by #314.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/App-Store-Connect-CLI#38
No description provided.