Echolot
チュートリアル

デモ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/ordersHeidiの注文。?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?nameCookieの表示、設定、削除。
/echo/basic-auth/{user}/{password}Basic認証が一致すれば200、そうでなければ401。
/echo/bearerBearerトークンがあれば(どんな値でも)200、なければ401。
/echo/bytes/{n}ランダムなnバイト(最大1 MB)。
/echo/xml、/echo/htmlXMLドキュメントとHTMLページ。

制限

デモは共有のため、アドレスごとに制限があります。1分あたり120リクエスト、書き出し、bytes、delay、WebSocket、SSEは1分あたり10リクエストです。 上限を超えると、Retry-After付きの429 Too Many Requestsが返ります。ボディは最大64 KBです。

gRPC、Socket.IO、MQTTはここでは動かせません。それぞれのチュートリアルでは、Macで動かす小さなサーバを使います。

デモAPIのソースはドキュメントのリポジトリにあります。

このページの内容