[GH-ISSUE #368] Parity: Bundle IDs, agreements, CI product, background assets, visible apps #107

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

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

Overview

Add remaining relationship endpoints across bundle IDs, agreements, background assets, CI product, and user invitations.

Scope (OpenAPI resources)

  • /v1/bundleIds/{id}/app
  • /v1/bundleIds/{id}/profiles
  • /v1/userInvitations/{id}/visibleApps
  • /v1/endUserLicenseAgreements/{id}/territories
  • /v1/backgroundAssetVersionAppStoreReleases/{id}
  • /v1/backgroundAssetVersionExternalBetaReleases/{id}
  • /v1/backgroundAssetVersionInternalBetaReleases/{id}
  • /v1/apps/{id}/ciProduct

Proposed CLI

  • asc bundle-ids ...
  • asc users ...
  • asc agreements ...
  • asc background-assets ...
  • asc xcode-cloud ...

Examples:

  • asc bundle-ids app get --id "BUNDLE_ID"
  • asc bundle-ids profiles list --id "BUNDLE_ID"
  • asc users visible-apps list --id "INVITATION_ID"
  • asc agreements territories list --id "EULA_ID"
  • asc background-assets app-store-releases get --id "RELEASE_ID"
  • asc apps ci-product get --id "APP_ID"

Flag patterns

Common: --id, --output, --pretty, --limit, --next, --paginate

Output

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

Detailed TODO

  • Add client methods for bundle ID relationships
  • Add client methods for visible apps and EULA territories
  • Add client methods for background asset releases and CI product
  • Implement CLI subcommands and relationship helpers
  • Add cmdtests + HTTP client tests (mocked)

Acceptance criteria

  • Bundle ID relationships accessible via CLI
  • Visible apps and EULA territories accessible
  • Background asset releases and CI product accessible

Tests

  • Flag validation tests
  • HTTP client tests for each endpoint
  • Output tests for list commands

Implementation notes

  • Add client methods in internal/asc for bundle IDs, agreements, background assets, CI product
  • Add CLI in internal/cli/bundleids, users, agreements, backgroundassets, xcodecloud

References

  • docs/openapi/latest.json
  • docs/openapi/paths.txt
Originally created by @rudrankriyam on GitHub (Jan 31, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/368 # Overview Add remaining relationship endpoints across bundle IDs, agreements, background assets, CI product, and user invitations. # Scope (OpenAPI resources) - `/v1/bundleIds/{id}/app` - `/v1/bundleIds/{id}/profiles` - `/v1/userInvitations/{id}/visibleApps` - `/v1/endUserLicenseAgreements/{id}/territories` - `/v1/backgroundAssetVersionAppStoreReleases/{id}` - `/v1/backgroundAssetVersionExternalBetaReleases/{id}` - `/v1/backgroundAssetVersionInternalBetaReleases/{id}` - `/v1/apps/{id}/ciProduct` # Proposed CLI - `asc bundle-ids ...` - `asc users ...` - `asc agreements ...` - `asc background-assets ...` - `asc xcode-cloud ...` Examples: - `asc bundle-ids app get --id "BUNDLE_ID"` - `asc bundle-ids profiles list --id "BUNDLE_ID"` - `asc users visible-apps list --id "INVITATION_ID"` - `asc agreements territories list --id "EULA_ID"` - `asc background-assets app-store-releases get --id "RELEASE_ID"` - `asc apps ci-product get --id "APP_ID"` # Flag patterns Common: `--id`, `--output`, `--pretty`, `--limit`, `--next`, `--paginate` # Output - JSON minified by default - `--pretty` for JSON - `--output table/markdown` for list commands # Detailed TODO - [ ] Add client methods for bundle ID relationships - [ ] Add client methods for visible apps and EULA territories - [ ] Add client methods for background asset releases and CI product - [ ] Implement CLI subcommands and relationship helpers - [ ] Add cmdtests + HTTP client tests (mocked) # Acceptance criteria - [ ] Bundle ID relationships accessible via CLI - [ ] Visible apps and EULA territories accessible - [ ] Background asset releases and CI product accessible # Tests - Flag validation tests - HTTP client tests for each endpoint - Output tests for list commands # Implementation notes - Add client methods in `internal/asc` for bundle IDs, agreements, background assets, CI product - Add CLI in `internal/cli/bundleids`, `users`, `agreements`, `backgroundassets`, `xcodecloud` # References - `docs/openapi/latest.json` - `docs/openapi/paths.txt`
kerem closed this issue 2026-02-26 21:33:27 +03:00
Author
Owner

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

@cursor please implement

<!-- gh-comment-id:3828611001 --> @rudrankriyam commented on GitHub (Jan 31, 2026): @cursor please implement
Author
Owner

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

Summary:

  • I added bundle ID relationship CLI commands (app + profiles) and a new agreements → territories list flow so EULA territories are reachable via the requested asc agreements ... path.
// BundleIDsAppCommand returns the bundle ID app command group.
func BundleIDsAppCommand() *ffcli.Command {
	fs := flag.NewFlagSet("app", flag.ExitOnError)
	// ...
}
// AgreementsCommand returns the agreements command group.
func AgreementsCommand() *ffcli.Command {
	fs := flag.NewFlagSet("agreements", flag.ExitOnError)
	// ...
}
  • I added the user‑invitation visible‑apps list subcommand, apps ci‑product get, and background‑asset release getters to cover the remaining relationship endpoints.
// UsersInvitesVisibleAppsCommand returns the invites visible apps command group.
func UsersInvitesVisibleAppsCommand() *ffcli.Command {
	// ...
}
// AppsCIProductCommand returns the ci-product command group.
func AppsCIProductCommand() *ffcli.Command {
	// ...
}
// BackgroundAssetsAppStoreReleasesCommand returns the App Store releases command group.
func BackgroundAssetsAppStoreReleasesCommand() *ffcli.Command {
	// ...
}

Tests:

  • make test

Note: user‑invitation visible apps are exposed as asc users invites visible-apps list --id "INVITE_ID" so the existing asc users visible-apps ... behavior for user IDs stays intact.

View PR
Open in Cursor Open in Web

<!-- gh-comment-id:3828611131 --> @cursor[bot] commented on GitHub (Jan 31, 2026): Summary: - I added bundle ID relationship CLI commands (app + profiles) and a new agreements → territories list flow so EULA territories are reachable via the requested `asc agreements ...` path. ```15:122:internal/cli/bundleids/bundle_ids_relationships.go // BundleIDsAppCommand returns the bundle ID app command group. func BundleIDsAppCommand() *ffcli.Command { fs := flag.NewFlagSet("app", flag.ExitOnError) // ... } ``` ```16:145:internal/cli/agreements/agreements.go // AgreementsCommand returns the agreements command group. func AgreementsCommand() *ffcli.Command { fs := flag.NewFlagSet("agreements", flag.ExitOnError) // ... } ``` - I added the user‑invitation visible‑apps list subcommand, apps ci‑product get, and background‑asset release getters to cover the remaining relationship endpoints. ```16:121:internal/cli/users/invites_visible_apps.go // UsersInvitesVisibleAppsCommand returns the invites visible apps command group. func UsersInvitesVisibleAppsCommand() *ffcli.Command { // ... } ``` ```13:74:internal/cli/apps/apps_ci_product.go // AppsCIProductCommand returns the ci-product command group. func AppsCIProductCommand() *ffcli.Command { // ... } ``` ```13:207:internal/cli/backgroundassets/background_assets_releases.go // BackgroundAssetsAppStoreReleasesCommand returns the App Store releases command group. func BackgroundAssetsAppStoreReleasesCommand() *ffcli.Command { // ... } ``` Tests: - `make test` Note: user‑invitation visible apps are exposed as `asc users invites visible-apps list --id "INVITE_ID"` so the existing `asc users visible-apps ...` behavior for user IDs stays intact. <a href="https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/373"><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-076fb6c8-1da5-4dd7-b885-328c83c4413d"><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-076fb6c8-1da5-4dd7-b885-328c83c4413d"><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 #373 (relationship coverage) with bundle ID next URL fix in #375.

<!-- gh-comment-id:3829221571 --> @rudrankriyam commented on GitHub (Jan 31, 2026): Closed by #373 (relationship coverage) with bundle ID next URL fix in #375.
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#107
No description provided.