[GH-ISSUE #317] Parity: App metadata (keywords, categories, version relationships) #88

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

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

Overview

Expand CLI coverage for app metadata endpoints (search keywords, category hierarchy, app info relationships, and app store version relationships) to align with the OpenAPI spec while keeping JSON-first output and explicit flags.

Scope (OpenAPI resources)

  • Apps search keywords: /v1/apps/{id}/searchKeywords, /relationships/searchKeywords
  • App Store versions relationships: age rating, review detail, app clip default experience, experiments v1/v2, submission, customer reviews, routing coverage, alternative distribution package, game center app version
  • App Store version localization search keywords and preview/screenshot set relationships
  • App categories parent/subcategory endpoints
  • App info relationships: categories, age rating, territory age ratings

Proposed CLI

Top-level groups remain:

  • asc apps ...
  • asc versions ...
  • asc localizations ...
  • asc categories ...
  • asc app-info ...

New/expanded subcommands:

  • apps search-keywords list|set --app APP_ID
  • versions get --version-id ID --include age-rating,review-detail,submission,customer-reviews,routing-coverage,app-clip-default-experience
  • versions relationships get --version-id ID --type <relationship> (optional but useful)
  • localizations search-keywords list|add|delete --version-localization-id LOC_ID
  • categories get|parent|subcategories --category-id ID
  • app-info get --app APP_ID --include categories,age-rating,territory-age-ratings

Examples:

  • asc apps search-keywords list --app APP_ID
  • asc apps search-keywords set --app APP_ID --keywords "kw1,kw2"
  • asc versions get --version-id VER_ID --include review-detail,submission
  • asc localizations search-keywords add --version-localization-id LOC_ID --keywords "kw1,kw2"
  • asc categories parent --category-id CAT_ID
  • asc app-info get --app APP_ID --include categories,age-rating

Flag patterns

Common:

  • --app, --version-id, --output, --pretty, --limit, --next, --paginate, --confirm

Resource-specific:

  • --version-localization-id, --category-id, --keywords
  • --include (comma-separated include list)

Output

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

Detailed TODO

  • Add client methods for app search keywords
  • Add client methods for version relationships (age rating, review detail, submission, etc.)
  • Add client methods for localization search keywords + preview/screenshot relationships
  • Add client methods for category parent/subcategories
  • Add client methods for app info relationships (categories, age rating, territory ratings)
  • Implement apps search-keywords commands
  • Implement versions get --include and optional versions relationships
  • Implement localizations search-keywords commands
  • Implement categories parent/subcategories commands
  • Implement app-info get --include ...
  • Add output helpers if needed
  • Add CLI cmdtests and client HTTP tests (mocked)

Acceptance criteria

  • Commands appear in asc apps/versions/localizations/categories/app-info --help
  • Search keywords CRUD works for apps and version localizations
  • Version relationship data can be retrieved via --include or relationships subcommand
  • Category parent/subcategories retrievable
  • App info relationships retrievable
  • Pagination/--next validation works
  • JSON-first output preserved; table/markdown for lists

Tests

  • Command flag validation tests (missing required flags)
  • HTTP client tests for new endpoints
  • Output tests for table/markdown where applicable

Implementation notes

  • Add client methods in internal/asc/client_apps.go, client_versions.go, client_localizations.go, client_categories.go
  • Add CLI handlers in internal/cli/apps, versions, localizations, categories, apps/app_info.go
  • Register in internal/cli/registry/registry.go
  • Follow patterns in existing apps and versions commands
Originally created by @rudrankriyam on GitHub (Jan 30, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/317 # Overview Expand CLI coverage for app metadata endpoints (search keywords, category hierarchy, app info relationships, and app store version relationships) to align with the OpenAPI spec while keeping JSON-first output and explicit flags. # Scope (OpenAPI resources) - Apps search keywords: `/v1/apps/{id}/searchKeywords`, `/relationships/searchKeywords` - App Store versions relationships: age rating, review detail, app clip default experience, experiments v1/v2, submission, customer reviews, routing coverage, alternative distribution package, game center app version - App Store version localization search keywords and preview/screenshot set relationships - App categories parent/subcategory endpoints - App info relationships: categories, age rating, territory age ratings # Proposed CLI Top-level groups remain: - `asc apps ...` - `asc versions ...` - `asc localizations ...` - `asc categories ...` - `asc app-info ...` New/expanded subcommands: - `apps search-keywords list|set --app APP_ID` - `versions get --version-id ID --include age-rating,review-detail,submission,customer-reviews,routing-coverage,app-clip-default-experience` - `versions relationships get --version-id ID --type <relationship>` (optional but useful) - `localizations search-keywords list|add|delete --version-localization-id LOC_ID` - `categories get|parent|subcategories --category-id ID` - `app-info get --app APP_ID --include categories,age-rating,territory-age-ratings` Examples: - `asc apps search-keywords list --app APP_ID` - `asc apps search-keywords set --app APP_ID --keywords "kw1,kw2"` - `asc versions get --version-id VER_ID --include review-detail,submission` - `asc localizations search-keywords add --version-localization-id LOC_ID --keywords "kw1,kw2"` - `asc categories parent --category-id CAT_ID` - `asc app-info get --app APP_ID --include categories,age-rating` # Flag patterns Common: - `--app`, `--version-id`, `--output`, `--pretty`, `--limit`, `--next`, `--paginate`, `--confirm` Resource-specific: - `--version-localization-id`, `--category-id`, `--keywords` - `--include` (comma-separated include list) # Output - JSON minified by default - `--pretty` for JSON - `--output table/markdown` for list commands # Detailed TODO - [ ] Add client methods for app search keywords - [ ] Add client methods for version relationships (age rating, review detail, submission, etc.) - [ ] Add client methods for localization search keywords + preview/screenshot relationships - [ ] Add client methods for category parent/subcategories - [ ] Add client methods for app info relationships (categories, age rating, territory ratings) - [ ] Implement `apps search-keywords` commands - [ ] Implement `versions get --include` and optional `versions relationships` - [ ] Implement `localizations search-keywords` commands - [ ] Implement `categories` parent/subcategories commands - [ ] Implement `app-info get --include ...` - [ ] Add output helpers if needed - [ ] Add CLI cmdtests and client HTTP tests (mocked) # Acceptance criteria - [ ] Commands appear in `asc apps/versions/localizations/categories/app-info --help` - [ ] Search keywords CRUD works for apps and version localizations - [ ] Version relationship data can be retrieved via `--include` or relationships subcommand - [ ] Category parent/subcategories retrievable - [ ] App info relationships retrievable - [ ] Pagination/`--next` validation works - [ ] JSON-first output preserved; table/markdown for lists # Tests - Command flag validation tests (missing required flags) - HTTP client tests for new endpoints - Output tests for table/markdown where applicable # Implementation notes - Add client methods in `internal/asc/client_apps.go`, `client_versions.go`, `client_localizations.go`, `client_categories.go` - Add CLI handlers in `internal/cli/apps`, `versions`, `localizations`, `categories`, `apps/app_info.go` - Register in `internal/cli/registry/registry.go` - Follow patterns in existing `apps` and `versions` commands
kerem closed this issue 2026-02-26 21:33:18 +03:00
Author
Owner

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

Closed by #346 (merged).

<!-- gh-comment-id:3825982437 --> @rudrankriyam commented on GitHub (Jan 30, 2026): Closed by #346 (merged).
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#88
No description provided.