npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

appstore-connect-sdk

v1.1.0

Published

An App Store Connect API client for Node.js

Downloads

3,401

Readme

appstore-connect-sdk @latest

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 | 简体中文

Kickstart information on the API

Included in this SDK

The appstore-connect-sdk module includes the following features:

  • [x] Configuration with API Key and JWT Logic to sign requests
  • [x] Support for custom network libraries for making requests, such as fetch/node-fetch/axios...
  • [x] Support for all requests due to OpenAPI generated requests and entities
  • [x] Compatibility with both Node.js and Deno environments

Examples

Installation

npm install appstore-connect-sdk

Usage

1. Import appstore-connect-sdk

import AppStoreConnectAPI from "appstore-connect-sdk";

2. Create your API Configuration

Go to App Store 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 issuer ID and the private key ID to create your configuration:

const client = 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:

3. Create an API and perform a request

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 api = await client.create(AppsApi);
const res = await api.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 client = new AppStoreConnectAPI({
  issuerId: "<YOUR ISSUER ID>",
  privateKeyId: "<YOUR PRIVATE KEY ID>",
  privateKey: "<YOUR PRIVATE KEY>",
});

const api = await client.create(AppsApi);
const res = await api.appsGetCollection();
console.log(res);

Custom network libraries

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
});

Overriding the base URL

For integration testing purposes, you can override the base path of the App Store Connect API by setting the basePath option in the AppStoreConnectAPI constructor. For example, you can use this to point to a local mock server. This allows you to test the behavior of your application in a more controlled environment without making requests to the real API.

import AppStoreConnectAPI from "appstore-connect-sdk";

new AppStoreConnectAPI({
  // ...
  basePath: "http://localhost:3000", // All network requests are made to http://localhost:3000
});

Updating OpenAPI generated code

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.

Deno Compatibility

The appstore-connect-sdk module is fully compatible with Deno, 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.

License

appstore-connect-sdk is available under the MIT license, and uses source code from open source projects. See the LICENSE file for more information.

Author

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.