[GH-ISSUE #318] Parity: Builds & TestFlight relationships, metrics, beta localizations #90

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

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

Overview

Fill remaining gaps for Builds/TestFlight/Prerelease/Sandbox coverage: relationships endpoints, metrics, beta localizations, individual testers management, build uploads, and v2 sandbox endpoints.

Scope (OpenAPI resources)

  • Builds relationships: app, appStoreVersion, betaBuildLocalizations, buildBetaDetail, diagnosticSignatures, individualTesters, preReleaseVersion, icons
  • Build metrics: /v1/builds/{id}/metrics/betaBuildUsages, /v1/builds/{id}/perfPowerMetrics
  • Beta build localizations CRUD: /v1/betaBuildLocalizations
  • Beta app localizations CRUD: /v1/betaAppLocalizations
  • Beta groups/testers relationships + metrics
  • Pre-release version relationships (app/builds)
  • Build uploads CRUD and files (/v1/buildUploads, /v1/buildUploadFiles)
  • Sandbox v2 endpoints (/v2/sandboxTesters, /v2/sandboxTestersClearPurchaseHistoryRequest)

Proposed CLI

Top-level groups:

  • asc builds ...
  • asc testflight ...
  • asc prerelease ...
  • asc sandbox ...

New/expanded subcommands:

  • builds relationships get --build-id ID --type <relationship>
  • builds metrics beta-usages|performance --build-id ID
  • builds individual-testers list|add|remove --build-id ID --tester-ids ID1,ID2
  • builds uploads list|get|delete --upload-id ID (and uploads files list|get)
  • beta-build-localizations list|get|create|update|delete
  • beta-app-localizations list|get|create|update|delete
  • testflight beta-groups relationships get --group-id ID --type <relationship>
  • testflight beta-testers relationships get --tester-id ID --type <relationship>
  • testflight beta-testers metrics --tester-id ID
  • prerelease relationships get --id ID --type app|builds
  • sandbox list|update|clear-history using v2 endpoints

Examples:

  • asc builds relationships get --build-id BUILD_ID --type appStoreVersion
  • asc builds metrics beta-usages --build-id BUILD_ID
  • asc beta-build-localizations create --build-id BUILD_ID --locale en-US --whats-new "Fixes"
  • asc testflight beta-testers metrics --tester-id TESTER_ID
  • asc builds uploads get --upload-id UPLOAD_ID
  • asc sandbox clear-history --id TESTER_ID --confirm

Flag patterns

Common:

  • --build-id, --tester-id, --group-id, --output, --pretty, --limit, --next, --paginate, --confirm

Resource-specific:

  • --locale, --whats-new, --tester-ids

Output

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

Detailed TODO

  • Add build relationship client methods + CLI builds relationships
  • Add build metrics client + CLI builds metrics
  • Add individual testers list/add/remove endpoints + CLI
  • Add build uploads and upload files endpoints + CLI
  • Add beta build localizations CRUD + CLI
  • Add beta app localizations CRUD + CLI
  • Add beta groups/testers relationship endpoints + CLI
  • Add beta tester usage metrics endpoint + CLI
  • Add prerelease relationships endpoints + CLI
  • Switch sandbox commands to v2 endpoints (list/update/clear-history)
  • Add output helpers and resource types if needed
  • Add cmdtests + HTTP client tests (mocked)

Acceptance criteria

  • Builds relationships and metrics are accessible via CLI
  • Beta app/build localizations CRUD works
  • TestFlight relationships + tester metrics are available
  • Build uploads are accessible via CLI
  • Sandbox uses v2 endpoints
  • Pagination/--next validation works
  • JSON-first output preserved

Tests

  • Command flag validation tests
  • HTTP client tests for list/get/create/update/delete
  • Metrics endpoints tests with mock responses
  • Upload endpoints tests

Implementation notes

  • Add client methods in internal/asc/client_builds.go, client_testflight.go, client_build_uploads.go
  • Add CLI commands in internal/cli/builds, testflight, prerelease, sandbox
  • Register new command groups in registry
  • Follow patterns in existing builds/testflight commands
Originally created by @rudrankriyam on GitHub (Jan 30, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/318 # Overview Fill remaining gaps for Builds/TestFlight/Prerelease/Sandbox coverage: relationships endpoints, metrics, beta localizations, individual testers management, build uploads, and v2 sandbox endpoints. # Scope (OpenAPI resources) - Builds relationships: app, appStoreVersion, betaBuildLocalizations, buildBetaDetail, diagnosticSignatures, individualTesters, preReleaseVersion, icons - Build metrics: `/v1/builds/{id}/metrics/betaBuildUsages`, `/v1/builds/{id}/perfPowerMetrics` - Beta build localizations CRUD: `/v1/betaBuildLocalizations` - Beta app localizations CRUD: `/v1/betaAppLocalizations` - Beta groups/testers relationships + metrics - Pre-release version relationships (app/builds) - Build uploads CRUD and files (`/v1/buildUploads`, `/v1/buildUploadFiles`) - Sandbox v2 endpoints (`/v2/sandboxTesters`, `/v2/sandboxTestersClearPurchaseHistoryRequest`) # Proposed CLI Top-level groups: - `asc builds ...` - `asc testflight ...` - `asc prerelease ...` - `asc sandbox ...` New/expanded subcommands: - `builds relationships get --build-id ID --type <relationship>` - `builds metrics beta-usages|performance --build-id ID` - `builds individual-testers list|add|remove --build-id ID --tester-ids ID1,ID2` - `builds uploads list|get|delete --upload-id ID` (and `uploads files list|get`) - `beta-build-localizations list|get|create|update|delete` - `beta-app-localizations list|get|create|update|delete` - `testflight beta-groups relationships get --group-id ID --type <relationship>` - `testflight beta-testers relationships get --tester-id ID --type <relationship>` - `testflight beta-testers metrics --tester-id ID` - `prerelease relationships get --id ID --type app|builds` - `sandbox list|update|clear-history` using v2 endpoints Examples: - `asc builds relationships get --build-id BUILD_ID --type appStoreVersion` - `asc builds metrics beta-usages --build-id BUILD_ID` - `asc beta-build-localizations create --build-id BUILD_ID --locale en-US --whats-new "Fixes"` - `asc testflight beta-testers metrics --tester-id TESTER_ID` - `asc builds uploads get --upload-id UPLOAD_ID` - `asc sandbox clear-history --id TESTER_ID --confirm` # Flag patterns Common: - `--build-id`, `--tester-id`, `--group-id`, `--output`, `--pretty`, `--limit`, `--next`, `--paginate`, `--confirm` Resource-specific: - `--locale`, `--whats-new`, `--tester-ids` # Output - JSON minified by default - `--pretty` for JSON - `--output table/markdown` for list commands # Detailed TODO - [ ] Add build relationship client methods + CLI `builds relationships` - [ ] Add build metrics client + CLI `builds metrics` - [ ] Add individual testers list/add/remove endpoints + CLI - [ ] Add build uploads and upload files endpoints + CLI - [ ] Add beta build localizations CRUD + CLI - [ ] Add beta app localizations CRUD + CLI - [ ] Add beta groups/testers relationship endpoints + CLI - [ ] Add beta tester usage metrics endpoint + CLI - [ ] Add prerelease relationships endpoints + CLI - [ ] Switch sandbox commands to v2 endpoints (list/update/clear-history) - [ ] Add output helpers and resource types if needed - [ ] Add cmdtests + HTTP client tests (mocked) # Acceptance criteria - [ ] Builds relationships and metrics are accessible via CLI - [ ] Beta app/build localizations CRUD works - [ ] TestFlight relationships + tester metrics are available - [ ] Build uploads are accessible via CLI - [ ] Sandbox uses v2 endpoints - [ ] Pagination/`--next` validation works - [ ] JSON-first output preserved # Tests - Command flag validation tests - HTTP client tests for list/get/create/update/delete - Metrics endpoints tests with mock responses - Upload endpoints tests # Implementation notes - Add client methods in `internal/asc/client_builds.go`, `client_testflight.go`, `client_build_uploads.go` - Add CLI commands in `internal/cli/builds`, `testflight`, `prerelease`, `sandbox` - Register new command groups in registry - Follow patterns in existing builds/testflight commands
kerem closed this issue 2026-02-26 21:33:18 +03:00
Author
Owner

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

@cursor Please implement per issue description. No live credentials; use mocked tests. Run make build/lint/test and open a PR when green. Keep JSON-first output and explicit flags; no interactive prompts.

<!-- gh-comment-id:3826000798 --> @rudrankriyam commented on GitHub (Jan 30, 2026): @cursor Please implement per issue description. No live credentials; use mocked tests. Run make build/lint/test and open a PR when green. Keep JSON-first output and explicit flags; no interactive prompts.
Author
Owner

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

I added the missing parity CLI surface area: new builds subcommands for relationships/metrics/individual-testers/uploads (plus upload files), new beta-app-localizations and beta-build-localizations command groups, new TestFlight beta-group/tester relationships + tester metrics, and pre‑release relationships. I also moved beta-groups/beta-testers under asc testflight, added new output result structs for build upload deletion and individual tester updates, and expanded cmdtests + client HTTP tests for the new endpoints.

Tests run (all green): make build, make lint, make test.

Video walkthrough of the new CLI help commands: /opt/cursor/artifacts/cli_help_new_commands/recording_demo.mp4.

View PR
Open in Cursor Open in Web

<!-- gh-comment-id:3826001030 --> @cursor[bot] commented on GitHub (Jan 30, 2026): I added the missing parity CLI surface area: new `builds` subcommands for relationships/metrics/individual-testers/uploads (plus upload files), new `beta-app-localizations` and `beta-build-localizations` command groups, new TestFlight beta-group/tester relationships + tester metrics, and pre‑release relationships. I also moved beta-groups/beta-testers under `asc testflight`, added new output result structs for build upload deletion and individual tester updates, and expanded cmdtests + client HTTP tests for the new endpoints. Tests run (all green): `make build`, `make lint`, `make test`. Video walkthrough of the new CLI help commands: `/opt/cursor/artifacts/cli_help_new_commands/recording_demo.mp4`. <a href="https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/354"><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-d631466d-7476-498f-a2da-bd8ac20eae9d"><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-d631466d-7476-498f-a2da-bd8ac20eae9d"><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 31, 2026):

Closed by PR #354: https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/354

<!-- gh-comment-id:3828195738 --> @rudrankriyam commented on GitHub (Jan 31, 2026): Closed by PR #354: https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/354
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#90
No description provided.