本文へスキップ
ecdsa.com

変更履歴

公開 API の変更点を新しい順に掲載しています。API のバージョンはパスで示されます。互換性のない変更を行う場合は /api/v2 として提供します。v1 のレスポンスにフィールドやコードが追加されることはありますが、既存のものが削除・変更されることはありません。

  1. API キーの導入

    未リリース

    マージ済みですが、まだリリースされていません。これらの変更は、ecdsa.com のアカウント機能とともに API キーの提供が始まるときにリリースされます。キーなしの呼び出しは、現在とまったく同じままです。

    • 変更

      形式は正しいものの、不明、失効済み、または期限切れのキーは、匿名として処理されるのではなく、401 unauthorized と WWW-Authenticate チャレンジで拒否されます。

      コード:unauthorized

      ヘッダー:WWW-Authenticate

    • 追加

      403 forbidden_scope:キーは有効ですが、操作に必要なスコープがありません。不足しているスコープはメッセージに示されます。呼び出しは、レート制限やクォータを消費する前に拒否されます。

      コード:forbidden_scope

    • 追加

      429 quota_exceeded:キーのアカウントの日次または月次のクォータを使い切りました。Retry-After はクォータがリセットされるまでの時間を示します。SDK がこのエラーを再試行することはありません。

      コード:quota_exceeded

    • 追加

      キーを使った呼び出しへのレスポンスには、常に、最も早く上限に達するクォータの情報が含まれます。これらのヘッダーはブラウザーからも読み取れます。

      ヘッダー:X-Quota-LimitX-Quota-RemainingX-Quota-Reset

    • 追加

      503 service_unavailable:現在キーを検証できません。キーを付けた呼び出しが匿名として処理されることはありません。少し待ってから再試行してください。

      コード:service_unavailable

    • 変更

      キーを使った呼び出しには、IP ごとではなくキーごとの制限が適用されます。無料プランは毎分 120 回、Pro プランは毎分 600 回です。テスト用キーには常に無料プランが適用されます。

      コード:rate_limited

    • 変更

      API インデックスの auth フィールドは、「no API keys」ではなく、キーが任意であること、キーで何が変わるか、どの操作にキーが必要かを示すようになりました。

      操作:GET /v1

    • 追加

      webhook:/api/v1/webhooks はキーのアカウントのエンドポイントを一覧表示(GET)・作成(POST)し、/api/v1/webhooks/delete はエンドポイントを削除し、/api/v1/webhooks/test はテストイベントを送信します。これらには webhooks スコープを持つキーが必要で、REST でのみ提供されます。MCP ツールや SDK では提供されません。

      操作:GET /v1/webhooksPOST /v1/webhooksPOST /v1/webhooks/deletePOST /v1/webhooks/test

    • 追加

      配信は ECDSA P-256 で署名されます。ECDSA-Signature にはタイムスタンプ、鍵 ID、署名が含まれ、公開鍵は /.well-known/ecdsa-webhook-keys.json の JWKS で公開されます。ローテーション中は 2 つの鍵 ID が併存します。どの SDK も verifyWebhook() で配信を検証します。

    • 追加

      webhook 用の新しいコード:webhook_url_refused(400)、webhook_limit_reached(403)、webhook_not_found(404)、webhooks_unavailable(503)。

      コード:webhook_url_refusedwebhook_limit_reachedwebhook_not_foundwebhooks_unavailable

  2. v1.1.0

    2026年10月22日リリース

    API のコアを宣言的な操作に基づいて再構築し、ドメインのスキャンはチェック対象のホストごとに枠を共有するようになりました。既存のクライアントにとっては追加のみの変更です。v1.0 のすべてのリクエストに対し、これまでと同じステータスと同じボディに新しいフィールドを加えたレスポンスが返されます。これらの変更の大半は 2026/10/20 から稼働しています。API インデックスが返すバージョンは、このリリース以降 1.1.0 です。

    • 追加

      ドメインの実際のスキャンは、全クライアントで共有する枠を消費します。1 つのホストにつき 10 分あたり最大 6 回、全スキャンの合計で毎分最大 300 回です。枠を超えたスキャンには、429 rate_limited と Retry-After が返されます。1 時間のキャッシュから返されるレスポンスは枠を消費しません。

      コード:rate_limited

      操作:GET /v1/health/{domain}

    • 追加

      エラーボディに、requestId(問題を報告するときに添えてください)と、エラーコードへのリンクである docs が追加されました。code と message は変わりません。

      フィールド:error.requestIderror.docs

    • 追加

      すべてのレスポンスに X-Request-Id が含まれます。リクエストを照合するために独自の値(英字、数字、ドット、アンダースコア、コロン、ハイフンで 1〜128 文字)を送信すると、その値がそのまま返されます。

      ヘッダー:X-Request-Id

    • 変更

      不明なパスには 404 not_found、誤ったメソッドには Allow ヘッダー付きの 405 method_not_allowed が返されます。どちらも HTML ページではなく、CORS に対応した JSON エンベロープです。

      コード:not_foundmethod_not_allowed

      ヘッダー:Allow

    • 修正

      ネストが 64 階層を超える JSON(文字列フィールド内の JSON も含む)には、JSON エンベロープで 400 invalid_json が返されます。以前は JSON ではない 500 エラーになっていました。

      コード:invalid_json

    • 追加

      ドメインのヘルスチェックのレスポンスに certificate が追加されました。リーフ証明書の有効期限、残り日数、鍵のアルゴリズムと曲線を示します。

      フィールド:certificate

      操作:GET /v1/health/{domain}

    • 追加

      形式が正しくない Authorization ヘッダーや X-API-Key ヘッダーは、無視されずに 401 unauthorized で拒否されます。これにより、認証するつもりだったクライアントが入力ミスに気付けます。形式が正しいキーは、API キーの提供開始までは引き続き匿名として処理されます。

      コード:unauthorized

    • 追加

      制限時間の 10 秒以内に完了しない操作は、504 timeout を返します。

      コード:timeout

    • 変更

      ブラウザーはクロスオリジンで Authorization、X-API-Key、X-Request-Id、Idempotency-Key を送信でき、X-Request-Id を読み取れます。

    • 変更

      OpenAPI ドキュメントは API 自体のスキーマから生成されます。各操作には、ステータスごとのエラーコード、例、API キーに必要なスコープが記載されています。

      操作:GET /v1/openapi.json

  3. v1.0.0

    2026年8月20日リリース

    無料の署名 API を一般公開しました。