asc-subscriptions

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

asc Subscriptions

asc 订阅管理

Manage auto-renewable subscription groups, tiers, and localizations via the
asc
CLI.
通过
asc
CLI管理自动续费订阅组、订阅层级及本地化设置。

Subscription Groups

订阅组

bash
undefined
bash
undefined

List

列出订阅组

asc subscription-groups list --app-id <APP_ID>
asc subscription-groups list --app-id <APP_ID>

Create

创建订阅组

asc subscription-groups create
--app-id <APP_ID>
--reference-name "Premium Plans"
undefined
asc subscription-groups create
--app-id <APP_ID>
--reference-name "Premium Plans"
undefined

Subscriptions

订阅

bash
undefined
bash
undefined

List

列出订阅

asc subscriptions list --group-id <GROUP_ID>
asc subscriptions list --group-id <GROUP_ID>

Create

创建订阅

asc subscriptions create
--group-id <GROUP_ID>
--name "Monthly Premium"
--product-id "com.app.monthly"
--period ONE_MONTH
[--family-sharable]
[--group-level 1]

**`--period`** values: `ONE_WEEK`, `ONE_MONTH`, `TWO_MONTHS`, `THREE_MONTHS`, `SIX_MONTHS`, `ONE_YEAR`
asc subscriptions create
--group-id <GROUP_ID>
--name "Monthly Premium"
--product-id "com.app.monthly"
--period ONE_MONTH
[--family-sharable]
[--group-level 1]

**`--period`** 参数可选值:`ONE_WEEK`, `ONE_MONTH`, `TWO_MONTHS`, `THREE_MONTHS`, `SIX_MONTHS`, `ONE_YEAR`

Subscription Localizations

订阅本地化

bash
undefined
bash
undefined

List

列出本地化设置

asc subscription-localizations list --subscription-id <SUBSCRIPTION_ID>
asc subscription-localizations list --subscription-id <SUBSCRIPTION_ID>

Create

创建本地化设置

asc subscription-localizations create
--subscription-id <SUBSCRIPTION_ID>
--locale en-US
--name "Monthly Premium"
[--description "Full access, billed monthly"]
undefined
asc subscription-localizations create
--subscription-id <SUBSCRIPTION_ID>
--locale en-US
--name "Monthly Premium"
[--description "Full access, billed monthly"]
undefined

Subscription Introductory Offers

订阅介绍性优惠

bash
undefined
bash
undefined

List

列出介绍性优惠

asc subscription-offers list --subscription-id <SUBSCRIPTION_ID>
asc subscription-offers list --subscription-id <SUBSCRIPTION_ID>

Create free trial

创建免费试用优惠

asc subscription-offers create
--subscription-id <SUBSCRIPTION_ID>
--duration ONE_MONTH
--mode FREE_TRIAL
--periods 1
asc subscription-offers create
--subscription-id <SUBSCRIPTION_ID>
--duration ONE_MONTH
--mode FREE_TRIAL
--periods 1

Create paid intro offer (price point required for PAY_AS_YOU_GO / PAY_UP_FRONT)

创建付费介绍性优惠(PAY_AS_YOU_GO / PAY_UP_FRONT模式需指定价格点ID)

asc subscription-offers create
--subscription-id <SUBSCRIPTION_ID>
--duration THREE_MONTHS
--mode PAY_AS_YOU_GO
--periods 3
--territory USA
--price-point-id <PRICE_POINT_ID>

**`--duration`** values: `THREE_DAYS`, `ONE_WEEK`, `TWO_WEEKS`, `ONE_MONTH`, `TWO_MONTHS`, `THREE_MONTHS`, `SIX_MONTHS`, `ONE_YEAR`

**`--mode`** values: `FREE_TRIAL`, `PAY_AS_YOU_GO`, `PAY_UP_FRONT` — paid modes require `--price-point-id`
asc subscription-offers create
--subscription-id <SUBSCRIPTION_ID>
--duration THREE_MONTHS
--mode PAY_AS_YOU_GO
--periods 3
--territory USA
--price-point-id <PRICE_POINT_ID>

**`--duration`** 参数可选值:`THREE_DAYS`, `ONE_WEEK`, `TWO_WEEKS`, `ONE_MONTH`, `TWO_MONTHS`, `THREE_MONTHS`, `SIX_MONTHS`, `ONE_YEAR`

