[GH-ISSUE #649] Pricing: support tier-based selection for price points #181

Open
opened 2026-02-26 21:33:55 +03:00 by kerem · 0 comments
Owner

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

Originally assigned to: @mithileshchellappan on GitHub.

Problem

Several commands require an opaque price-point ID (or PRICE_POINT_ID inside --prices entries). In practice, people think in terms of a tier (sorted list of price points for a base territory like USA) or a customer price (e.g. 4.99).

Today, to pick a price point you have to:

  • list price points, export JSON, and manually map/sort
  • or maintain a manual tier table that must be regenerated when changing the base price/territory

Examples of affected commands:

  • asc pricing schedule create --app APP_ID --price-point PRICE_POINT_ID --base-territory USA --start-date 2024-03-01
  • asc subscriptions prices add --id SUB_ID --price-point PRICE_POINT_ID [--territory USA]
  • asc iap price-schedules create --iap-id IAP_ID --base-territory USA --prices PRICE_POINT_ID:2024-03-01

Desired behavior

Allow specifying a tier (and/or a customer price) instead of a raw price point ID.

Important note: Apple no longer exposes official numbered tiers in the ASC API. This would be a CLI-defined convenience layer built on top of price points.

Proposal

1) Compute tiers dynamically (API-derived)

  • Fetch price points for a given territory (e.g. USA).
  • Sort by customerPrice (numeric) ascending.
  • Assign tier numbers starting at 1.
  • Expose {tier, id, customerPrice, proceeds, ...} in output.

2) Add tier/price resolution flags (mutually exclusive)

For commands that currently accept a price point ID, add one (or both) of:

  • --tier <int>: resolve to the corresponding price point ID for --territory (or inferred base territory where applicable)
  • --price <decimal>: resolve by exact customer price match for --territory

Keep --price-point as the escape hatch.

3) Provide a way to list tiers

Add a listing view that prints tier + price point mapping for a territory. Options:

  • new command like asc pricing tiers --app APP_ID --territory USA
  • or extend existing asc pricing price-points with a --with-tiers/--tiers output mode

4) Caching + refresh

To avoid repeated API calls and make this ergonomic:

  • cache tier mapping per resource kind + territory (and possibly app/subscription/iap context) in a local cache file
  • add --refresh (or TTL) to re-fetch
  • include asOf metadata in JSON so tier tables are reproducible

Acceptance criteria

  • Can run asc pricing schedule create using --tier or --price instead of --price-point.
  • Can run asc subscriptions prices add using --tier or --price instead of --price-point.
  • Can list tiers for a territory in a fast, human-friendly output (--output table / --output markdown) and JSON.
  • Validation: --tier, --price, --price-point are mutually exclusive; invalid tier/price produces exit code 2 with a clear error.
  • Tests: add internal/cli/cmdtest coverage with httptest fixtures.

Notes / considerations

  • Tier numbering is inherently derived; if Apple adds/removes price points, tier numbers may shift.
  • Reference: Apple’s “App Store Pricing Update” PDF (price steps/ranges + conventions, not a tier list): https://www.apple.com/newsroom/pdfs/App-Store-Pricing-Update.pdf
  • Default territory should probably be explicit for tier resolution to avoid accidentally triggering very large requests (esp. subscriptions without --territory).
Originally created by @rudrankriyam on GitHub (Feb 18, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/649 Originally assigned to: @mithileshchellappan on GitHub. ## Problem Several commands require an opaque `price-point` ID (or `PRICE_POINT_ID` inside `--prices` entries). In practice, people think in terms of a *tier* (sorted list of price points for a base territory like USA) or a *customer price* (e.g. 4.99). Today, to pick a price point you have to: - list price points, export JSON, and manually map/sort - or maintain a manual tier table that must be regenerated when changing the base price/territory Examples of affected commands: - `asc pricing schedule create --app APP_ID --price-point PRICE_POINT_ID --base-territory USA --start-date 2024-03-01` - `asc subscriptions prices add --id SUB_ID --price-point PRICE_POINT_ID [--territory USA]` - `asc iap price-schedules create --iap-id IAP_ID --base-territory USA --prices PRICE_POINT_ID:2024-03-01` ## Desired behavior Allow specifying a *tier* (and/or a *customer price*) instead of a raw price point ID. Important note: Apple no longer exposes official numbered tiers in the ASC API. This would be a CLI-defined convenience layer built on top of price points. ## Proposal ### 1) Compute tiers dynamically (API-derived) - Fetch price points for a given territory (e.g. USA). - Sort by `customerPrice` (numeric) ascending. - Assign tier numbers starting at 1. - Expose `{tier, id, customerPrice, proceeds, ...}` in output. ### 2) Add tier/price resolution flags (mutually exclusive) For commands that currently accept a price point ID, add one (or both) of: - `--tier <int>`: resolve to the corresponding price point ID for `--territory` (or inferred base territory where applicable) - `--price <decimal>`: resolve by exact customer price match for `--territory` Keep `--price-point` as the escape hatch. ### 3) Provide a way to list tiers Add a listing view that prints tier + price point mapping for a territory. Options: - new command like `asc pricing tiers --app APP_ID --territory USA` - or extend existing `asc pricing price-points` with a `--with-tiers`/`--tiers` output mode ### 4) Caching + refresh To avoid repeated API calls and make this ergonomic: - cache tier mapping per resource kind + territory (and possibly app/subscription/iap context) in a local cache file - add `--refresh` (or TTL) to re-fetch - include `asOf` metadata in JSON so tier tables are reproducible ## Acceptance criteria - Can run `asc pricing schedule create` using `--tier` or `--price` instead of `--price-point`. - Can run `asc subscriptions prices add` using `--tier` or `--price` instead of `--price-point`. - Can list tiers for a territory in a fast, human-friendly output (`--output table` / `--output markdown`) and JSON. - Validation: `--tier`, `--price`, `--price-point` are mutually exclusive; invalid tier/price produces exit code 2 with a clear error. - Tests: add `internal/cli/cmdtest` coverage with `httptest` fixtures. ## Notes / considerations - Tier numbering is inherently derived; if Apple adds/removes price points, tier numbers may shift. - Reference: Apple’s “App Store Pricing Update” PDF (price steps/ranges + conventions, not a tier list): https://www.apple.com/newsroom/pdfs/App-Store-Pricing-Update.pdf - Default territory should probably be explicit for tier resolution to avoid accidentally triggering very large requests (esp. subscriptions without `--territory`).
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#181
No description provided.