API リファレンス

testingapis.com は HTTP クライアントをテストするための無料の API です。53 グループに 360 個のエンドポイントがあります。商品、書籍、国といったリアルなリソースに加え、ステータスコード、リダイレクト、Cookie、キャッシュ、認証方式、ファイル形式、ストリーミング、障害注入のためのエンドポイントもあります。 Echo、HTTP メソッド、ステータスコード、products・posts・todos のリソースはアカウント不要です。それ以外は無料アカウントが必要です。

ベース URL
https://api.testingapis.com
クイックスタート
fetch('https://api.testingapis.com/api/Products?limit=3')
  .then(res => res.json())
  .then(data => console.log(data))

ディスカバリー

内容場所
OpenAPI 3.0 ドキュメントhttps://api.testingapis.com/openapi/v1.jsonサインインして表示
Swagger UIhttps://api.testingapis.com/swagger/index.htmlサインインして表示
ライブのルートカタログGET https://api.testingapis.com/apiサインインして表示
ヘルスチェック
GET https://api.testingapis.com/api/healthGET https://api.testingapis.com/api/health/liveGET https://api.testingapis.com/api/health/ready
GraphQL
WebSockets
wss://api.testingapis.com/ws/echowss://api.testingapis.com/ws/ticker

認証

認証の注記がないエンドポイントは公開されています。認証をテストするエンドポイントは、下の固定のテスト用資格情報を受け付けます。これらは秘密ではありません。