**`--mode`** 参数可选值:`FREE_TRIAL`, `PAY_AS_YOU_GO`, `PAY_UP_FRONT` —— 付费模式需指定`--price-point-id`参数

Subscription Offer Codes

订阅优惠码

Manage offer codes for subscriptions. Offer codes let you distribute promotional codes with specific eligibility rules and offer terms.
管理订阅的优惠码。优惠码可用于分发带有特定资格规则和优惠条款的促销码。

List Offer Codes

列出优惠码

bash
asc subscription-offer-codes list --subscription-id <SUBSCRIPTION_ID> [--pretty]
bash
asc subscription-offer-codes list --subscription-id <SUBSCRIPTION_ID> [--pretty]

Create Offer Code

创建优惠码

bash
asc subscription-offer-codes create \
  --subscription-id <SUBSCRIPTION_ID> \
  --name "SUMMER2026" \
  --duration ONE_MONTH \
  --mode FREE_TRIAL \
  --periods 1 \
  --eligibility NEW \
  --eligibility LAPSED \
  --offer-eligibility STACKABLE
--eligibility
(repeatable):
NEW
,
LAPSED
,
WIN_BACK
,
PAID_SUBSCRIBER
--offer-eligibility
:
STACKABLE
,
INTRODUCTORY
,
SUBSCRIPTION_OFFER
--duration
: same values as introductory offers
--mode
:
FREE_TRIAL
,
PAY_AS_YOU_GO
,
PAY_UP_FRONT
bash
asc subscription-offer-codes create \
  --subscription-id <SUBSCRIPTION_ID> \
  --name "SUMMER2026" \
  --duration ONE_MONTH \
  --mode FREE_TRIAL \
  --periods 1 \
  --eligibility NEW \
  --eligibility LAPSED \
  --offer-eligibility STACKABLE
--eligibility
(可重复指定):
NEW
,
LAPSED
,
WIN_BACK
,
PAID_SUBSCRIBER
--offer-eligibility
STACKABLE
,
INTRODUCTORY
,
SUBSCRIPTION_OFFER
--duration
:与介绍性优惠的可选值相同
--mode
FREE_TRIAL
,
PAY_AS_YOU_GO
,
PAY_UP_FRONT

Update Offer Code (activate/deactivate)

更新优惠码(激活/停用)

bash
asc subscription-offer-codes update --offer-code-id <ID> --active false
bash
asc subscription-offer-codes update --offer-code-id <ID> --active false

Custom Codes

自定义码

Custom codes are specific redeemable strings (e.g. "SUMMER2026") tied to an offer code.
bash
undefined
自定义码是与优惠码绑定的可兑换特定字符串(例如"SUMMER2026")。
bash
undefined

List

列出自定义码

asc subscription-offer-code-custom-codes list --offer-code-id <ID>
asc subscription-offer-code-custom-codes list --offer-code-id <ID>

Create

创建自定义码

asc subscription-offer-code-custom-codes create
--offer-code-id <ID>
--custom-code "SUMMER2026"
--number-of-codes 1000
[--expiration-date 2026-12-31]
asc subscription-offer-code-custom-codes create
--offer-code-id <ID>
--custom-code "SUMMER2026"
--number-of-codes 1000
[--expiration-date 2026-12-31]

Deactivate

停用自定义码

asc subscription-offer-code-custom-codes update --custom-code-id <ID> --active false
undefined
asc subscription-offer-code-custom-codes update --custom-code-id <ID> --active false
undefined

One-Time Use Codes

一次性使用码

Generated code batches — Apple creates unique codes for distribution.
bash
undefined
由Apple生成的批量唯一兑换码,用于分发。
bash
undefined

List

列出一次性使用码

asc subscription-offer-code-one-time-codes list --offer-code-id <ID>
asc subscription-offer-code-one-time-codes list --offer-code-id <ID>

Create

创建一次性使用码

asc subscription-offer-code-one-time-codes create
--offer-code-id <ID>
--number-of-codes 5000
--expiration-date 2026-12-31
asc subscription-offer-code-one-time-codes create
--offer-code-id <ID>
--number-of-codes 5000
--expiration-date 2026-12-31

Deactivate

停用一次性使用码

