タイトル通りなのですが、TypespecというAPI仕様を記述する言語を用いて、nem / SymbolのWebAPI定義を書き直していました。
とりあえず先に成果物のリンクを貼っておきます。
これは、Typespecで書いた定義をOpenAPI形式にコンパイル(?)し、openapi-generate-htmlというツールでインタラクティブなWebUIとして出力したものを、Github Pagesへデプロイしたものです。
このサイトからAPIの実行もできますし、実行サンプルコードもコピペできます。
ただし、nemに関してはGithub Pagesがhttpsプロトコルなのに対して、NIS APIがhttpプロトコルのものしかないため、セキュリティエラーによって実行ができません。
現状ではローカルからなどプロトコルを揃えて実行してあげる必要があります。
まぁ、同じようなものはまだ正式公開ではないものの、公式のドキュメントでも提供はされているのですが、個人的にちょっと使いにくかったので…。
リポジトリ
Catapult REST API Typespec
NEM NIS API Typespec
Typespec
SymbolコアチームからもOpenAPI定義ファイルが提供されていますが、定義多く(特にSymbol)、一枚のファイルとなっているため、閲覧や修正するためにエディタで開くのがシンドいです。(5701 lines!)
OpenAPI定義もファイル分割する手段があるようですが、やはり根がyamlであることの由来するシンドみがあります。
Typespecはその名の通り型を定義でき、Typescriptのようにインポート・エクスポートを利用して、より堅牢に分割されたコードとして表現できる言語です。
OpenAPI3 to TypeSpec
書き始めるに際しては、流石に0から全部書き始めるとシンドいので、OpenAPI形式からTypeSpecコードへ変換を掛けました。
変換をかけたコードからスタートし、まずはコンパイルされた結果が、オリジナルのOpenAPI定義と一致(または許容できる範囲での差分)することを目標に、ソースコードを修正・分割していきました。
openapi-generate-html
コマンド一発でWebUI画面を生成してくれる、とても便利なツールです。
最終出力がhtmlファイル一枚になるというところが、github pagesへシンプルにデプロイできるので気に入っています。
ローカルへダウンロードしても開くことができます。
シンプル イズ ベスト!
当該サイトでは--ui=stoplightを指定していますが、他にも色々なUIに対応しているので、お好みで試してみると面白いと思います。
RapiDocとかもいいですよね。
SwaggerのUIはどうも野暮ったくて…
まとめ
リポジトリの内容は、一部が間違っていたり、移植ミスを修正してはforce pushしたりもするので、その点はご了承ください。
やっていることは車輪の再開発に過ぎず、自己満足的で、ブロックチェーン自体にはあまり貢献しませんが…。
ブラウザから気軽にAPIを叩けるツールが欲しかったので良ければ使ってみてください。
また、Typespecやopenapi-generate-htmlもよいツールなので、試してみてはいかがでしょうか。

