mirror of
https://github.com/rudrankriyam/App-Store-Connect-CLI.git
synced 2026-04-25 07:35:48 +03:00
[GH-ISSUE #246] Add CLI support for Alternative Distribution #74
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#74
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 (Jan 28, 2026).
Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/246
Overview
Add CLI support for Alternative Distribution resources including domains, keys, packages, package versions, variants, and deltas using the App Store Connect API. This enables full management of alternative distribution configuration from the CLI with JSON-first output and explicit flags.
Scope
Primary resources from the OpenAPI spec:
alternativeDistributionDomains(GET list/instance, POST create, DELETE)alternativeDistributionKeys(GET list/instance, POST create, DELETE)alternativeDistributionPackages(GET instance, POST create)alternativeDistributionPackageVersions(GET instance, GET deltas/variants relationships)alternativeDistributionPackageVariants(GET instance)alternativeDistributionPackageDeltas(GET instance)apps/{id}/alternativeDistributionKey,appStoreVersions/{id}/alternativeDistributionPackageEndpoints:
Proposed CLI
Top-level group:
asc alternative-distribution <subcommand> [flags]Subcommands (all support list/get/create/update/delete unless noted):
alternative-distribution domains(list/get/create/delete)alternative-distribution keys(list/get/create/delete)alternative-distribution packages(get/create)alternative-distribution packages versions(get)alternative-distribution packages versions deltas(get)alternative-distribution packages versions variants(get)alternative-distribution packages variants(get)alternative-distribution packages deltas(get)Examples:
asc alternative-distribution domains listasc alternative-distribution domains create --domain example.comasc alternative-distribution keys list --app APP_IDasc alternative-distribution keys create --app APP_ID --public-key-path key.pemasc alternative-distribution packages get --package-id PACKAGE_IDasc alternative-distribution packages create --app APP_ID --version-id VERSION_IDasc alternative-distribution packages versions get --version-id VERSION_IDasc alternative-distribution packages versions deltas --version-id VERSION_IDasc alternative-distribution packages versions variants --version-id VERSION_IDFlag patterns
Common:
--app,--output,--pretty,--limit,--next,--paginate--confirmfor destructive operationsResource-specific examples:
--domain,--public-key-path,--public-key--package-id,--version-id,--variant-id,--delta-id--app-store-version-id(for package creation)Output
--prettyfor JSON--output table/markdownfor list commandsAcceptance criteria
asc --helpandasc alternative-distribution --help--paginate,--next,--limit)--confirmTests
Implementation notes
cmd/alternative_distribution*.goandinternal/asc/client_alternative_distribution*.gointernal/asc/output_alternative_distribution.gocmd/root.gointernal/asc/client_types.gocmd/apps.go,cmd/bundle_ids.go, and output helpers ininternal/asc/output_*@rudrankriyam commented on GitHub (Jan 29, 2026):
@cursor here’s a concrete, no-credentials implementation plan for #246.
High-level approach (no live creds needed)
docs/openapi/paths.txt+docs/openapi/latest.jsonfor endpoints/schemas.internal/cli/backgroundassets,internal/cli/marketplace,internal/cli/webhooks.Scope checkpoints
alternativeDistributiontypes ininternal/asc/alternative_distribution.go(attrs + requests + responses).ResourceTypeAlternativeDistribution*constants ininternal/asc/client_types.go.internal/asc/client_alternative_distribution.go./v1/alternativeDistributionDomains(GET/POST/DELETE)/v1/alternativeDistributionKeys(GET/POST/DELETE)/v1/alternativeDistributionPackages/{id}+ versions relationship GETs/v1/alternativeDistributionPackageVersions/{id}+ variants/deltas list/v1/alternativeDistributionPackageVariants/{id}/v1/alternativeDistributionPackageDeltas/{id}/v1/apps/{id}/alternativeDistributionKey/v1/appStoreVersions/{id}/alternativeDistributionPackageclient_options.goandclient_queries.go.--limit,--next,--paginate.internal/cli/alternativedistribution(notcmd/).asc alternative-distributionwith subcommands:domainslist/get/create/deletekeyslist/get/create/deletepackagesget/createpackages versionsgetpackages versions deltas|variantslist/getpackages variantsgetpackages deltasget--app,--package-id,--version-id, etc.).--confirm.--output table|markdownfor list commands.internal/asc/output_alternative_distribution.go.output_core.go(table + markdown).internal/cli/registry/registry.go(ordering matters).internal/cli/*/*_test.gopatterns (fail on missing flags/confirm).internal/asc/client_http_alternative_distribution_test.gomirroring other client tests (validate method/path/query/body).internal/asc/client_test.go(build query strings).Notes / gotchas
cmd/…; project standard isinternal/cli/…+ registry.Good definition of done
make testgreen; CLI help shows new group; list/get/create/delete behave per tests.If you want a branch name:
issue-246-alternative-distribution.@cursor[bot] commented on GitHub (Jan 29, 2026):
Thanks for the concrete plan — this lines up with the repo conventions and the PR scope. I’ll follow the internal/cli patterns (backgroundassets/marketplace/webhooks), implement the types + resource constants, then add the client methods and query options for domains/keys with pagination flags.
I’ll build the CLI in
internal/cli/alternativedistributionwith explicit flags, JSON-first output,--confirmfor deletes, and wire in table/markdown list output viaoutput_core.go. I’ll also register the commands and update README examples as noted.For tests, I’ll mirror the existing HTTP client and CLI flag validation tests (plus output + query tests), then run
make testbefore committing. If anything in the OpenAPI snapshot differs from the assumptions above, I’ll flag it in the PR comment.@rudrankriyam commented on GitHub (Jan 29, 2026):
@cursor please implement #246 and open a PR once build/lint/test are green (run make build, make lint, make test).
@cursor[bot] commented on GitHub (Jan 29, 2026):
Summary:
Tests:
make buildmake lintmake testArtifacts & PR:
./asc alternative-distribution --helpwith new subcommands): /opt/cursor/artifacts/alternative_distribution_help/recording_demo.mp44d3fe79tocursor/alternative-distribution-cli-376e. PRs are managed by the environment, but GitHub suggests creating one here: https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/new/cursor/alternative-distribution-cli-376e@rudrankriyam commented on GitHub (Jan 29, 2026):
Closed via #304 (Alternative distribution CLI), plus fixes in #305 and cleanup in #306.