asc subscription-offer-code-one-time-codes update --one-time-code-id <ID> --active false
undefined
asc subscription-offer-code-one-time-codes update --one-time-code-id <ID> --active false
undefined

CAEOAS Affordances

CAEOAS 便捷操作

Every subscription group response embeds ready-to-run follow-up commands:
SubscriptionGroup:
json
{
  "affordances": {
    "listSubscriptions":  "asc subscriptions list --group-id <ID>",
    "createSubscription": "asc subscriptions create --group-id <ID> --name <name> --product-id <id> --period ONE_MONTH"
  }
}
Subscription:
json
{
  "affordances": {
    "createIntroductoryOffer": "asc subscription-offers create --subscription-id <ID> --duration ONE_MONTH --mode FREE_TRIAL --periods 1",
    "createLocalization":      "asc subscription-localizations create --subscription-id <ID> --locale en-US --name <name>",
    "listIntroductoryOffers":  "asc subscription-offers list --subscription-id <ID>",
    "listLocalizations":       "asc subscription-localizations list --subscription-id <ID>",
    "listOfferCodes":          "asc subscription-offer-codes list --subscription-id <ID>"
  }
}
SubscriptionOfferCode:
json
{
  "affordances": {
    "listOfferCodes":   "asc subscription-offer-codes list --subscription-id <SUBSCRIPTION_ID>",
    "listCustomCodes":  "asc subscription-offer-code-custom-codes list --offer-code-id <ID>",
    "listOneTimeCodes": "asc subscription-offer-code-one-time-codes list --offer-code-id <ID>",
    "deactivate":       "asc subscription-offer-codes update --offer-code-id <ID> --active false"
  }
}
deactivate
only appears when
isActive == true
.
每个订阅组的响应结果中都嵌入了可直接执行的后续命令:
SubscriptionGroup:
json
{
  "affordances": {
    "listSubscriptions":  "asc subscriptions list --group-id <ID>",
    "createSubscription": "asc subscriptions create --group-id <ID> --name <name> --product-id <id> --period ONE_MONTH"
  }
}
Subscription:
json
{
  "affordances": {
    "createIntroductoryOffer": "asc subscription-offers create --subscription-id <ID> --duration ONE_MONTH --mode FREE_TRIAL --periods 1",
    "createLocalization":      "asc subscription-localizations create --subscription-id <ID> --locale en-US --name <name>",
    "listIntroductoryOffers":  "asc subscription-offers list --subscription-id <ID>",
    "listLocalizations":       "asc subscription-localizations list --subscription-id <ID>",
    "listOfferCodes":          "asc subscription-offer-codes list --subscription-id <ID>"
  }
}
SubscriptionOfferCode:
json
{
  "affordances": {
    "listOfferCodes":   "asc subscription-offer-codes list --subscription-id <SUBSCRIPTION_ID>",
    "listCustomCodes":  "asc subscription-offer-code-custom-codes list --offer-code-id <ID>",
    "listOneTimeCodes": "asc subscription-offer-code-one-time-codes list --offer-code-id <ID>",
    "deactivate":       "asc subscription-offer-codes update --offer-code-id <ID> --active false"
  }
}
仅当
isActive == true
时,才会显示
deactivate
命令。

Resolve App ID

获取App ID

See project-context.md — check
.asc/project.json
before asking the user or running
asc apps list
.
参考project-context.md —— 在询问用户或执行
asc apps list
命令前,先检查
.asc/project.json
文件。

Typical Workflow

典型工作流

bash
APP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')
bash
APP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')

If empty: ask user or run
asc apps list | jq -r '.data[0].id'

若为空:询问用户或执行
asc apps list | jq -r '.data[0].id'

1. Create a subscription group

1. 创建订阅组

GROUP_ID=$(asc subscription-groups create
--app-id "$APP_ID"
--reference-name "Premium Plans"
| jq -r '.data[0].id')
GROUP_ID=$(asc subscription-groups create
--app-id "$APP_ID"
--reference-name "Premium Plans"
| jq -r '.data[0].id')

2. Create subscription tiers

2. 创建订阅层级

