デモAPI
demo.echolot.devにある架空のアウトドア用品店Alpenglow。Echolotのあらゆる機能を試すためのAPIです。
https://demo.echolot.devは、Echolotを学ぶために作られたAPIです。チューリッヒとベルンにあるアウトドア用品店、Alpenglowです。
中身に非公開のものはなく、送信した内容も保存されません。GET https://demo.echolot.dev/で、すべてのエンドポイントを一覧できます。
サインイン
デモアカウントはheidi@alpenglow.ch、パスワードはalpenglowです。
POST https://demo.echolot.dev/v1/auth/token
Content-Type: application/json
{ "email": "heidi@alpenglow.ch", "password": "alpenglow" }レスポンスにはaccess_token(JWT、有効期間は1時間)が含まれます。/v1/meと/v1/ordersには、Authorization: Bearer <token>として送信します。
同じエンドポイントで、OAuth 2のクライアント資格情報も使えます。クライアントIDはalpenglow-demo、クライアントシークレットはdemo-secretです。
ショップ
| エンドポイント | 内容 |
|---|---|
GET /v1/products | 商品の一覧。q、category、tag、in_stock=true、sort(name、price、-price、rating)、page、per_pageを指定できます。ページ送りはLinkヘッダーとX-Total-Countヘッダーにあります。 |
GET /v1/products/{sku} | TNT-MH-2Pのような1つの商品。ETag付き(If-None-Matchを送ると304)。 |
GET /v1/products/export | 商品40,000件、約14 MB。サイズの大きいレスポンスでビューアを試せます。 |
GET /v1/categories | カテゴリと商品数。 |
GET /v1/me | サインイン中のユーザー。 |
GET /v1/orders | Heidiの注文。?status=shippedで絞り込めます。 |
POST /v1/orders | {"lines": [{"sku": "TNT-MH-2P", "quantity": 1}]}。Location付きで201、問題点を示して422を返します。同じIdempotency-Keyには、同じ注文をもう一度返します。 |
GET /v1/orders/{id} | ord_7Hk2Lwのような1つの注文。 |
DELETE /v1/orders/{id} | キャンセル。204、発送済みなら409。実際には何も変わりません。 |
エラーは、問題の内容を示すproblem details(application/problem+json)で返ります。ショップのOpenAPI仕様はhttps://demo.echolot.dev/openapi.yamlにあります。
GraphQL
POST https://demo.echolot.dev/v1/graphql。イントロスペクションに対応しているため、Echolotは入力中にフィールドを補完します。スキーマは/shop.graphqlにあります。
query SearchProducts($text: String!, $first: Int = 10) {
search(text: $text, first: $first) {
totalCount
nodes { sku name price { amount currency } stock { warehouse available } }
}
}ライブイベント
- WebSocket
wss://demo.echolot.dev/v1/orders:1.5秒ごとに注文イベント。{"op": "subscribe", "channel": "orders"}、{"op": "ping"}、またはidを含む任意のJSONを送ると、確認応答が返ります。 セッションは3分間続きます。メッセージは最大8 KB、10秒間に最大20件です。 - Server-Sent Events
GET https://demo.echolot.dev/v1/orders/events:1秒おきに20件のイベントが届き、その後endが届きます。Last-Event-IDを送ると再開できます。
MCP
https://demo.echolot.dev/mcpは、Streamable HTTPのMCPサーバです。MCPサーバのページで追加すると、ツール(search_catalog、get_product、order_status)、リソース、プロンプトを試せます。
Echo
リクエストエディタを試すためのエンドポイントです。
| エンドポイント | 内容 |
|---|---|
/echo/anything | 送信したメソッド、クエリ、ヘッダー、ボディを返します。 |
/echo/headers | 送信したヘッダーを返します。 |
/echo/status/{code} | そのステータスで応答します。 |
/echo/delay/{seconds} | 最大5秒待ってから、内容を返します。 |
/echo/redirect/{n} | n回リダイレクトしてから、/echo/anythingに着きます。 |
/echo/cookies、/echo/cookies/set?name=value、/echo/cookies/delete?name | Cookieの表示、設定、削除。 |
/echo/basic-auth/{user}/{password} | Basic認証が一致すれば200、そうでなければ401。 |
/echo/bearer | Bearerトークンがあれば(どんな値でも)200、なければ401。 |
/echo/bytes/{n} | ランダムなnバイト(最大1 MB)。 |
/echo/xml、/echo/html | XMLドキュメントとHTMLページ。 |
制限
デモは共有のため、アドレスごとに制限があります。1分あたり120リクエスト、書き出し、bytes、delay、WebSocket、SSEは1分あたり10リクエストです。
上限を超えると、Retry-After付きの429 Too Many Requestsが返ります。ボディは最大64 KBです。
gRPC、Socket.IO、MQTTはここでは動かせません。それぞれのチュートリアルでは、Macで動かす小さなサーバを使います。
デモAPIのソースはドキュメントのリポジトリにあります。