[GH-ISSUE #330] Parity: Accounts & signing relationships (profiles, users, certs) #102

Closed
opened 2026-02-26 21:33:24 +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/330

Overview

Expose remaining relationship endpoints in the Accounts/Signing area: profiles → bundleId/certificates/devices, users → visibleApps, certificates → passTypeId, merchant/pass type certificates. Mostly read-only but improves parity and discoverability.

Scope (OpenAPI resources)

  • profiles/{id}/bundleId, certificates, devices + relationships
  • users/{id}/visibleApps + relationship
  • certificates/{id}/passTypeId + relationship
  • merchantIds/{id}/certificates + relationship
  • passTypeIds/{id}/certificates + relationship

Proposed CLI

Top-level groups:

  • asc profiles ...
  • asc users ...
  • asc certificates ...
  • asc merchant-ids ...
  • asc pass-type-ids ...

New/expanded subcommands:

  • profiles get --id PROFILE_ID --include bundleId,certificates,devices
  • profiles relationships <bundle-id|certificates|devices> --id PROFILE_ID
  • users get --id USER_ID --include visibleApps
  • users visible-apps list --id USER_ID
  • certificates get --id CERT_ID --include passTypeId
  • certificates relationships pass-type-id --id CERT_ID
  • merchant-ids certificates list --merchant-id MERCHANT_ID (verify)
  • pass-type-ids certificates list --pass-type-id PASS_ID (verify)

Examples:

  • asc profiles get --id PROFILE_ID --include bundleId,certificates,devices
  • asc users visible-apps list --id USER_ID
  • asc certificates relationships pass-type-id --id CERT_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 profiles relationships
  • Add client methods for users visibleApps relationship
  • Add client methods for certificates passTypeId relationship
  • Verify merchant/pass-type cert list endpoints map to OpenAPI; add relationships if missing
  • Implement CLI subcommands and include flags
  • Add cmdtests + HTTP client tests (mocked)

Acceptance criteria

  • Profile relationships accessible via CLI
  • User visible apps accessible via CLI
  • Certificate pass type ID accessible via CLI
  • JSON-first output preserved

Tests

  • Flag validation tests
  • HTTP client tests for relationships
  • Output tests for list commands

Implementation notes

  • Add client methods in internal/asc/client_profiles.go, client_users.go, client_certificates.go
  • Add CLI commands in internal/cli/profiles, users, certificates
  • Follow patterns from existing list/get commands
Originally created by @rudrankriyam on GitHub (Jan 30, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/330 # Overview Expose remaining relationship endpoints in the Accounts/Signing area: profiles → bundleId/certificates/devices, users → visibleApps, certificates → passTypeId, merchant/pass type certificates. Mostly read-only but improves parity and discoverability. # Scope (OpenAPI resources) - `profiles/{id}/bundleId`, `certificates`, `devices` + relationships - `users/{id}/visibleApps` + relationship - `certificates/{id}/passTypeId` + relationship - `merchantIds/{id}/certificates` + relationship - `passTypeIds/{id}/certificates` + relationship # Proposed CLI Top-level groups: - `asc profiles ...` - `asc users ...` - `asc certificates ...` - `asc merchant-ids ...` - `asc pass-type-ids ...` New/expanded subcommands: - `profiles get --id PROFILE_ID --include bundleId,certificates,devices` - `profiles relationships <bundle-id|certificates|devices> --id PROFILE_ID` - `users get --id USER_ID --include visibleApps` - `users visible-apps list --id USER_ID` - `certificates get --id CERT_ID --include passTypeId` - `certificates relationships pass-type-id --id CERT_ID` - `merchant-ids certificates list --merchant-id MERCHANT_ID` (verify) - `pass-type-ids certificates list --pass-type-id PASS_ID` (verify) Examples: - `asc profiles get --id PROFILE_ID --include bundleId,certificates,devices` - `asc users visible-apps list --id USER_ID` - `asc certificates relationships pass-type-id --id CERT_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 profiles relationships - [ ] Add client methods for users visibleApps relationship - [ ] Add client methods for certificates passTypeId relationship - [ ] Verify merchant/pass-type cert list endpoints map to OpenAPI; add relationships if missing - [ ] Implement CLI subcommands and include flags - [ ] Add cmdtests + HTTP client tests (mocked) # Acceptance criteria - [ ] Profile relationships accessible via CLI - [ ] User visible apps accessible via CLI - [ ] Certificate pass type ID accessible via CLI - [ ] JSON-first output preserved # Tests - Flag validation tests - HTTP client tests for relationships - Output tests for list commands # Implementation notes - Add client methods in `internal/asc/client_profiles.go`, `client_users.go`, `client_certificates.go` - Add CLI commands in `internal/cli/profiles`, `users`, `certificates` - Follow patterns from existing list/get commands
kerem closed this issue 2026-02-26 21:33:24 +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:3822603152 --> @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):

Summary:

  • I added include support for profiles/users/certificates GETs and wired new client methods for profile relationship endpoints plus user visible-apps relationships.
  • I added CLI commands for profiles relationships (bundle-id|certificates|devices), users visible-apps list/get, and certificates get + certificates relationships pass-type-id, keeping JSON-first defaults and explicit flags.

Tests:

  • make build
  • make lint
  • make test

Logistics:

  • I committed and pushed to cursor/accounts-signing-relationships-a41b (commit d288ce4). The push output provided a PR URL; I didn’t open it directly since PR creation is handled by the environment.

View PR
Open in Cursor Open in Web

<!-- gh-comment-id:3822603530 --> @cursor[bot] commented on GitHub (Jan 30, 2026): Summary: - I added include support for profiles/users/certificates GETs and wired new client methods for profile relationship endpoints plus user visible-apps relationships. - I added CLI commands for `profiles relationships (bundle-id|certificates|devices)`, `users visible-apps list/get`, and `certificates get` + `certificates relationships pass-type-id`, keeping JSON-first defaults and explicit flags. Tests: - `make build` - `make lint` - `make test` Logistics: - I committed and pushed to `cursor/accounts-signing-relationships-a41b` (commit `d288ce4`). The push output provided a PR URL; I didn’t open it directly since PR creation is handled by the environment. <a href="https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/336"><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-88b09965-e56a-4464-948d-06e43ff4b58a"><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-88b09965-e56a-4464-948d-06e43ff4b58a"><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 30, 2026):

Fixed by #336 and audit follow-ups in #341 (plus next-URL improvements in #342). Included in release 0.20.2.

<!-- gh-comment-id:3825187613 --> @rudrankriyam commented on GitHub (Jan 30, 2026): Fixed by #336 and audit follow-ups in #341 (plus next-URL improvements in #342). Included in release 0.20.2.
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#102
No description provided.