本文へスキップ
Anon Wallet

公開API

Anonは少数の公開HTTP APIを提供しています。いずれもhttps://api.anon.inc上の読み取り専用JSONエンドポイントで、ウォレット、ダッシュボード、ステータスページ、スクリプトなど、誰でも呼び出せます。APIキーもアカウントも不要で、どのウェブサイト上のブラウザからでも読み取れます。

ベータ版: このページのAPIはすべてベータ版です。フィールド、値、レスポンスの形は予告なく変更されることがあります。未知のフィールドや値は無視するようにクライアントを作り、各ページのベータ版についての説明と変更履歴を確認してください。

API一覧

API エンドポイント 返す内容 キャッシュ スキーマ
RAILGUN稼働状況 GET /api/v1/railgun/liveness Anonが依存するRailgunサービスが、今この時点で応答していて遅れていないかを、チェーンごとに返します。 ブラウザは15秒、共有キャッシュは30秒 JSON Schema
RAILGUN稼働状況履歴 GET /api/v1/railgun/liveness/history 同じレポートの直近14日分を5分バケットで返し、24時間・7日・14日の稼働率を付けます。 ブラウザは60秒、共有キャッシュは120秒 JSON Schema

今の状態を判断するにはライブエンドポイントを、グラフやステータスページには履歴を使ってください。どちらもAnon独自のモニターから見た状況です。Railgunの公式ステータスではなく、「安全に取引できる」ことを示すシグナルでもありません。

curl -i https://api.anon.inc/api/v1/railgun/liveness
curl -i https://api.anon.inc/api/v1/railgun/liveness/history

すべての公開APIに共通すること

プロパティ 値
ベースURL https://api.anon.inc
認証 なし
メソッド GETとHEAD。OPTIONSはCORSのプリフライトに応答します。それ以外のメソッドは405です。
パラメーター なし。クエリ文字列はすべて無視されます。
形式 JSON(application/json; charset=utf-8)、schemaVersionフィールド付き
ステータス ベータ版。予告期間もSLAもありません
  • CORS。 すべての応答にAccess-Control-Allow-Origin: *とAccess-Control-Expose-Headers: ETagが付き、Access-Control-Allow-Credentialsは決して付きません。通常のfetchではプリフライトは不要です。
  • キャッシュ。 すべての200にCache-ControlとETagが付きます。ETagをIf-None-Matchで送り返すと、変更のない応答は本文のない304になります。CDNはOriginリクエストヘッダーの値ごとに別々のコピーを保持します。
  • エラー。 処理はHTTPステータスコードで分岐させ、メッセージの文言には頼らないでください。API自体のエラーは{"error": "<message>"}で、Cache-Control: no-storeが付きます。503は、データが今は利用できないことを意味します。バックオフしながら再試行してください。
  • レート制限。 1つのIPから1分あたり約120件を超えるリクエストがあると、CDNは約60秒間429(Cloudflareエラー1015)を返します。キャッシュヒットも数えられます。ブラウザでは、この429にCORSヘッダーがないため、fetchはネットワークエラーとして失敗します。
  • JSON Schemaは緩やかに定義されています。今日のレスポンスを説明するもので、約束ではありません。

公正な利用

  • Cache-Controlを守り、ETagを使って、変更のない応答を304で済ませてください。
  • タイマーではなく、データを必要とする画面をユーザーが開いたときに取得してください。
  • ポーリングするサーバーは、my-wallet/1.4 (+https://example.com/contact)のような説明的なUser-Agentを送ってください。
  • 多くのユーザーに提供する場合は、自分のサーバーで取得してそこでキャッシュしてください。
  • 429と5xxではバックオフし、最後の正常な応答を表示し続けてください。

api.anon.inc上のその他のルート

公開APIは、このページに載っているエンドポイントだけです。api.anon.inc上のその他のルートは、Anon自身のアプリやウェブサイトのためのものです。キーなしで応答するものもありますが、他の呼び出し元向けには文書化されておらず、いつでも変更、移動、制限されることがあります。それらを前提に開発しないでください。