Game Center with asc
Manage Game Center detail, achievements, and leaderboards through the App Store Connect API.
Authentication
asc auth login --key-id <id> --issuer-id <id> --private-key-path ~/.asc/AuthKey.p8How to Navigate (CAEOAS Affordances)
Every JSON response contains an "affordances" field with ready-to-run commands — IDs already filled in. Start from the Game Center detail and navigate to achievements and leaderboards.
{
"id": "gc-abc123",
"appId": "6443417124",
"isArcadeEnabled": false,
"affordances": {
"getDetail": "asc game-center detail get --app-id 6443417124",
"listAchievements": "asc game-center achievements list --detail-id gc-abc123",
"listLeaderboards": "asc game-center leaderboards list --detail-id gc-abc123"
}
}Typical Workflow
Set up Game Center for an app
# 1. Get the Game Center detail (find the detail ID)
asc game-center detail get --app-id 6443417124 --pretty
# 2. List existing achievements
asc game-center achievements list --detail-id gc-abc123 --pretty
# 3. Create a new achievement
asc game-center achievements create \
--detail-id gc-abc123 \
--reference-name "First Steps" \
--vendor-identifier first_steps \
--points 10 \
--pretty
# 4. Create a leaderboard
asc game-center leaderboards create \
--detail-id gc-abc123 \
--reference-name "All Time High" \
--vendor-identifier all_time_high \
--score-sort-type DESC \
--submission-type BEST_SCORE \
--prettyView all Game Center content at a glance
DETAIL_ID=$(asc game-center detail get --app-id APP_ID | jq -r '.data[0].id')
asc game-center achievements list --detail-id "$DETAIL_ID" --output table
asc game-center leaderboards list --detail-id "$DETAIL_ID" --output tableClean up — delete an achievement
# Copy the delete affordance from the achievement and run it
asc game-center achievements delete --achievement-id ach-abc123Commands
asc game-center detail get
Get Game Center configuration for an app.
| Flag | Required | Description | |
|---|---|---|---|
--app-id | yes | App Store Connect app ID | |
| `--output table\ | json` | no | Output format (default: json) |
--pretty | no | Pretty-print JSON |
asc game-center detail get --app-id 6443417124 --pretty
asc game-center detail get --app-id 6443417124 --output tableasc game-center achievements list
List all achievements for a Game Center detail.
| Flag | Required | Description | |
|---|---|---|---|
--detail-id | yes | Game Center detail ID | |
| `--output table\ | json` | no | Output format |
--pretty | no | Pretty-print JSON |
asc game-center achievements list --detail-id gc-abc123 --pretty
asc game-center achievements list --detail-id gc-abc123 --output tableasc game-center achievements create
Create a new achievement.
| Flag | Required | Description |
|---|---|---|
--detail-id | yes | Game Center detail ID |
--reference-name | yes | Internal reference name |
--vendor-identifier | yes | Unique identifier (e.g. first_steps) |
--points | yes | Point value for the achievement |
--show-before-earned | no | Show achievement before earned (flag) |
--repeatable | no | Achievement can be earned multiple times (flag) |
--pretty | no | Pretty-print JSON |
asc game-center achievements create \
--detail-id gc-abc123 \
--reference-name "Speed Runner" \
--vendor-identifier speed_runner \
--points 50 \
--repeatableasc game-center achievements delete
Delete an achievement.
| Flag | Required | Description |
|---|---|---|
--achievement-id | yes | Achievement ID to delete |
asc game-center achievements delete --achievement-id ach-abc123asc game-center leaderboards list
List all leaderboards for a Game Center detail.
| Flag | Required | Description | |
|---|---|---|---|
--detail-id | yes | Game Center detail ID | |
| `--output table\ | json` | no | Output format |
--pretty | no | Pretty-print JSON |
asc game-center leaderboards list --detail-id gc-abc123 --output tableasc game-center leaderboards create
Create a new leaderboard.
| Flag | Required | Description |
|---|---|---|
--detail-id | yes | Game Center detail ID |
--reference-name | yes | Internal reference name |
--vendor-identifier | yes | Unique identifier (e.g. all_time_high) |
--score-sort-type | yes | ASC or DESC |
--submission-type | yes | BEST_SCORE or MOST_RECENT_SCORE |
--pretty | no | Pretty-print JSON |
asc game-center leaderboards create \
--detail-id gc-abc123 \
--reference-name "Speed Run" \
--vendor-identifier speed_run \
--score-sort-type ASC \
--submission-type MOST_RECENT_SCOREasc game-center leaderboards delete
Delete a leaderboard.
| Flag | Required | Description |
|---|---|---|
--leaderboard-id | yes | Leaderboard ID to delete |
asc game-center leaderboards delete --leaderboard-id lb-abc123Domain Models
GameCenterDetail — Game Center configuration for an app
id— Game Center detail IDappId— parent App ID (injected from request, not returned by API)isArcadeEnabled— whether Apple Arcade is enabled- Affordances:
getDetail,listAchievements,listLeaderboards
GameCenterAchievement — A single Game Center achievement
id— achievement IDgameCenterDetailId— parent detail ID (injected)referenceName— internal namevendorIdentifier— unique bundle-style identifierpoints— point valueisShowBeforeEarned— visible before earnedisRepeatable— can be earned multiple timesisArchived— whether archived- Affordances:
listAchievements,delete
GameCenterLeaderboard — A single Game Center leaderboard
id— leaderboard IDgameCenterDetailId— parent detail ID (injected)referenceName— internal namevendorIdentifier— unique identifierscoreSortType—ASCorDESCsubmissionType—BEST_SCOREorMOST_RECENT_SCOREisArchived— whether archived- Affordances:
listLeaderboards,delete
Full Command Reference
See commands.md for all flags and examples.