[GH-ISSUE #412] Parity: TestFlight missing endpoints (feedback delete, tester relationships, review list) #120

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

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

Overview

Fill remaining TestFlight parity gaps: feedback submission deletion, beta tester relationship management (apps/builds), beta app review submissions list, and recruitment criteria delete.

Scope (OpenAPI resources)

Completely Missing (no client, no CLI)

  • DELETE /v1/betaFeedbackCrashSubmissions/{id}
  • DELETE /v1/betaFeedbackScreenshotSubmissions/{id}
  • DELETE /v1/betaTesters/{id}/relationships/apps
  • DELETE /v1/betaTesters/{id}/relationships/builds
  • POST /v1/betaTesters/{id}/relationships/builds
  • DELETE /v1/apps/{id}/relationships/betaTesters

Client exists, needs CLI

  • GET /v1/betaAppReviewSubmissions (LIST) - client: GetBetaAppReviewSubmissions
  • DELETE /v1/betaRecruitmentCriteria/{id} - client: DeleteBetaRecruitmentCriteria

Proposed CLI

Feedback deletion

  • asc testflight beta-feedback crash-submissions delete --id "SUBMISSION_ID" --confirm
  • asc testflight beta-feedback screenshot-submissions delete --id "SUBMISSION_ID" --confirm

Beta tester relationships

  • asc testflight beta-testers remove-apps --id "TESTER_ID" --app "APP_ID[,APP_ID...]" --confirm
  • asc testflight beta-testers add-builds --id "TESTER_ID" --build "BUILD_ID[,BUILD_ID...]"
  • asc testflight beta-testers remove-builds --id "TESTER_ID" --build "BUILD_ID[,BUILD_ID...]" --confirm

App-level tester removal

  • asc apps remove-beta-testers --app "APP_ID" --tester "TESTER_ID[,TESTER_ID...]" --confirm

Review submissions list (client exists)

  • asc testflight review submissions list [--build "BUILD_ID"] [--limit N] [--paginate]

Recruitment criteria delete (client exists)

  • asc testflight recruitment delete --id "CRITERIA_ID" --confirm

Flag patterns

Common: --id, --app, --build, --tester, --output, --pretty, --limit, --next, --paginate, --confirm

Output

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

Detailed TODO

  • Add client methods: DeleteBetaFeedbackCrashSubmission, DeleteBetaFeedbackScreenshotSubmission
  • Add client methods: RemoveBetaTesterFromApps, AddBuildsToBetaTester, RemoveBuildsFromBetaTester
  • Add client method: RemoveBetaTestersFromApp
  • Add testflight beta-feedback crash-submissions delete subcommand
  • Add testflight beta-feedback screenshot-submissions delete subcommand
  • Add testflight beta-testers remove-apps subcommand
  • Add testflight beta-testers add-builds subcommand
  • Add testflight beta-testers remove-builds subcommand
  • Add apps remove-beta-testers subcommand
  • Add testflight review submissions list subcommand (wire existing client)
  • Add testflight recruitment delete subcommand (wire existing client)
  • Add HTTP client tests (mocked)
  • Add CLI cmdtests for flag validation + output

Acceptance criteria

  • Beta feedback submissions can be deleted
  • Beta testers can have apps/builds added/removed
  • Beta testers can be removed from apps
  • Beta app review submissions can be listed with filtering
  • Recruitment criteria can be deleted

Tests

  • Flag validation tests for each new command
  • HTTP client tests for each new endpoint
  • Confirm flag required for destructive operations

Implementation notes

  • Follow existing patterns in internal/cli/testflight/beta_feedback.go for delete commands
  • Follow existing add-groups/remove-groups pattern for relationship commands
  • --confirm required for all DELETE operations
  • Two commands just need CLI wiring (client already exists)

References

  • docs/openapi/paths.txt
  • docs/openapi/latest.json
  • internal/asc/client_beta_feedback.go
  • internal/asc/client_testflight_review.go
Originally created by @rudrankriyam on GitHub (Feb 2, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/412 # Overview Fill remaining TestFlight parity gaps: feedback submission deletion, beta tester relationship management (apps/builds), beta app review submissions list, and recruitment criteria delete. # Scope (OpenAPI resources) ## Completely Missing (no client, no CLI) - `DELETE /v1/betaFeedbackCrashSubmissions/{id}` - `DELETE /v1/betaFeedbackScreenshotSubmissions/{id}` - `DELETE /v1/betaTesters/{id}/relationships/apps` - `DELETE /v1/betaTesters/{id}/relationships/builds` - `POST /v1/betaTesters/{id}/relationships/builds` - `DELETE /v1/apps/{id}/relationships/betaTesters` ## Client exists, needs CLI - `GET /v1/betaAppReviewSubmissions` (LIST) - client: `GetBetaAppReviewSubmissions` - `DELETE /v1/betaRecruitmentCriteria/{id}` - client: `DeleteBetaRecruitmentCriteria` # Proposed CLI ## Feedback deletion - `asc testflight beta-feedback crash-submissions delete --id "SUBMISSION_ID" --confirm` - `asc testflight beta-feedback screenshot-submissions delete --id "SUBMISSION_ID" --confirm` ## Beta tester relationships - `asc testflight beta-testers remove-apps --id "TESTER_ID" --app "APP_ID[,APP_ID...]" --confirm` - `asc testflight beta-testers add-builds --id "TESTER_ID" --build "BUILD_ID[,BUILD_ID...]"` - `asc testflight beta-testers remove-builds --id "TESTER_ID" --build "BUILD_ID[,BUILD_ID...]" --confirm` ## App-level tester removal - `asc apps remove-beta-testers --app "APP_ID" --tester "TESTER_ID[,TESTER_ID...]" --confirm` ## Review submissions list (client exists) - `asc testflight review submissions list [--build "BUILD_ID"] [--limit N] [--paginate]` ## Recruitment criteria delete (client exists) - `asc testflight recruitment delete --id "CRITERIA_ID" --confirm` # Flag patterns Common: `--id`, `--app`, `--build`, `--tester`, `--output`, `--pretty`, `--limit`, `--next`, `--paginate`, `--confirm` # Output - JSON minified by default - `--pretty` for JSON - `--output table/markdown` for list commands # Detailed TODO - [ ] Add client methods: `DeleteBetaFeedbackCrashSubmission`, `DeleteBetaFeedbackScreenshotSubmission` - [ ] Add client methods: `RemoveBetaTesterFromApps`, `AddBuildsToBetaTester`, `RemoveBuildsFromBetaTester` - [ ] Add client method: `RemoveBetaTestersFromApp` - [ ] Add `testflight beta-feedback crash-submissions delete` subcommand - [ ] Add `testflight beta-feedback screenshot-submissions delete` subcommand - [ ] Add `testflight beta-testers remove-apps` subcommand - [ ] Add `testflight beta-testers add-builds` subcommand - [ ] Add `testflight beta-testers remove-builds` subcommand - [ ] Add `apps remove-beta-testers` subcommand - [ ] Add `testflight review submissions list` subcommand (wire existing client) - [ ] Add `testflight recruitment delete` subcommand (wire existing client) - [ ] Add HTTP client tests (mocked) - [ ] Add CLI cmdtests for flag validation + output # Acceptance criteria - [ ] Beta feedback submissions can be deleted - [ ] Beta testers can have apps/builds added/removed - [ ] Beta testers can be removed from apps - [ ] Beta app review submissions can be listed with filtering - [ ] Recruitment criteria can be deleted # Tests - Flag validation tests for each new command - HTTP client tests for each new endpoint - Confirm flag required for destructive operations # Implementation notes - Follow existing patterns in `internal/cli/testflight/beta_feedback.go` for delete commands - Follow existing `add-groups`/`remove-groups` pattern for relationship commands - `--confirm` required for all DELETE operations - Two commands just need CLI wiring (client already exists) # References - `docs/openapi/paths.txt` - `docs/openapi/latest.json` - `internal/asc/client_beta_feedback.go` - `internal/asc/client_testflight_review.go`
kerem closed this issue 2026-02-26 21:33:34 +03:00
Author
Owner

@rudrankriyam commented on GitHub (Feb 2, 2026):

@cursor please implement this issue. Start with the two easy wins that just need CLI wiring (review submissions list and recruitment delete), then implement the client methods and CLI commands for the remaining endpoints.

<!-- gh-comment-id:3837563761 --> @rudrankriyam commented on GitHub (Feb 2, 2026): @cursor please implement this issue. Start with the two easy wins that just need CLI wiring (review submissions list and recruitment delete), then implement the client methods and CLI commands for the remaining endpoints.
Author
Owner

@cursor[bot] commented on GitHub (Feb 2, 2026):

Summary:

  • I wired the “easy wins” (TestFlight review submissions list + recruitment delete) and added pagination support, then added the remaining TestFlight/app beta feedback/tester relationship commands with new output result types.
  • I implemented the missing ASC client methods and HTTP tests, plus CLI cmdtests for flag validation and output across the new commands.

Testing:

  • make test
  • go test ./internal/cli/cmdtest -run 'TestTestFlightReviewSubmissionsListOutputTable|TestTestFlightBetaFeedbackCrashSubmissionsDeleteOutput|TestAppsRemoveBetaTestersOutput' -v (recorded in the video)

Walkthrough artifact:

  • testflight_cmdtests_demo_zoomed/recording_demo.mp4 shows the targeted cmdtests passing for the new review submissions list, beta feedback delete, and apps remove-beta-testers commands.

View PR
Open in Cursor Open in Web

<!-- gh-comment-id:3837564104 --> @cursor[bot] commented on GitHub (Feb 2, 2026): Summary: - I wired the “easy wins” (TestFlight review submissions list + recruitment delete) and added pagination support, then added the remaining TestFlight/app beta feedback/tester relationship commands with new output result types. - I implemented the missing ASC client methods and HTTP tests, plus CLI cmdtests for flag validation and output across the new commands. Testing: - `make test` - `go test ./internal/cli/cmdtest -run 'TestTestFlightReviewSubmissionsListOutputTable|TestTestFlightBetaFeedbackCrashSubmissionsDeleteOutput|TestAppsRemoveBetaTestersOutput' -v` (recorded in the video) Walkthrough artifact: - `testflight_cmdtests_demo_zoomed/recording_demo.mp4` shows the targeted cmdtests passing for the new review submissions list, beta feedback delete, and apps remove-beta-testers commands. <a href="https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/416"><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-d70e60d3-e343-470d-b2ff-452bb4342994"><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-d70e60d3-e343-470d-b2ff-452bb4342994"><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 (Feb 3, 2026):

Resolved in #416 (additional coverage in #420).

<!-- gh-comment-id:3840418844 --> @rudrankriyam commented on GitHub (Feb 3, 2026): Resolved in #416 (additional coverage in #420).
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#120
No description provided.