The appstore-connect-sdk
is a Node.js module written in TypeScript that provides a convenient way for developers to interact with the App Store Connect API. The module is built on top of the OpenAPI Generator tool and provides support for all APIs based on OpenAPI specification.
English | 简体中文
- Automate your workflow with the App Store Connect API
- App Store Connect API Official Documentation
- WWDC 2018 303 - Automating App Store Connect (Video)
The appstore-connect-sdk
module includes the following features:
- Configuration with API Key and JWT Logic to sign requests
- Support for custom network libraries for making requests, such as fetch/node-fetch/axios...
- Support for all requests due to OpenAPI generated requests and entities
- Compatibility with both Node.js and Deno environments (please note that certain features of the appstore-connect-sdk module that rely on the Node crypto module may not work as expected in Deno, as described in the "Deno Compatibility" section above)
- [] ESM Support
npm install appstore-connect-sdk
import AppStoreConnectAPI from "appstore-connect-sdk";
Go to App Sotre Connect -> Users and Access -> Keys and create your own key. This is also the page to find your private key ID
and the issuer ID
.
After downloading your private key, open the .p8
file containing the private key in a text editor. It should look like this:
-----BEGIN PRIVATE KEY-----
AIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgKEn1VBakCdHIEcdS
aBWr/9laASzaAbF2LP7wTYjHK52gCgYIKoZIzj0DAQehRANCAAQ/jf2sxRvXEhjn
srw8kJcHvO0dQ1KmUlxZvATsFsjJbdQ1yAENAWItUoeTV0rhdajcdOQxKl1OPse0
nNdXXbA4
-----END PRIVATE KEY-----
Now use this Private Key
together with the isuer ID
and the private key ID
to create your configuration:
const appStoreConnect = new AppStoreConnectAPI({
issuerId: "<YOUR ISSUER ID>",
privateKeyId: "<YOUR PRIVATE KEY ID>",
privateKey: "<YOUR PRIVATE KEY>",
});
For more information on how JWT works with the App Store Connect API, check out Apple's authentication guides:
You can find all available APIs in src/openapi/apis, these classes are generated according to App Store Connect API - OpenAPI specification, If you encounter any problems, please open an issue.
const res = await client.call(AppsApi).appsGetCollection();
console.log(res);
Here's the complete code example:
import AppStoreConnectAPI from "appstore-connect-sdk";
import {
AppsApi,
AppEventLocalizationsApi,
} from "appstore-connect-sdk/dist/openapi/apis";
const appStoreConnect = new AppStoreConnectAPI({
issuerId: "<YOUR ISSUER ID>",
privateKeyId: "<YOUR PRIVATE KEY ID>",
privateKey: "<YOUR PRIVATE KEY>",
});
const res = await client.call(AppsApi).appsGetCollection();
console.log(res);
By default, AppStoreConnectAPI uses its built-in fetch
function for HTTP requests. Note that this function requires Node.js version 18.0.0 or higher.
However, you can also configure any network library that adheres to the Fetch API standard specification by setting the fetchApi
option in the AppStoreConnectAPI constructor.
import AppStoreConnectAPI from "appstore-connect-sdk";
import fetch from "node-fetch";
new AppStoreConnectAPI({
// ...
fetchApi: fetch as unknown as FetchAPI, // All network requests are made via node-fetch
});
To update the OpenAPI-generated code, run the following command:
$ sh gen-openapi.sh
This will generate Typescript code through OpenAPI Generator based on the OpenAPI specification file officially released by Apple.
The appstore-connect-sdk module is mostly compatible with Deno, but there are some limitations to its usage in a Deno environment. Currently, Deno does not provide full support for the Node crypto module, which means that certain features of the appstore-connect-sdk module that rely on this module may not work as expected in Deno.
One specific limitation is that the jsonwebtoken
package, which is used by the appstore-connect-sdk module to generate JSON Web Tokens (JWTs), is not fully compatible with Deno. As a result, it is not possible to use jsonwebtoken
in a Deno environment to generate JWTs for use with the App Store Connect API.
To work around this limitation, you can manually generate JWTs using a library that is fully compatible with Deno, such as djwt
. You can then pass the manually generated JWT to the appstore-connect-sdk
module to authenticate with the App Store Connect API.
An example of using the appstore-connect-sdk
module in a Deno environment can be found in the deno_example.
We are committed to ensuring that the appstore-connect-sdk
module remains fully compatible with both Node.js and Deno, and we will continue to work on improving its compatibility with Deno as the Deno runtime evolves.
appstore-connect-sdk is available under the MIT license, and uses source code from open source projects. See the LICENSE file for more information.
This project was originally created by isaced but has had many great contributors. We're open to contributions of any kind to make this project even better.