Nov 5, 2018

App Store Connect API v1

Last week, three months later than promised, Apple modestly released an official API for App Store Connect. In the near future, approved iOS and macOS developers will be able to automate tasks related to TestFlight, User Access, Provisioning and Sales Data, all without visiting the online portal. This is important news which of course has great impact on NativeConnect development. So let’s have a look at what they’ve added.

Some developer notes

First of all, we want to say that the official documentation is great. For example, it clearly explains how to authorize requests using JSON Web Tokens and contains a detailed reference with all available REST resources. In particular, the section on error handling precisely describes possible failures from HTTP response codes to dissecting the request URLs.

Second, Apple implemented a quite limited number of resources and methods in this first version of API. You cannot create a new version of the app, submit screenshots for the App Store or download User Reviews. The service is mostly read-only, and Apple suggests to keep using the online portal, Xcode, and Transporter. By the way, the latter can use API Keys generated for App Store Connect automation.

Third, the most important JSON objects are often missing fields necessary for release management. For instance, the list of App attributes does not include neither subtitle nor categories, and the Version dictionary comes with just two properties, the number and the supported operating system.

So development-wise this initial version of API is very promising but quite restricted.

More interesting tidbits

Next, there is a very controversial, even surprising feature: the API access is moderated. When you first visit the Keys tab of Users and Access, you cannot create new credentials instantly because Apple’s approval is necessary to make requests to their REST service:

Permission is required to access the App Store Connect API. You can request access on behalf of your organization.

What’s more frustrating, API will be first rolled out for organizations, and only after that for individual developers:

As requests are reviewed, organization will be given first access followed by individuals.

And there is no ETA of course, so the chances are that we need to wait three more months to finally test this API, but hopefully it will be less.

As usual, we are kindly asked to request new features and provide feedback via Radar and Developer Forums.

The future of our product

With all planned features and the initial lack of API Keys for most of our customers, we have no other choice than to take the ‘fastlane’ path. We’ll be politely using the Private API and looking forward to the next official API iteration from Apple, hopefully during the WWDC’19.

As a result, first, we will definitely have to spend more development resources on reverse-engineering. Also, second, the chance of distributing NativeConnect via the Mac App Store is close to Zero now. On the bright side, Apple has opened the API for TestFlight and Provisioning, which should bring some amazing new features.

We’d like to underline that the announced rules and limited official API will not affect the promised feature set. Of course we hoped for the best when Apple announced the new API during the WWDC’18, but another option aka ‘Plan B’ is something we kept in mind from the very beginning. Most professional tools for macOS are having a hard time recently, so no surprises here.

The monthly status update

Wow, one month has already passed after our public announcement. Like in October, we are actively developing the NativeConnect Mac app, and we’re still keen to publish the first private beta later this year.

The Team Dashboard, a web companion to the desktop client where you manage Seats, is a smaller project. But it is also growing into a nice piece of software, and we cannot wait to release it for public use.

Finally, we have much more people in the waiting list then we had hoped for. Thanks a lot for signing up and for all your feedback. Stay tuned!