公開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自身のアプリやウェブサイトのためのものです。キーなしで応答するものもありますが、他の呼び出し元向けには文書化されておらず、いつでも変更、移動、制限されることがあります。それらを前提に開発しないでください。