Use setup_app.sh with app_config.json to script bundle registration, metadata updates, pricing, subscriptions, privacy, and review details through the asc CLI.
setup_app.shis the orchestrator: it readsapp_config.json, creates or updates an app, and applies metadata, pricing, availability, subscriptions, privacy, and review info.app_config.jsonis the canonical example configuration; keep it in sync with script capabilities.
ascinstalled and authenticated (asc auth login --key-id <KEY_ID> --issuer-id <ISSUER_ID> --private-key /path/to/AuthKey_XXXX.p8).jqfor parsing the JSON config.- A registered App Store Connect API key (https://appstoreconnect.apple.com/access/integrations/api) with Admin permissions.
- Bash or another POSIX shell that honors
set -euo pipefail.
- Copy and edit
app_config.jsonwith your app metadata, pricing, subscriptions, privacy, and review data. - Validate inputs:
bash -n setup_app.shandjq . app_config.json >/dev/null. - Run
./setup_app.sh app_config.jsonto create a new app, or./setup_app.sh --update app_config.jsonto update an existing one. - In create mode, app creation runs interactively and prompts for Apple ID + 2FA.
- For App Privacy, provide
privacy.apple_id(and optionallyprivacy.two_factor_code) if no cached web auth session exists.
- Keep config keys in
snake_case. - Keep helper-driven script values centralized and quoted in
setup_app.sh. - Include at least one complete example for each new config field in
app_config.json. - Pricing and subscription availability can be driven by explicit territory lists or by auto-fetching all territories with
*.availability.include_all(defaults totrue).
bash -n setup_app.shjq . app_config.json >/dev/null- Optionally run
shellcheck setup_app.sh - Test against a non-production bundle before production metadata changes.
- Upload screenshots (
asc screenshots upload). - Upload the build via Xcode or Transporter.
- Submit for review (
asc submit) when metadata and build are ready.
- Keep helper functions short and self-explanatory (
log,warn,cfg, etc.). - Prefer quoting variable expansions.
- Document schema changes by updating
app_config.json. - Keep one logical change per commit with a clear commit message.