[GH-ISSUE #325] Parity: In-App Purchases (images, availability, price schedules, offer codes) #97

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

Overview

Expand IAP CLI to cover missing sub-resources: localizations CRUD, images, review screenshots, availability, content, price points/schedules, offer codes, and submissions.

Scope (OpenAPI resources)

  • inAppPurchaseLocalizations CRUD
  • inAppPurchaseImages CRUD
  • inAppPurchaseAppStoreReviewScreenshots CRUD
  • inAppPurchaseAvailabilities + available territories
  • inAppPurchaseContents
  • inAppPurchasePricePoints + equalizations
  • inAppPurchasePriceSchedules + automatic/manual prices
  • inAppPurchaseOfferCodes + custom/one-time/prices
  • inAppPurchaseSubmissions

Proposed CLI

Top-level group:

  • asc iap ...

New/expanded subcommands:

  • iap localizations create|update|delete
  • iap images list|get|create|update|delete
  • iap review-screenshots get|create|update|delete
  • iap availability get|set
  • iap content get --iap-id ID
  • iap price-points list --iap-id ID
  • iap price-schedules get|create --iap-id ID
  • iap offer-codes list|get|create|update --iap-id ID
  • iap submit --iap-id ID --confirm

Examples:

  • asc iap images create --iap-id IAP_ID --file image.png
  • asc iap availability set --iap-id IAP_ID --territories US,CA
  • asc iap offer-codes create --iap-id IAP_ID --name "SPRING"
  • asc iap submit --iap-id IAP_ID --confirm

Flag patterns

Common:

  • --iap-id, --output, --pretty, --limit, --next, --paginate, --confirm

Resource-specific:

  • --locale, --file, --territories, --prices

Output

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

Detailed TODO

  • Add client methods for IAP localizations CRUD
  • Add client methods for images/review screenshots
  • Add client methods for availability + content
  • Add client methods for price points/schedules
  • Add client methods for offer codes + custom/one-time/prices
  • Add client method for submissions
  • Implement CLI subcommands listed above
  • Add output helpers if needed
  • Add cmdtests + HTTP client tests (mocked)

Acceptance criteria

  • Localizations/images/review screenshots CRUD work
  • Availability and content endpoints accessible
  • Price points/schedules endpoints accessible
  • Offer codes list/get/create/update work
  • Submission endpoint accessible
  • Pagination/--next validation works

Tests

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

Implementation notes

  • Add client methods in internal/asc/client_iap.go
  • Add CLI commands in internal/cli/iap
  • Follow patterns from existing IAP commands
Originally created by @rudrankriyam on GitHub (Jan 30, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/325 # Overview Expand IAP CLI to cover missing sub-resources: localizations CRUD, images, review screenshots, availability, content, price points/schedules, offer codes, and submissions. # Scope (OpenAPI resources) - `inAppPurchaseLocalizations` CRUD - `inAppPurchaseImages` CRUD - `inAppPurchaseAppStoreReviewScreenshots` CRUD - `inAppPurchaseAvailabilities` + available territories - `inAppPurchaseContents` - `inAppPurchasePricePoints` + equalizations - `inAppPurchasePriceSchedules` + automatic/manual prices - `inAppPurchaseOfferCodes` + custom/one-time/prices - `inAppPurchaseSubmissions` # Proposed CLI Top-level group: - `asc iap ...` New/expanded subcommands: - `iap localizations create|update|delete` - `iap images list|get|create|update|delete` - `iap review-screenshots get|create|update|delete` - `iap availability get|set` - `iap content get --iap-id ID` - `iap price-points list --iap-id ID` - `iap price-schedules get|create --iap-id ID` - `iap offer-codes list|get|create|update --iap-id ID` - `iap submit --iap-id ID --confirm` Examples: - `asc iap images create --iap-id IAP_ID --file image.png` - `asc iap availability set --iap-id IAP_ID --territories US,CA` - `asc iap offer-codes create --iap-id IAP_ID --name "SPRING"` - `asc iap submit --iap-id IAP_ID --confirm` # Flag patterns Common: - `--iap-id`, `--output`, `--pretty`, `--limit`, `--next`, `--paginate`, `--confirm` Resource-specific: - `--locale`, `--file`, `--territories`, `--prices` # Output - JSON minified by default - `--pretty` for JSON - `--output table/markdown` for list commands # Detailed TODO - [ ] Add client methods for IAP localizations CRUD - [ ] Add client methods for images/review screenshots - [ ] Add client methods for availability + content - [ ] Add client methods for price points/schedules - [ ] Add client methods for offer codes + custom/one-time/prices - [ ] Add client method for submissions - [ ] Implement CLI subcommands listed above - [ ] Add output helpers if needed - [ ] Add cmdtests + HTTP client tests (mocked) # Acceptance criteria - [ ] Localizations/images/review screenshots CRUD work - [ ] Availability and content endpoints accessible - [ ] Price points/schedules endpoints accessible - [ ] Offer codes list/get/create/update work - [ ] Submission endpoint accessible - [ ] Pagination/`--next` validation works # Tests - Flag validation tests - HTTP client tests for list/get/create/update/delete - Upload tests for images/review screenshots - Output tests for list commands # Implementation notes - Add client methods in `internal/asc/client_iap.go` - Add CLI commands in `internal/cli/iap` - Follow patterns from existing IAP commands
kerem closed this issue 2026-02-26 21:33:22 +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:3826000674 --> @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):

I didn’t make any code changes this turn; the branch cursor/in-app-purchases-sub-resources-3ff8 is clean.

I ran the full suite as requested: make build && make lint && make test (all passed). PR creation isn’t something I can do here—the environment handles that automatically.

View PR
Open in Cursor Open in Web

<!-- gh-comment-id:3826000926 --> @cursor[bot] commented on GitHub (Jan 30, 2026): I didn’t make any code changes this turn; the branch `cursor/in-app-purchases-sub-resources-3ff8` is clean. I ran the full suite as requested: `make build && make lint && make test` (all passed). PR creation isn’t something I can do here—the environment handles that automatically. <a href="https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/348"><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-a46ee331-4744-4008-82ff-8bdebedde426"><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-a46ee331-4744-4008-82ff-8bdebedde426"><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 #348: https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/348

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