mirror of
https://github.com/rudrankriyam/App-Store-Connect-CLI.git
synced 2026-04-25 15:45:48 +03:00
[GH-ISSUE #467] Parity: Global list endpoints for beta groups, beta build localizations, and review submissions #131
Labels
No labels
bug
bug
documentation
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/App-Store-Connect-CLI#131
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @rudrankriyam on GitHub (Feb 10, 2026).
Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/467
Overview
Add parity support for the top-level list endpoints that are still missing, while keeping the existing app/build-scoped list flows unchanged.
Scope (OpenAPI resources)
GET /v1/betaGroupsGET /v1/betaBuildLocalizationsGET /v1/reviewSubmissionsCurrent state
These list surfaces already exist in app/build-scoped form:
GET /v1/apps/{id}/betaGroupsGET /v1/builds/{id}/betaBuildLocalizationsGET /v1/apps/{id}/reviewSubmissionsThe top-level list entrypoints are still missing.
Proposed CLI
Keep existing commands, add explicit global mode:
asc testflight beta-groups list --globalasc beta-build-localizations list --globalasc review submissions-list --globalExamples:
asc testflight beta-groups list --app "APP_ID"asc testflight beta-groups list --global --limit 50asc beta-build-localizations list --build "BUILD_ID"asc beta-build-localizations list --global --paginateasc review submissions-list --app "APP_ID"asc review submissions-list --global --platform IOS --state READY_FOR_REVIEWFlag patterns
Common:
--global,--app,--build,--limit,--next,--paginate,--output,--prettyValidation rules:
beta-groups list: require one of--appor--global(unless--nextis provided)beta-build-localizations list: require one of--buildor--global(unless--nextis provided)review submissions-list: require one of--appor--global(unless--nextis provided)--globalis mutually exclusive with--app/--buildDetailed TODO
GET /v1/betaGroupsGET /v1/betaBuildLocalizationsGET /v1/reviewSubmissions--globalflag handling in:internal/cli/testflight/beta_groups.gointernal/cli/betabuildlocalizations/beta_build_localizations.gointernal/cli/reviews/review_submissions.go--nextvalidation and pagination behavior work for both scoped and global route shapes.Acceptance criteria
--globalpath works with--limit,--next,--paginate, and output flags.make format,make lint, andmake testpass.Tests
--globalmode.--global+--app/--build).links.nextpath).Implementation notes
References
docs/openapi/paths.txtinternal/asc/client.gointernal/asc/review_submissions.gointernal/asc/client_options.go@rudrankriyam commented on GitHub (Feb 10, 2026):
@cursor Please implement this issue end-to-end.
What to build
Implement parity for the missing top-level list routes while preserving existing scoped list behavior.
Endpoints to add
GET /v1/betaGroupsGET /v1/betaBuildLocalizationsGET /v1/reviewSubmissionsImplementation plan
internal/asc)/v1/apps/{id}/betaGroups/v1/builds/{id}/betaBuildLocalizations/v1/apps/{id}/reviewSubmissionsvalidateNextURLhandling.internal/cli)--globalto:internal/cli/testflight/beta_groups.go(list)internal/cli/betabuildlocalizations/beta_build_localizations.go(list)internal/cli/reviews/review_submissions.go(submissions-list)beta-groups list: one of--appor--global(unless--nextprovided)beta-build-localizations list: one of--buildor--global(unless--nextprovided)review submissions-list: one of--appor--global(unless--nextprovided)--global+--app/--buildcombinations--globaltrueNew tests to write
A) Client HTTP tests (
internal/asc/client_http_test.go)Add tests that assert method + path + query behavior:
TestGetBetaGroupsGlobal_UsesV1BetaGroupsPathTestGetBetaBuildLocalizationsGlobal_UsesV1BetaBuildLocalizationsPathTestGetReviewSubmissionsGlobal_UsesV1ReviewSubmissionsPathB) CLI cmdtests (new files)
internal/cli/cmdtest/beta_groups_global_test.goasc testflight beta-groups list --global--global+--app--app/--global) when no--nextinternal/cli/cmdtest/beta_build_localizations_global_test.goasc beta-build-localizations list --global--global+--build--nextinternal/cli/cmdtest/review_submissions_global_test.goasc review submissions-list --global--global+--app--nextC) Pagination + next validation
Extend/adjust existing next-validation tests so global paths are covered and paginated aggregation is validated for:
/v1/betaGroups/v1/betaBuildLocalizations/v1/reviewSubmissionsHow to test locally
Run exactly:
make formatmake lintmake testThen run targeted tests for fast iteration:
go test ./internal/asc -run 'BetaGroupsGlobal|BetaBuildLocalizationsGlobal|ReviewSubmissionsGlobal'go test ./internal/cli/cmdtest -run 'Global|NextValidation'Done criteria
format,lint,test).@cursor[bot] commented on GitHub (Feb 10, 2026):
All tests pass. Here is a summary of everything implemented:
Summary
I implemented full parity for three missing top-level list endpoints while preserving all existing scoped list behavior.
Client layer (
internal/asc)ListBetaGroups-GET /v1/betaGroups(global, no app ID required)ListBetaBuildLocalizations-GET /v1/betaBuildLocalizations(global, no build ID required)ListReviewSubmissions-GET /v1/reviewSubmissions(global, no app ID required)Existing scoped methods (
GetBetaGroups,GetBetaBuildLocalizations,GetReviewSubmissions) are unchanged.CLI layer (
internal/cli)Added
--globalflag to three commands with validation:asc testflight beta-groups list --global- Require--appor--global(unless--next); reject--global+--appasc beta-build-localizations list --global- Require--buildor--global(unless--next); reject--global+--buildasc review submissions-list --global- Require--appor--global(unless--next); reject--global+--appAll commands support
--limit,--next,--paginate,--output, and--prettyin global mode. Help examples updated for all three commands.Tests
/v1/betaGroups,/v1/betaBuildLocalizations,/v1/reviewSubmissions), query params,nextURLhandling, and authorization--nextbypass, mutually exclusive flag errors, and missing selector errorsmake format,make lint, andmake testall pass@rudrankriyam commented on GitHub (Feb 10, 2026):
Implemented and merged in #473, with follow-up parity/regression fixes in #475.
Closing this parity issue as complete.