[GH-ISSUE #324] Parity: Subscriptions (localizations, images, offers, prices, submissions) #96

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

Overview

Expand Subscriptions CLI to cover missing sub-resources: localizations, images, introductory/promotional offers, offer codes, price points, submissions, review screenshots, and group localizations/submissions.

Scope (OpenAPI resources)

  • subscriptionLocalizations CRUD
  • subscriptionImages CRUD
  • subscriptionIntroductoryOffers CRUD
  • subscriptionPromotionalOffers CRUD + prices
  • subscriptionOfferCodes list/get/create/update + custom/one-time/prices
  • subscriptionPricePoints list/get/equalizations
  • subscriptionSubmissions POST
  • subscriptionAppStoreReviewScreenshots CRUD
  • subscriptionGroupLocalizations CRUD
  • subscriptionGroupSubmissions POST

Proposed CLI

Top-level group:

  • asc subscriptions ...

New/expanded subcommands:

  • subscriptions localizations list|get|create|update|delete
  • subscriptions images list|get|create|update|delete
  • subscriptions introductory-offers list|get|create|update|delete
  • subscriptions promotional-offers list|get|create|update
  • subscriptions offer-codes list|get|create|update
  • subscriptions price-points list|get|equalizations
  • subscriptions submit --subscription-id ID --confirm
  • subscriptions review-screenshots get|create|update|delete
  • subscriptions groups localizations list|get|create|update|delete
  • subscriptions groups submit --group-id ID --confirm

Examples:

  • asc subscriptions localizations create --subscription-id SUB_ID --locale en-US --name "Pro"
  • asc subscriptions introductory-offers create --subscription-id SUB_ID --offer-duration P1M
  • asc subscriptions offer-codes create --subscription-id SUB_ID --name "SPRING"
  • asc subscriptions submit --subscription-id SUB_ID --confirm

Flag patterns

Common:

  • --subscription-id, --group-id, --output, --pretty, --limit, --next, --paginate, --confirm

Resource-specific:

  • --locale, --name, --offer-duration, --prices, --file

Output

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

Detailed TODO

  • Add client methods for subscription localizations, images, offers, offer codes, price points
  • Add client methods for submissions and review screenshots
  • Add client methods for group localizations/submissions
  • Implement CLI subcommands listed above
  • Add output helpers if needed
  • Add cmdtests + HTTP client tests (mocked)

Acceptance criteria

  • Localizations/images/offers CRUD work
  • Offer codes list/get/create/update work
  • Price points list/equalizations work
  • Submission endpoints accessible
  • Review screenshots CRUD works
  • Group localization/submission endpoints accessible
  • Pagination/--next validation works

Tests

  • Flag validation tests
  • HTTP client tests for list/get/create/update/delete
  • Upload tests for screenshots/images
  • Output tests for list commands

Implementation notes

  • Add client methods in internal/asc/client_subscriptions.go
  • Add CLI commands in internal/cli/subscriptions
  • Follow patterns from existing subscription price/availability commands
Originally created by @rudrankriyam on GitHub (Jan 30, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/324 # Overview Expand Subscriptions CLI to cover missing sub-resources: localizations, images, introductory/promotional offers, offer codes, price points, submissions, review screenshots, and group localizations/submissions. # Scope (OpenAPI resources) - `subscriptionLocalizations` CRUD - `subscriptionImages` CRUD - `subscriptionIntroductoryOffers` CRUD - `subscriptionPromotionalOffers` CRUD + prices - `subscriptionOfferCodes` list/get/create/update + custom/one-time/prices - `subscriptionPricePoints` list/get/equalizations - `subscriptionSubmissions` POST - `subscriptionAppStoreReviewScreenshots` CRUD - `subscriptionGroupLocalizations` CRUD - `subscriptionGroupSubmissions` POST # Proposed CLI Top-level group: - `asc subscriptions ...` New/expanded subcommands: - `subscriptions localizations list|get|create|update|delete` - `subscriptions images list|get|create|update|delete` - `subscriptions introductory-offers list|get|create|update|delete` - `subscriptions promotional-offers list|get|create|update` - `subscriptions offer-codes list|get|create|update` - `subscriptions price-points list|get|equalizations` - `subscriptions submit --subscription-id ID --confirm` - `subscriptions review-screenshots get|create|update|delete` - `subscriptions groups localizations list|get|create|update|delete` - `subscriptions groups submit --group-id ID --confirm` Examples: - `asc subscriptions localizations create --subscription-id SUB_ID --locale en-US --name "Pro"` - `asc subscriptions introductory-offers create --subscription-id SUB_ID --offer-duration P1M` - `asc subscriptions offer-codes create --subscription-id SUB_ID --name "SPRING"` - `asc subscriptions submit --subscription-id SUB_ID --confirm` # Flag patterns Common: - `--subscription-id`, `--group-id`, `--output`, `--pretty`, `--limit`, `--next`, `--paginate`, `--confirm` Resource-specific: - `--locale`, `--name`, `--offer-duration`, `--prices`, `--file` # Output - JSON minified by default - `--pretty` for JSON - `--output table/markdown` for list commands # Detailed TODO - [ ] Add client methods for subscription localizations, images, offers, offer codes, price points - [ ] Add client methods for submissions and review screenshots - [ ] Add client methods for group localizations/submissions - [ ] Implement CLI subcommands listed above - [ ] Add output helpers if needed - [ ] Add cmdtests + HTTP client tests (mocked) # Acceptance criteria - [ ] Localizations/images/offers CRUD work - [ ] Offer codes list/get/create/update work - [ ] Price points list/equalizations work - [ ] Submission endpoints accessible - [ ] Review screenshots CRUD works - [ ] Group localization/submission endpoints accessible - [ ] Pagination/`--next` validation works # Tests - Flag validation tests - HTTP client tests for list/get/create/update/delete - Upload tests for screenshots/images - Output tests for list commands # Implementation notes - Add client methods in `internal/asc/client_subscriptions.go` - Add CLI commands in `internal/cli/subscriptions` - Follow patterns from existing subscription price/availability commands
kerem closed this issue 2026-02-26 21:33:21 +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:3826000732 --> @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 validated the new subscriptions sub-resource CLI surface by running the full build/lint/test suite and captured a terminal walkthrough showing the new help output for subscriptions, offer-codes, and promotional-offers.

Tests:

  • make build
  • make lint
  • make test

Artifacts:

  • Video walkthrough: subscriptions_cli_help_commands/recording_demo.mp4 (shows ./asc subscriptions --help, ./asc subscriptions offer-codes --help, ./asc subscriptions promotional-offers --help)
  • Note: I can’t open a PR from this environment; pushing changes is handled on the existing branch.

View PR
Open in Cursor Open in Web

<!-- gh-comment-id:3826000994 --> @cursor[bot] commented on GitHub (Jan 30, 2026): Summary: - I validated the new subscriptions sub-resource CLI surface by running the full build/lint/test suite and captured a terminal walkthrough showing the new help output for subscriptions, offer-codes, and promotional-offers. Tests: - `make build` - `make lint` - `make test` Artifacts: - Video walkthrough: `subscriptions_cli_help_commands/recording_demo.mp4` (shows `./asc subscriptions --help`, `./asc subscriptions offer-codes --help`, `./asc subscriptions promotional-offers --help`) - Note: I can’t open a PR from this environment; pushing changes is handled on the existing branch. <a href="https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/350"><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-9d785832-9e3f-464e-9dd0-ac25929960f8"><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-9d785832-9e3f-464e-9dd0-ac25929960f8"><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 #350: https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/350

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