MONTHLY_ID=$(asc subscriptions create
--group-id "$GROUP_ID"
--name "Monthly Premium"
--product-id "com.app.monthly"
--period ONE_MONTH
--group-level 1
| jq -r '.data[0].id')
ANNUAL_ID=$(asc subscriptions create
--group-id "$GROUP_ID"
--name "Annual Premium"
--product-id "com.app.annual"
--period ONE_YEAR
--family-sharable
--group-level 2
| jq -r '.data[0].id')
MONTHLY_ID=$(asc subscriptions create
--group-id "$GROUP_ID"
--name "Monthly Premium"
--product-id "com.app.monthly"
--period ONE_MONTH
--group-level 1
| jq -r '.data[0].id')
ANNUAL_ID=$(asc subscriptions create
--group-id "$GROUP_ID"
--name "Annual Premium"
--product-id "com.app.annual"
--period ONE_YEAR
--family-sharable
--group-level 2
| jq -r '.data[0].id')

3. Add localizations

3. 添加本地化设置

asc subscription-localizations create --subscription-id "$MONTHLY_ID" --locale en-US --name "Monthly Premium" --description "Full access, billed monthly" asc subscription-localizations create --subscription-id "$ANNUAL_ID" --locale en-US --name "Annual Premium" --description "Full access, billed annually — save 30%"
asc subscription-localizations create --subscription-id "$MONTHLY_ID" --locale en-US --name "Monthly Premium" --description "Full access, billed monthly" asc subscription-localizations create --subscription-id "$ANNUAL_ID" --locale en-US --name "Annual Premium" --description "Full access, billed annually — save 30%"

4. Create an offer code with custom codes

4. 创建带自定义码的优惠码

OC_ID=$(asc subscription-offer-codes create
--subscription-id "$MONTHLY_ID"
--name "SUMMER2026"
--duration ONE_MONTH
--mode FREE_TRIAL
--periods 1
--eligibility NEW
--eligibility LAPSED
--offer-eligibility STACKABLE
| jq -r '.data[0].id')
asc subscription-offer-code-custom-codes create
--offer-code-id "$OC_ID"
--custom-code "SUMMER2026"
--number-of-codes 1000
--expiration-date 2026-12-31
OC_ID=$(asc subscription-offer-codes create
--subscription-id "$MONTHLY_ID"
--name "SUMMER2026"
--duration ONE_MONTH
--mode FREE_TRIAL
--periods 1
--eligibility NEW
--eligibility LAPSED
--offer-eligibility STACKABLE
| jq -r '.data[0].id')
asc subscription-offer-code-custom-codes create
--offer-code-id "$OC_ID"
--custom-code "SUMMER2026"
--number-of-codes 1000
--expiration-date 2026-12-31

5. Or generate one-time use codes

5. 或生成一次性使用码

asc subscription-offer-code-one-time-codes create
--offer-code-id "$OC_ID"
--number-of-codes 5000
--expiration-date 2026-12-31
undefined
asc subscription-offer-code-one-time-codes create
--offer-code-id "$OC_ID"
--number-of-codes 5000
--expiration-date 2026-12-31
undefined

State Semantics

状态语义

SubscriptionState
exposes semantic booleans:
BooleanTrue when state is
isEditable
MISSING_METADATA
,
REJECTED
,
DEVELOPER_ACTION_NEEDED
isPendingReview
WAITING_FOR_REVIEW
,
IN_REVIEW
isApproved
/
isLive
APPROVED
SubscriptionCustomerEligibility
values:
NEW
,
LAPSED
,
WIN_BACK
,
PAID_SUBSCRIBER
SubscriptionOfferEligibility
values:
STACKABLE
,
INTRODUCTORY
,
SUBSCRIPTION_OFFER
Nil optional fields (
description
,
state
,
groupLevel
,
totalNumberOfCodes
) are omitted from JSON output.
SubscriptionState
包含以下语义化布尔值:
布尔值为True时对应的状态
isEditable
MISSING_METADATA
,
REJECTED
,
DEVELOPER_ACTION_NEEDED
isPendingReview
WAITING_FOR_REVIEW
,
IN_REVIEW
isApproved
/
isLive
APPROVED
SubscriptionCustomerEligibility
可选值:
NEW
,
LAPSED
,
WIN_BACK
,
PAID_SUBSCRIBER
SubscriptionOfferEligibility
可选值:
STACKABLE
,
INTRODUCTORY
,
SUBSCRIPTION_OFFER
JSON输出中会省略可选的空字段(如
description
,
state
,
groupLevel
,
totalNumberOfCodes
)。