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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@suin/esa-openapi

v2.2.0

Published

esa.io APIのOpenAPI準拠の仕様書

Downloads

15

Readme

@suin/esa-openapi

esa.io API v1 を OpenAPI 規格に基づいて定義したものです。

OpenAPI 定義ファイルはesa-api.jsonになります。

使い方

Swagger Editor で見る

Swagger Editor は、ブラウザ上で OpenAPI を編集したり、API ドキュメントをプレビューが見れるエディタです。

Swagger Editor で esa API を読み込むには次の手順を行ってください:

  1. Swagger Editor を開く

  2. メニューの「File」→「Import URL」でダイアログを開き、次の URL を入力する:

    https://raw.githubusercontent.com/suin/esa-openapi/main/esa-api.json

エディタのプレビュー画面上では、認証情報を入力することで、実際の API にリクエストを送信することもできます。認証情報はプレビュー画面右上の「Authorize」を開き、「AccessTokenHeader」に本物の esa API アクセストークンを入力してください。(OAuth2 による認証方法はうまく動きません。)

ReDoc で見る

ReDoc は OpenAPI のファイルを読み込むだけで API ドキュメントを表示できる React ベースのウェブアプリケーションです。

OpenAPI Generator でクライアントを生成する

OpenAPI Generator は様々な言語の API クライアントを生成できるツールです。

OpenAPI Generator のインストール

OpenAPI Generator は次の複数の方法でインストールできます。

  • NPM
  • Homebrew
  • Docker
  • JAR

詳細は公式ドキュメントをご覧ください。

ここでは NPM でインストールした OpenAPI Generator を用いてクライアントを生成する方法を説明します。

TypeScript のクライアントを生成する

TypeScript のクライアントを生成するには次のコマンドを実行します:

npx @openapitools/openapi-generator-cli generate \
    -g typescript-axios \
    -i https://raw.githubusercontent.com/suin/esa-openapi/main/esa-api.json \
    -o client \
    --additional-properties=supportsES6=true,typescriptThreePlus=true,useSingleRequestParameter=true,withSeparateModelsAndApi=true,apiPackage=api,modelPackage=models

クライアントはclientディレクトリに生成されます。これを TypeScript で使うには次のようにします:

import { Configuration, EsaApi } from "./client";

(async () => {
  const esaApi = new EsaApi(
    new Configuration({ accessToken: process.env.ESA_API_TOKEN })
  );
  const { data } = await esaApi.getPosts({ teamName: "doc" });

  for (const post of data.posts) {
    console.log(post.name);
  }
})();

TypeScript は typescript-axios の他にも次のクライアントが生成できます:

  • typescript (experimental)
  • typescript-angular
  • typescript-angularjs-deprecated (deprecated)
  • typescript-aurelia
  • typescript-fetch
  • typescript-inversify
  • typescript-jquery
  • typescript-nestjs (experimental)
  • typescript-node
  • typescript-redux-query
  • typescript-rxjs

PHP のクライアントを生成する

Guzzle を用いた PHP クライアントライブラリが生成できます。

PHP のクライアントを生成するには次のコマンドを実行します:

npx @openapitools/openapi-generator-cli generate \
    -g php \
    -i https://raw.githubusercontent.com/suin/esa-openapi/main/esa-api.json \
    -o client \
    --additional-properties=invokerPackage='YourOrg\YourProject'

NPM でインストールして使う

esa-api.json は NPM パッケージとして配布しています。npm でインストールすると JavaScript 上で読み込めます。

インストール方法:

npm install @suin/esa-openapi

Node.js で読み込む方法:

const esaOpenApi = require("@suin/esa-openapi");

console.log(esaOpenApi);
//=> {
//   openapi: '3.0.0',
//   info: {
//     title: 'esa API v1',
//     description: 'チームのナレッジ共有サービス[esa.io](https://esa.io/)のAPI v1の仕様書',
//     version: '1.0.0',
//     termsOfService: 'https://docs.esa.io/posts/5',
//     'x-logo': {
//       url: 'https://img.esa.io/uploads/production/attachments/3/2018/11/13/2/fe8f24a1-a23d-4c96-951c-f6f4433d1399.png',
//       altText: 'esa'
//     }
//   },
// ...

開発に参加する

このプロジェクトの開発に参加する方法について説明します。

  • 変更等はプルリクエストを下さい。
  • esa-api.json は直接編集しないようにお願いします。

パッケージマネージャー

パッケージマネージャーは PNPM をお使い下さい。

このプロジェクトをクローンしたら次のコマンドでパッケージをインストールします:

pnpm install

本プロジェクトのアプローチ

esa API はそれなりの規模になるため、OpenAPI のファイルひとつとして管理するのが難しいです。そこで、このプロジェクトでは esa API を TypeScript で記述し、プログラムによって esa-api.json を生成するアプローチをとっています。

TypeScript ファイルの構成

esa API の記述は複数の TypeScript ファイルに分割しています。これらファイルの構造は主に次の通りになっています。

  • headers/: リクエストレスポンスヘッダに関する記述
  • parameters/: リクエストのパスやクエリーのパラメーター関する記述
  • paths/: パスに関する記述。このディレクトリ構成は URL と一致するようになっています。
  • schemas/: リクエストやレスポンスに含まれる JSON などのオブジェクトの記述
  • spec.ts: API 仕様の全体像を記述

esa-api.json の変更方法

esa-api.json を生成するには次のコマンドを実行してください:

pnpm generate:spec

esa-api.json のバリデーション

esa-api.json をバリデーションするには次のコマンドを実行してください:

pnpm validate:spec

※実行には Java8 が必要です。

esa-api.json に基づいて TypeScript クライアントを生成する

クライアントライブラリを生成するには次のコマンドを実行してください:

pnpm generate:client

※実行には Java8 が必要です。