方式送り方テスト用の値使うエンドポイント
HTTP BasicAuthorization: Basic base64(user:pass)apibee / password123 · Admin / Admin@1234(旧 API)/api/auth/basic*, /api/AuthTest/secure-data
Bearer (static)Authorization: Bearer <token>apibee-token-123 · admin-token · user-token · readonly-token/api/auth/bearer, /api/auth/roles/*
JWTAuthorization: Bearer <jwt>POST /api/auth/jwt/login に admin / admin123 または user / user123 · POST /api/User/Login に Michael / Thompson/api/auth/jwt/me, /api/auth/jwt/admin, /api/Admin/authorize
API keyX-API-Key ヘッダー、?api_key=、または api_key Cookieapibee-key-123/api/auth/api-key/*
OAuth 2.0Authorization: Bearer <access_token>クライアント apibee-client / apibee-secret と apibee-public(PKCE) · ユーザー apibee / password123、jane / jane123/api/auth/oauth/protected, /userinfo
OAuth 1.0aAuthorization: OAuth oauth_consumer_key="…", oauth_signature="…", …コンシューマー apibee-consumer-key / apibee-consumer-secret · トークン apibee-access-token / apibee-token-secret(期限なし) · HMAC-SHA1、HMAC-SHA256、HMAC-SHA512 または PLAINTEXT/api/auth/oauth1, /api/auth/oauth1/*
DigestRFC 7616 のチャレンジとレスポンスapibee / password123/api/auth/digest
HMAC 署名X-Timestamp と X-Signature ヘッダーシークレット apibee-hmac-secret/api/auth/hmac
セッション CookieCookie apibee_sessionPOST /api/cookies/login に test / test123 または admin / admin123/api/cookies/me
CSRFXSRF-TOKEN Cookie と X-CSRF-Token ヘッダーGET /api/auth/csrf/token で得たトークン/api/auth/csrf/submit

401 は資格情報がないか無効であること、403 は有効でも許可されていないことを表します。たとえば /api/auth/roles/admin に対する user-token です。

例では、実行ごとに変わる値に次のプレースホルダーを使います。

プレースホルダー取得方法
{{userJwt}} / {{adminJwt}}user / user123 または admin / admin123 で POST /api/auth/jwt/login したときの accessToken。
{{refreshToken}}POST /api/auth/jwt/login で得た refreshToken。
{{legacyJwt}}Michael / Thompson で POST /api/User/Login したときの token(ロール Admin)。
{{oauthAccessToken}}POST /api/auth/oauth/token で得た access_token。
{{oauth1RequestToken}} / {{oauth1RequestSecret}} / {{oauth1Verifier}}oauth_callback=oob を付けた POST /api/auth/oauth1/request_token で得た oauth_token と oauth_token_secret、続いて GET /api/auth/oauth1/authorize で得た oauth_verifier。
{{csrfToken}}GET /api/auth/csrf/token で得た token。同じ値が XSRF-TOKEN Cookie にも設定されます。
{{sessionId}}POST /api/cookies/login(test / test123)が設定する apibee_session Cookie。
{{unixTimestamp}} / {{hmacSignature}}現在の Unix 時刻(秒)と、"{timestamp}.{raw body}" をキー apibee-hmac-secret で計算した HMAC-SHA256 の 16 進数。
{{uuid}}Idempotency-Key として使う新しい UUID(何でもかまいません)。

サインインして詳細を見る

認証エンドポイントのパラメータ、リクエストとレスポンスの例、ライブの Try it パネルは、サインインしたメンバー向けです。アカウントは無料で、数秒で作成できます。

遅延とシミュレートしたエラー

どのエンドポイントでも 2 つのクエリパラメータが使えます。

パラメータ効果例
delayN 秒待ってから応答します。最大 10。/api/Products?delay=2
error本来のレスポンスの代わりに、シミュレートしたエラーを返します。400、401、403、404、408、429、500、502、503 のいずれか。X-Simulated: true ヘッダーが付きます。/api/Products?error=503

?delay=2&error=503 のように組み合わせると、リクエストは待ってから失敗します。シミュレートしたエラーは次のようになります。

シミュレートしたエラー
{
  "status": 503,
  "error": "Service Unavailable",
  "message": "Simulated error. Use ?error={code} to test different status codes.",
  "simulated": true
}

絞り込み、並べ替え、ページネーション

GET /api/Products など、リソースの一覧を返すエンドポイントはすべて次のクエリパラメータを受け付けます。

パラメータ意味例
limitページサイズ(1〜100)。指定しないと全件を返します。?limit=10
page1 から始まるページ番号。limit が必要です。?limit=10&page=2
offsetN 件を飛ばします。page の代わりに使います。?limit=10&offset=20
sort, order任意のフィールドで並べ替えます。order は asc(既定)か desc。?sort=price&order=desc
qtitle、name、body、description、text フィールドを大文字小文字を区別せずに検索します。?q=keyboard
任意のフィールドそのプロパティに対する、大文字小文字を区別しない完全一致の絞り込み。?category=books&inStock=true

一覧はプレーンな JSON 配列を返します。件数は X-Total-Count、X-Page、X-Per-Page、X-Total-Pages ヘッダーにあります。カーソル、Link ヘッダー、キーセット、HAL によるページネーションはページネーションで紹介しています。

レスポンスとエラー

状況ステータスボディ
1 件取得200そのレコード
一覧の取得200レコードの配列と、ページネーションのヘッダー
作成201{ message, data }
一括作成201{ message, data: [ … ] }
置き換え・更新200{ message, data }
部分更新(PATCH)200{ message, changed, ignored, data }
削除200{ message }
一括削除200{ message, deleted, notFound }
エラー4xx または 5xx{ status, error, message }
モデルの検証エラー400フィールドごとのエラーを含む application/problem+json
業務ルールの検証422フィールドごとのエラーを含む application/problem+json(RFC 7807)
エラー
{
  "status": 404,
  "error": "Not Found",
  "message": "Book with ID 999 does not exist."
}

すべてのレスポンスはあらゆるオリジンを許可し(Access-Control-Allow-Origin: *、資格情報なし)、ページネーション、キャッシュ、レート制限、バージョニングのヘッダーをブラウザのコードに公開します。X-RateLimit-* ヘッダーは情報提供のためのもので、実際の制限はレート制限でだけ行われます。

データはすべてメモリ上にあります。作成・更新・削除はできますが、サーバーを再起動するとすべて初期データに戻ります。

ブラウザから呼び出すとき

  • Cookie。 ブラウザは JavaScript に Cookie ヘッダーを設定させず、クロスオリジンのリクエストは資格情報を送りません。Cookie を使うエンドポイントは、同じオリジンからかプロキシ経由でしか動きません。
  • リダイレクト。 fetch() はリダイレクトをたどり、3xx のレスポンスを隠します。本当のステータスと Location ヘッダーを見るにはプロキシを使ってください。
  • プロキシ。 POST /api/Proxy/call はサーバーからリクエストを転送し、そのステータスとボディを返します。CORS、Cookie、リダイレクトの制約を避けられますが、レスポンスヘッダーは中継しません。
  • ストリーム。 /api/stream/sse は Server-Sent Events です。NDJSON、chunked、drip、JSON 配列のストリームは少しずつ届くので、ストリーミング用のリーダーで読んでください。
  • WebSocket。 /ws/echo と /ws/ticker には fetch ではなく WebSocket API が必要です。
  • Digest 認証。 ブラウザがチャレンジとレスポンスを行うのは、ブラウザ自身のログインダイアログを通すときだけです。
  • 障害注入。 /api/chaos/abort と /api/chaos/partial はわざと接続を切ります。/api/chaos/timeout と /api/chaos/slow は最大 60 秒かかることがあります。
  • 禁止ヘッダー。 ブラウザは Host、Content-Length、Accept-Encoding、Cookie などいくつかのヘッダーの設定を拒否します。

サインインして詳細を見る

これらの注意点のパラメータ、リクエストとレスポンスの例、ライブの Try it パネルは、サインインしたメンバー向けです。アカウントは無料で、数秒で作成できます。

エンドポイント

53 グループに 360 個のエンドポイントがあります。各グループからは、パラメータとリクエスト・レスポンスの例を載せたリファレンスを開けます。

はじめに

4 エンドポイント

全エンドポイントのライブカタログとヘルスチェック。