flowdeck ship needs two things: an App Store Connect
account FlowDeck can authenticate as, and a repository that knows which app
record it belongs to. This page covers both.
One credential, and it is an API key
FlowDeck never asks for an Apple ID password. The only credential it stores is an App Store Connect API key you create yourself, kept in your login keychain. That is deliberate. An Apple ID gives away your entire Apple account; an API key is scoped to App Store Connect, revocable on its own, and documented, so it does not break when Apple changes something private. Create one in App Store Connect under Users and Access › Integrations, and download the.p8 file. Apple lets you download it once.
Connecting an account
The key is checked against Apple before anything is stored. A key that cannot
authenticate, or that lacks permission to read apps, is refused rather than
saved for you to discover later.
There is no
--team-id. An API key belongs to exactly one account, and that
account is exactly one team, so FlowDeck derives the Developer Team ID itself.More than one account
Credentials are keyed by issuer ID, so a machine can hold as many as you have..flowdeck/config.json. It is
never inferred: two accounts can share a team, and the cost of guessing wrong
is a build pushed to somebody else’s listing.
If several accounts are connected and the repository has not chosen one,
commands fail with shipAmbiguousAccount rather than picking for you.
Checking an account
isAdmin reports whether this key can create app records in App Store
Connect, which is an Admin-only action on the web. It is a Bool?: absent
means the check could not be made, not that you lack the permission.
Removing an account
Linking a project to an app
An account can reach many apps. Linking records which one this repository ships to, in a small git-tracked file so the whole team inherits it.--all-accounts tags each row
with its issuer, so you do not have to know which account holds which app
before you can pick one.
Where a project stands
currentVersion is the newest version in any state; liveVersion is the
newest one on sale. They are equal when nothing new is in flight, and
liveVersion is absent for a platform that has never shipped.
When the app record does not exist yet
Apple does not allow creating an app record through the API, for any key. It has to be done on the web.app init automates everything around that one
step:
