{
  "name": "MyAPIs API Zoo",
  "description": "JSON以外の表現、メディア、ファイル、HTTP挙動を実際のレスポンスで確認するためのAPI実験室。",
  "status": "phase-5",
  "count": 94,
  "categories": [
    {
      "category": "structured",
      "count": 4
    },
    {
      "category": "text",
      "count": 9
    },
    {
      "category": "media",
      "count": 18
    },
    {
      "category": "binary",
      "count": 5
    },
    {
      "category": "http",
      "count": 58
    }
  ],
  "phases": [
    {
      "phase": 1,
      "count": 25
    },
    {
      "phase": 2,
      "count": 14
    },
    {
      "phase": 3,
      "count": 6
    },
    {
      "phase": 4,
      "count": 14
    },
    {
      "phase": 5,
      "count": 20
    },
    {
      "phase": 6,
      "count": 15
    }
  ],
  "documentation": "/lab/docs",
  "openapi": "/openapi.json",
  "data": [
    {
      "id": "json-object",
      "phase": 1,
      "category": "structured",
      "title": "JSONオブジェクト",
      "description": "標準的なJSONオブジェクト。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/json-object",
      "url": "https://apis-cloud.net/lab/response/json-object",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [],
      "tags": [
        "json"
      ],
      "support": "supported"
    },
    {
      "id": "json-array",
      "phase": 1,
      "category": "structured",
      "title": "JSON配列",
      "description": "トップレベルが配列のJSON。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/json-array",
      "url": "https://apis-cloud.net/lab/response/json-array",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [],
      "tags": [
        "json",
        "array"
      ],
      "support": "supported"
    },
    {
      "id": "geojson",
      "phase": 1,
      "category": "structured",
      "title": "GeoJSON",
      "description": "FeatureCollection形式の地理データ。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/geojson",
      "url": "https://apis-cloud.net/lab/response/geojson",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/geo+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "geojson"
      ],
      "support": "supported"
    },
    {
      "id": "problem-details",
      "phase": 1,
      "category": "structured",
      "title": "Problem Details",
      "description": "RFC 9457形式のエラー本文。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/problem",
      "url": "https://apis-cloud.net/lab/response/problem",
      "status": 400,
      "statuses": [
        400
      ],
      "contentTypes": [
        "application/problem+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "error",
        "problem-details"
      ],
      "support": "supported"
    },
    {
      "id": "plain-text",
      "phase": 1,
      "category": "text",
      "title": "プレーンテキスト",
      "description": "UTF-8のtext/plain。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/text",
      "url": "https://apis-cloud.net/lab/response/text",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/plain"
      ],
      "requestContentTypes": [],
      "tags": [
        "text",
        "utf-8"
      ],
      "support": "supported"
    },
    {
      "id": "html",
      "phase": 1,
      "category": "text",
      "title": "HTML",
      "description": "ブラウザでそのまま表示できるHTML。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/html",
      "url": "https://apis-cloud.net/lab/response/html",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/html"
      ],
      "requestContentTypes": [],
      "tags": [
        "html"
      ],
      "support": "supported"
    },
    {
      "id": "markdown",
      "phase": 1,
      "category": "text",
      "title": "Markdown",
      "description": "text/markdown形式の文書。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/markdown",
      "url": "https://apis-cloud.net/lab/response/markdown",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/markdown"
      ],
      "requestContentTypes": [],
      "tags": [
        "markdown"
      ],
      "support": "supported"
    },
    {
      "id": "csv",
      "phase": 1,
      "category": "text",
      "title": "CSV",
      "description": "BOM付きUTF-8のカンマ区切りデータ。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/csv",
      "url": "https://apis-cloud.net/lab/response/csv",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/csv"
      ],
      "requestContentTypes": [],
      "tags": [
        "csv",
        "table"
      ],
      "support": "supported"
    },
    {
      "id": "tsv",
      "phase": 1,
      "category": "text",
      "title": "TSV",
      "description": "タブ区切りデータ。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/tsv",
      "url": "https://apis-cloud.net/lab/response/tsv",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/tab-separated-values"
      ],
      "requestContentTypes": [],
      "tags": [
        "tsv",
        "table"
      ],
      "support": "supported"
    },
    {
      "id": "xml",
      "phase": 1,
      "category": "text",
      "title": "XML",
      "description": "application/xml形式の文書。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/xml",
      "url": "https://apis-cloud.net/lab/response/xml",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/xml"
      ],
      "requestContentTypes": [],
      "tags": [
        "xml"
      ],
      "support": "supported"
    },
    {
      "id": "yaml",
      "phase": 1,
      "category": "text",
      "title": "YAML",
      "description": "application/yaml形式の文書。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/yaml",
      "url": "https://apis-cloud.net/lab/response/yaml",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/yaml"
      ],
      "requestContentTypes": [],
      "tags": [
        "yaml"
      ],
      "support": "supported"
    },
    {
      "id": "icalendar",
      "phase": 1,
      "category": "text",
      "title": "iCalendar",
      "description": "カレンダーへ取り込めるICS。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/calendar",
      "url": "https://apis-cloud.net/lab/response/calendar",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/calendar"
      ],
      "requestContentTypes": [],
      "tags": [
        "ics",
        "calendar"
      ],
      "support": "supported"
    },
    {
      "id": "vcard",
      "phase": 1,
      "category": "text",
      "title": "vCard",
      "description": "連絡先へ取り込めるVCF。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/response/contact",
      "url": "https://apis-cloud.net/lab/response/contact",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/vcard"
      ],
      "requestContentTypes": [],
      "tags": [
        "vcard",
        "contact"
      ],
      "support": "supported"
    },
    {
      "id": "png",
      "phase": 1,
      "category": "media",
      "title": "PNG画像",
      "description": "最小のPNGバイナリ。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/image.png",
      "url": "https://apis-cloud.net/lab/media/image.png",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/png"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "png"
      ],
      "support": "supported"
    },
    {
      "id": "svg",
      "phase": 1,
      "category": "media",
      "title": "SVG画像",
      "description": "ベクター形式の動的バッジ。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/badge.svg",
      "url": "https://apis-cloud.net/lab/media/badge.svg",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/svg+xml"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "svg"
      ],
      "support": "supported"
    },
    {
      "id": "wav",
      "phase": 1,
      "category": "media",
      "title": "WAV音声",
      "description": "指定周波数のPCMサイン波。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/tone.wav",
      "url": "https://apis-cloud.net/lab/media/tone.wav",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "audio/wav"
      ],
      "requestContentTypes": [],
      "tags": [
        "audio",
        "wav",
        "generated"
      ],
      "support": "supported"
    },
    {
      "id": "pdf",
      "phase": 1,
      "category": "binary",
      "title": "PDF",
      "description": "動的に構築した1ページPDF。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/file/sample.pdf",
      "url": "https://apis-cloud.net/lab/file/sample.pdf",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/pdf"
      ],
      "requestContentTypes": [],
      "tags": [
        "pdf",
        "document"
      ],
      "support": "supported"
    },
    {
      "id": "zip",
      "phase": 1,
      "category": "binary",
      "title": "ZIP",
      "description": "hello.txtを含む無圧縮ZIP。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/file/sample.zip",
      "url": "https://apis-cloud.net/lab/file/sample.zip",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/zip"
      ],
      "requestContentTypes": [],
      "tags": [
        "zip",
        "archive"
      ],
      "support": "supported"
    },
    {
      "id": "octet-stream",
      "phase": 1,
      "category": "binary",
      "title": "任意バイナリ",
      "description": "0x00〜0xFFを返すoctet-stream。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/file/bytes.bin",
      "url": "https://apis-cloud.net/lab/file/bytes.bin",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/octet-stream"
      ],
      "requestContentTypes": [],
      "tags": [
        "binary"
      ],
      "support": "supported"
    },
    {
      "id": "inline-file",
      "phase": 1,
      "category": "binary",
      "title": "インラインファイル",
      "description": "Content-Disposition: inlineのテキストファイル。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/file/inline",
      "url": "https://apis-cloud.net/lab/file/inline",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/plain"
      ],
      "requestContentTypes": [],
      "tags": [
        "content-disposition",
        "inline"
      ],
      "support": "supported"
    },
    {
      "id": "attachment-file",
      "phase": 1,
      "category": "binary",
      "title": "添付ファイル",
      "description": "Content-Disposition: attachmentのダウンロード。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/file/attachment",
      "url": "https://apis-cloud.net/lab/file/attachment",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/plain"
      ],
      "requestContentTypes": [],
      "tags": [
        "content-disposition",
        "attachment"
      ],
      "support": "supported"
    },
    {
      "id": "no-content",
      "phase": 1,
      "category": "http",
      "title": "本文なし",
      "description": "204 No Content。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/no-content",
      "url": "https://apis-cloud.net/lab/http/no-content",
      "status": 204,
      "statuses": [
        204
      ],
      "contentTypes": [],
      "requestContentTypes": [],
      "tags": [
        "status",
        "empty"
      ],
      "support": "supported"
    },
    {
      "id": "redirect",
      "phase": 1,
      "category": "http",
      "title": "リダイレクト",
      "description": "JSONレスポンスへ302で移動。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/redirect",
      "url": "https://apis-cloud.net/lab/http/redirect",
      "status": 302,
      "statuses": [
        302
      ],
      "contentTypes": [],
      "requestContentTypes": [],
      "tags": [
        "status",
        "redirect",
        "location"
      ],
      "support": "supported"
    },
    {
      "id": "etag",
      "phase": 1,
      "category": "http",
      "title": "条件付きGET",
      "description": "強いETagとIf-None-Matchによる304。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/cache",
      "url": "https://apis-cloud.net/lab/http/cache",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [],
      "tags": [
        "etag",
        "cache",
        "conditional"
      ],
      "support": "supported"
    },
    {
      "id": "content-negotiation",
      "phase": 1,
      "category": "http",
      "title": "コンテンツネゴシエーション",
      "description": "Acceptに応じてJSON・CSV・XMLを返す。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/negotiate",
      "url": "https://apis-cloud.net/lab/http/negotiate",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json",
        "text/csv",
        "application/xml"
      ],
      "requestContentTypes": [],
      "tags": [
        "accept",
        "negotiation",
        "vary"
      ],
      "support": "supported"
    },
    {
      "id": "request-json",
      "phase": 2,
      "category": "http",
      "title": "JSON入力",
      "description": "POSTされたJSONを型情報付きで返す。",
      "methods": [
        "POST"
      ],
      "path": "/lab/request/json",
      "url": "https://apis-cloud.net/lab/request/json",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "request",
        "json"
      ],
      "support": "supported"
    },
    {
      "id": "request-form",
      "phase": 2,
      "category": "http",
      "title": "フォーム入力",
      "description": "application/x-www-form-urlencodedと重複キーを解析する。",
      "methods": [
        "POST"
      ],
      "path": "/lab/request/form",
      "url": "https://apis-cloud.net/lab/request/form",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/x-www-form-urlencoded"
      ],
      "tags": [
        "request",
        "form"
      ],
      "support": "supported"
    },
    {
      "id": "request-multipart",
      "phase": 2,
      "category": "http",
      "title": "Multipart入力",
      "description": "フィールドと複数ファイルのメタデータを返す。本文上限は1 MiB。",
      "methods": [
        "POST"
      ],
      "path": "/lab/request/multipart",
      "url": "https://apis-cloud.net/lab/request/multipart",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "multipart/form-data"
      ],
      "tags": [
        "request",
        "upload",
        "multipart"
      ],
      "support": "supported"
    },
    {
      "id": "request-text",
      "phase": 2,
      "category": "http",
      "title": "テキスト入力",
      "description": "text/plain本文をエコーする。",
      "methods": [
        "POST"
      ],
      "path": "/lab/request/text",
      "url": "https://apis-cloud.net/lab/request/text",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "text/plain"
      ],
      "tags": [
        "request",
        "text"
      ],
      "support": "supported"
    },
    {
      "id": "request-binary",
      "phase": 2,
      "category": "http",
      "title": "バイナリ入力",
      "description": "application/octet-streamのサイズとSHA-256を返す。",
      "methods": [
        "POST"
      ],
      "path": "/lab/request/binary",
      "url": "https://apis-cloud.net/lab/request/binary",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/octet-stream"
      ],
      "tags": [
        "request",
        "binary",
        "digest"
      ],
      "support": "supported"
    },
    {
      "id": "put-resource",
      "phase": 2,
      "category": "http",
      "title": "PUT",
      "description": "指定IDのリソースを置き換えた体で201を返す。",
      "methods": [
        "PUT"
      ],
      "path": "/lab/request/resource/:id",
      "url": "https://apis-cloud.net/lab/request/resource/:id",
      "status": 201,
      "statuses": [
        201
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "method",
        "put",
        "location"
      ],
      "support": "supported"
    },
    {
      "id": "patch-resource",
      "phase": 2,
      "category": "http",
      "title": "PATCH",
      "description": "JSON Merge Patchを受け取る。",
      "methods": [
        "PATCH"
      ],
      "path": "/lab/request/resource/:id",
      "url": "https://apis-cloud.net/lab/request/resource/:id",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/merge-patch+json"
      ],
      "tags": [
        "method",
        "patch"
      ],
      "support": "supported"
    },
    {
      "id": "delete-resource",
      "phase": 2,
      "category": "http",
      "title": "DELETE",
      "description": "削除成功を204で返す。",
      "methods": [
        "DELETE"
      ],
      "path": "/lab/request/resource/:id",
      "url": "https://apis-cloud.net/lab/request/resource/:id",
      "status": 204,
      "statuses": [
        204
      ],
      "contentTypes": [],
      "requestContentTypes": [],
      "tags": [
        "method",
        "delete"
      ],
      "support": "supported"
    },
    {
      "id": "options",
      "phase": 2,
      "category": "http",
      "title": "OPTIONS",
      "description": "CORS preflightとしてAccess-Control-Allow-Methods等を返す。",
      "methods": [
        "OPTIONS"
      ],
      "path": "/lab/request/options",
      "url": "https://apis-cloud.net/lab/request/options",
      "status": 204,
      "statuses": [
        204
      ],
      "contentTypes": [],
      "requestContentTypes": [],
      "tags": [
        "method",
        "options",
        "cors"
      ],
      "support": "supported"
    },
    {
      "id": "range",
      "phase": 2,
      "category": "http",
      "title": "Rangeリクエスト",
      "description": "単一bytes Rangeに206、範囲外に416を返す。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/range",
      "url": "https://apis-cloud.net/lab/http/range",
      "status": 200,
      "statuses": [
        200,
        206,
        416
      ],
      "contentTypes": [
        "application/octet-stream"
      ],
      "requestContentTypes": [],
      "tags": [
        "range",
        "206",
        "416"
      ],
      "support": "supported"
    },
    {
      "id": "cookies",
      "phase": 2,
      "category": "http",
      "title": "複数Cookie",
      "description": "複数のSet-Cookie属性を返す。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/cookies",
      "url": "https://apis-cloud.net/lab/http/cookies",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [],
      "tags": [
        "cookie",
        "set-cookie"
      ],
      "support": "supported"
    },
    {
      "id": "cursor-pagination",
      "phase": 2,
      "category": "http",
      "title": "Cursorページング",
      "description": "opaque cursorとLinkヘッダーで次ページを示す。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/cursor",
      "url": "https://apis-cloud.net/lab/http/cursor",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [],
      "tags": [
        "pagination",
        "cursor",
        "link"
      ],
      "support": "supported"
    },
    {
      "id": "batch",
      "phase": 2,
      "category": "http",
      "title": "Batch / Multi-Status",
      "description": "複数操作をまとめ、個別結果を207で返す。",
      "methods": [
        "POST"
      ],
      "path": "/lab/http/batch",
      "url": "https://apis-cloud.net/lab/http/batch",
      "status": 207,
      "statuses": [
        207
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "batch",
        "207"
      ],
      "support": "supported"
    },
    {
      "id": "if-match",
      "phase": 2,
      "category": "http",
      "title": "If-Match",
      "description": "\"v1\"なら更新、違えば412を返す固定例。",
      "methods": [
        "PUT"
      ],
      "path": "/lab/http/if-match",
      "url": "https://apis-cloud.net/lab/http/if-match",
      "status": 200,
      "statuses": [
        200,
        412,
        428
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "conditional",
        "if-match",
        "etag"
      ],
      "support": "supported"
    },
    {
      "id": "ndjson-stream",
      "phase": 3,
      "category": "http",
      "title": "NDJSONストリーム",
      "description": "1行1JSONをReadableStreamで順次返す。",
      "methods": [
        "GET"
      ],
      "path": "/lab/stream/ndjson",
      "url": "https://apis-cloud.net/lab/stream/ndjson",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/x-ndjson"
      ],
      "requestContentTypes": [],
      "tags": [
        "stream",
        "ndjson"
      ],
      "support": "supported"
    },
    {
      "id": "sse-stream",
      "phase": 3,
      "category": "http",
      "title": "Server-Sent Events",
      "description": "id・event・retry・dataを含むSSEイベント列。",
      "methods": [
        "GET"
      ],
      "path": "/lab/stream/sse",
      "url": "https://apis-cloud.net/lab/stream/sse",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/event-stream"
      ],
      "requestContentTypes": [],
      "tags": [
        "stream",
        "sse",
        "events"
      ],
      "support": "supported"
    },
    {
      "id": "chunked-text",
      "phase": 3,
      "category": "http",
      "title": "Chunkedテキスト",
      "description": "Content-Lengthなしで複数チャンクを返す。",
      "methods": [
        "GET"
      ],
      "path": "/lab/stream/chunks",
      "url": "https://apis-cloud.net/lab/stream/chunks",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/plain"
      ],
      "requestContentTypes": [],
      "tags": [
        "stream",
        "chunked"
      ],
      "support": "supported"
    },
    {
      "id": "multipart-stream",
      "phase": 3,
      "category": "http",
      "title": "Multipartストリーム",
      "description": "JSONとテキストをmultipart/mixedで順次返す。",
      "methods": [
        "GET"
      ],
      "path": "/lab/stream/multipart",
      "url": "https://apis-cloud.net/lab/stream/multipart",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "multipart/mixed"
      ],
      "requestContentTypes": [],
      "tags": [
        "stream",
        "multipart",
        "mixed"
      ],
      "support": "supported"
    },
    {
      "id": "websocket",
      "phase": 3,
      "category": "http",
      "title": "WebSocketルーム",
      "description": "Durable ObjectsハイバネーションAPIによるルーム内broadcast。",
      "methods": [
        "GET"
      ],
      "path": "/lab/realtime/websocket/:room",
      "url": "https://apis-cloud.net/lab/realtime/websocket/:room",
      "status": 101,
      "statuses": [
        101,
        426
      ],
      "contentTypes": [],
      "requestContentTypes": [],
      "tags": [
        "websocket",
        "durable-object",
        "realtime"
      ],
      "support": "supported"
    },
    {
      "id": "websocket-stats",
      "phase": 3,
      "category": "http",
      "title": "WebSocketルーム統計",
      "description": "ルームの接続数と累積メッセージ数をRPCで取得する。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/realtime/rooms/:room",
      "url": "https://apis-cloud.net/lab/realtime/rooms/:room",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [],
      "tags": [
        "websocket",
        "rpc",
        "stats"
      ],
      "support": "supported"
    },
    {
      "id": "job-create",
      "phase": 4,
      "category": "http",
      "title": "非同期ジョブ作成",
      "description": "202 + Locationでジョブを作成し、Durable Object Alarmで完了させる。",
      "methods": [
        "POST"
      ],
      "path": "/lab/async/jobs",
      "url": "https://apis-cloud.net/lab/async/jobs",
      "status": 202,
      "statuses": [
        202
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "async",
        "job",
        "202",
        "alarm"
      ],
      "support": "supported"
    },
    {
      "id": "job-status",
      "phase": 4,
      "category": "http",
      "title": "非同期ジョブ状態",
      "description": "Locationで示されたジョブの状態と結果を取得する。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/async/jobs/:id",
      "url": "https://apis-cloud.net/lab/async/jobs/:id",
      "status": 200,
      "statuses": [
        200,
        404
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "async",
        "job",
        "polling"
      ],
      "support": "supported"
    },
    {
      "id": "job-cancel",
      "phase": 4,
      "category": "http",
      "title": "非同期ジョブ取消",
      "description": "進行中ジョブをキャンセルする。",
      "methods": [
        "DELETE"
      ],
      "path": "/lab/async/jobs/:id",
      "url": "https://apis-cloud.net/lab/async/jobs/:id",
      "status": 200,
      "statuses": [
        200,
        404
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "async",
        "job",
        "cancel"
      ],
      "support": "supported"
    },
    {
      "id": "idempotency",
      "phase": 4,
      "category": "http",
      "title": "Idempotency-Key",
      "description": "同じキーと本文なら同じ結果、本文が違えば409を返す。",
      "methods": [
        "POST"
      ],
      "path": "/lab/state/idempotency",
      "url": "https://apis-cloud.net/lab/state/idempotency",
      "status": 201,
      "statuses": [
        200,
        201,
        409,
        428
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "idempotency",
        "durable-object"
      ],
      "support": "supported"
    },
    {
      "id": "rate-limit",
      "phase": 4,
      "category": "http",
      "title": "Rate Limit",
      "description": "クライアント単位で3回/分、超過時429を返す。",
      "methods": [
        "GET"
      ],
      "path": "/lab/state/rate-limit",
      "url": "https://apis-cloud.net/lab/state/rate-limit",
      "status": 200,
      "statuses": [
        200,
        429
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "rate-limit",
        "429",
        "durable-object"
      ],
      "support": "supported"
    },
    {
      "id": "optimistic-get",
      "phase": 4,
      "category": "http",
      "title": "楽観ロック取得",
      "description": "現在値とversion ETagを返す。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/state/resource/:id",
      "url": "https://apis-cloud.net/lab/state/resource/:id",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [],
      "tags": [
        "optimistic-lock",
        "etag",
        "durable-object"
      ],
      "support": "supported"
    },
    {
      "id": "optimistic-put",
      "phase": 4,
      "category": "http",
      "title": "楽観ロック更新",
      "description": "If-Matchが現在versionなら更新し、競合時412を返す。",
      "methods": [
        "PUT"
      ],
      "path": "/lab/state/resource/:id",
      "url": "https://apis-cloud.net/lab/state/resource/:id",
      "status": 200,
      "statuses": [
        200,
        412,
        428
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "optimistic-lock",
        "if-match",
        "durable-object"
      ],
      "support": "supported"
    },
    {
      "id": "auth-bearer",
      "phase": 4,
      "category": "http",
      "title": "Bearer認証",
      "description": "デモ用認証情報を使う認証パターン。実サービス用の秘密ではない。",
      "methods": [
        "GET"
      ],
      "path": "/lab/auth/bearer",
      "url": "https://apis-cloud.net/lab/auth/bearer",
      "status": 200,
      "statuses": [
        200,
        401
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "auth",
        "bearer",
        "authorization"
      ],
      "support": "supported"
    },
    {
      "id": "auth-api-key",
      "phase": 4,
      "category": "http",
      "title": "API Key認証",
      "description": "デモ用認証情報を使う認証パターン。実サービス用の秘密ではない。",
      "methods": [
        "GET"
      ],
      "path": "/lab/auth/api-key",
      "url": "https://apis-cloud.net/lab/auth/api-key",
      "status": 200,
      "statuses": [
        200,
        401
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "auth",
        "api-key"
      ],
      "support": "supported"
    },
    {
      "id": "auth-basic",
      "phase": 4,
      "category": "http",
      "title": "Basic認証",
      "description": "デモ用認証情報を使う認証パターン。実サービス用の秘密ではない。",
      "methods": [
        "GET"
      ],
      "path": "/lab/auth/basic",
      "url": "https://apis-cloud.net/lab/auth/basic",
      "status": 200,
      "statuses": [
        200,
        401
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "auth",
        "basic",
        "authorization"
      ],
      "support": "supported"
    },
    {
      "id": "auth-cookie",
      "phase": 4,
      "category": "http",
      "title": "Cookieセッション",
      "description": "デモ用認証情報を使う認証パターン。実サービス用の秘密ではない。",
      "methods": [
        "GET"
      ],
      "path": "/lab/auth/cookie",
      "url": "https://apis-cloud.net/lab/auth/cookie",
      "status": 200,
      "statuses": [
        200,
        401
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "auth",
        "cookie",
        "session"
      ],
      "support": "supported"
    },
    {
      "id": "hmac-sign",
      "phase": 4,
      "category": "http",
      "title": "HMAC署名生成",
      "description": "デモ用共有鍵で本文のSHA-256 HMACを生成する。",
      "methods": [
        "POST"
      ],
      "path": "/lab/auth/hmac/sign",
      "url": "https://apis-cloud.net/lab/auth/hmac/sign",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/octet-stream",
        "text/plain",
        "application/json"
      ],
      "tags": [
        "hmac",
        "signature",
        "demo"
      ],
      "support": "supported"
    },
    {
      "id": "hmac-verify",
      "phase": 4,
      "category": "http",
      "title": "HMAC署名検証",
      "description": "x-signatureのHMAC-SHA256を定時間検証する。",
      "methods": [
        "POST"
      ],
      "path": "/lab/auth/hmac/verify",
      "url": "https://apis-cloud.net/lab/auth/hmac/verify",
      "status": 200,
      "statuses": [
        200,
        401
      ],
      "contentTypes": [
        "application/json",
        "application/problem+json"
      ],
      "requestContentTypes": [
        "application/octet-stream",
        "text/plain",
        "application/json"
      ],
      "tags": [
        "hmac",
        "signature"
      ],
      "support": "supported"
    },
    {
      "id": "webhook-receiver",
      "phase": 4,
      "category": "http",
      "title": "Webhook receiver",
      "description": "外部送信せず、安全にイベント受信・署名有無を確認する。",
      "methods": [
        "POST"
      ],
      "path": "/lab/webhook/receiver",
      "url": "https://apis-cloud.net/lab/webhook/receiver",
      "status": 202,
      "statuses": [
        202
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "webhook",
        "receiver",
        "202"
      ],
      "support": "supported"
    },
    {
      "id": "json-rpc",
      "phase": 5,
      "category": "http",
      "title": "JSON-RPC 2.0",
      "description": "echo・sum・subtractをJSON-RPC 2.0で呼び出す。",
      "methods": [
        "POST"
      ],
      "path": "/lab/protocol/json-rpc",
      "url": "https://apis-cloud.net/lab/protocol/json-rpc",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "json-rpc",
        "rpc"
      ],
      "support": "supported"
    },
    {
      "id": "graphql",
      "phase": 5,
      "category": "http",
      "title": "GraphQL",
      "description": "hello・time・echoフィールドを扱う小さなGraphQL endpoint。",
      "methods": [
        "POST"
      ],
      "path": "/lab/protocol/graphql",
      "url": "https://apis-cloud.net/lab/protocol/graphql",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/graphql-response+json"
      ],
      "requestContentTypes": [
        "application/json"
      ],
      "tags": [
        "graphql"
      ],
      "support": "supported"
    },
    {
      "id": "soap",
      "phase": 5,
      "category": "http",
      "title": "SOAP",
      "description": "SOAP 1.2のAddリクエストをXML envelopeで返す。",
      "methods": [
        "POST"
      ],
      "path": "/lab/protocol/soap",
      "url": "https://apis-cloud.net/lab/protocol/soap",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/soap+xml"
      ],
      "requestContentTypes": [
        "application/soap+xml"
      ],
      "tags": [
        "soap",
        "xml"
      ],
      "support": "supported"
    },
    {
      "id": "json-api",
      "phase": 5,
      "category": "http",
      "title": "JSON:API",
      "description": "application/vnd.api+json形式のresource document。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/protocol/json-api",
      "url": "https://apis-cloud.net/lab/protocol/json-api",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/vnd.api+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "json-api",
        "hypermedia"
      ],
      "support": "supported"
    },
    {
      "id": "hal",
      "phase": 5,
      "category": "http",
      "title": "HAL",
      "description": "_linksと_embeddedを持つHAL JSON。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/protocol/hal",
      "url": "https://apis-cloud.net/lab/protocol/hal",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/hal+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "hal",
        "hypermedia"
      ],
      "support": "supported"
    },
    {
      "id": "json-ld",
      "phase": 5,
      "category": "http",
      "title": "JSON-LD",
      "description": "schema.org contextを持つlinked data。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/protocol/json-ld",
      "url": "https://apis-cloud.net/lab/protocol/json-ld",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/ld+json"
      ],
      "requestContentTypes": [],
      "tags": [
        "json-ld",
        "linked-data"
      ],
      "support": "supported"
    },
    {
      "id": "json-patch",
      "phase": 5,
      "category": "http",
      "title": "JSON Patch",
      "description": "RFC 6902形式の操作配列を検証して返す。",
      "methods": [
        "PATCH"
      ],
      "path": "/lab/protocol/json-patch",
      "url": "https://apis-cloud.net/lab/protocol/json-patch",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [
        "application/json-patch+json"
      ],
      "tags": [
        "json-patch",
        "patch"
      ],
      "support": "supported"
    },
    {
      "id": "protobuf",
      "phase": 5,
      "category": "http",
      "title": "Protocol Buffers",
      "description": "message Sample { string message=1; uint32 value=2; } のwire形式。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/binary/protobuf",
      "url": "https://apis-cloud.net/lab/binary/protobuf",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/x-protobuf"
      ],
      "requestContentTypes": [],
      "tags": [
        "protobuf",
        "binary"
      ],
      "support": "supported"
    },
    {
      "id": "cbor",
      "phase": 5,
      "category": "http",
      "title": "CBOR",
      "description": "{message: hello, value: 42}のCBOR map。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/binary/cbor",
      "url": "https://apis-cloud.net/lab/binary/cbor",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/cbor"
      ],
      "requestContentTypes": [],
      "tags": [
        "cbor",
        "binary"
      ],
      "support": "supported"
    },
    {
      "id": "messagepack",
      "phase": 5,
      "category": "http",
      "title": "MessagePack",
      "description": "{message: hello, value: 42}のMessagePack map。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/binary/messagepack",
      "url": "https://apis-cloud.net/lab/binary/messagepack",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/msgpack"
      ],
      "requestContentTypes": [],
      "tags": [
        "messagepack",
        "binary"
      ],
      "support": "supported"
    },
    {
      "id": "wasm",
      "phase": 5,
      "category": "http",
      "title": "WebAssembly",
      "description": "有効な空のWebAssembly module。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/binary/module.wasm",
      "url": "https://apis-cloud.net/lab/binary/module.wasm",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/wasm"
      ],
      "requestContentTypes": [],
      "tags": [
        "wasm",
        "binary"
      ],
      "support": "supported"
    },
    {
      "id": "utf16",
      "phase": 5,
      "category": "http",
      "title": "UTF-16LE",
      "description": "BOM付きUTF-16LEテキスト。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/encoding/utf16",
      "url": "https://apis-cloud.net/lab/encoding/utf16",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/plain"
      ],
      "requestContentTypes": [],
      "tags": [
        "charset",
        "utf-16"
      ],
      "support": "supported"
    },
    {
      "id": "shift-jis",
      "phase": 5,
      "category": "http",
      "title": "Shift_JIS",
      "description": "Shift_JISで符号化した「こんにちは」。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/encoding/shift-jis",
      "url": "https://apis-cloud.net/lab/encoding/shift-jis",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/plain"
      ],
      "requestContentTypes": [],
      "tags": [
        "charset",
        "shift-jis"
      ],
      "support": "supported"
    },
    {
      "id": "gzip",
      "phase": 5,
      "category": "http",
      "title": "gzip Content-Encoding",
      "description": "gzip済み本文をencodeBody=manualで返す。",
      "methods": [
        "GET"
      ],
      "path": "/lab/encoding/gzip",
      "url": "https://apis-cloud.net/lab/encoding/gzip",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "text/plain"
      ],
      "requestContentTypes": [],
      "tags": [
        "gzip",
        "content-encoding",
        "stream"
      ],
      "support": "supported"
    },
    {
      "id": "rss",
      "phase": 5,
      "category": "http",
      "title": "RSS 2.0",
      "description": "application/rss+xml形式のfeed。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/feed/rss",
      "url": "https://apis-cloud.net/lab/feed/rss",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/rss+xml"
      ],
      "requestContentTypes": [],
      "tags": [
        "rss",
        "feed",
        "xml"
      ],
      "support": "supported"
    },
    {
      "id": "atom",
      "phase": 5,
      "category": "http",
      "title": "Atom",
      "description": "application/atom+xml形式のfeed。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/feed/atom",
      "url": "https://apis-cloud.net/lab/feed/atom",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/atom+xml"
      ],
      "requestContentTypes": [],
      "tags": [
        "atom",
        "feed",
        "xml"
      ],
      "support": "supported"
    },
    {
      "id": "application-http",
      "phase": 5,
      "category": "http",
      "title": "application/http",
      "description": "HTTPレスポンスを本文内に埋め込むbatch表現。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/application-http",
      "url": "https://apis-cloud.net/lab/http/application-http",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "application/http"
      ],
      "requestContentTypes": [],
      "tags": [
        "application-http",
        "batch"
      ],
      "support": "supported"
    },
    {
      "id": "multipart-byteranges",
      "phase": 5,
      "category": "http",
      "title": "Multipart Byte Ranges",
      "description": "複数byte範囲をmultipart/byterangesで返す。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/multi-range",
      "url": "https://apis-cloud.net/lab/http/multi-range",
      "status": 206,
      "statuses": [
        206
      ],
      "contentTypes": [
        "multipart/byteranges"
      ],
      "requestContentTypes": [],
      "tags": [
        "range",
        "multipart",
        "206"
      ],
      "support": "supported"
    },
    {
      "id": "prefer",
      "phase": 5,
      "category": "http",
      "title": "Preferヘッダー",
      "description": "return=minimalなら204、respond-asyncなら202を返す。",
      "methods": [
        "POST"
      ],
      "path": "/lab/http/prefer",
      "url": "https://apis-cloud.net/lab/http/prefer",
      "status": 200,
      "statuses": [
        200,
        202,
        204
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [],
      "tags": [
        "prefer",
        "202",
        "204"
      ],
      "support": "supported"
    },
    {
      "id": "status-zoo",
      "phase": 5,
      "category": "http",
      "title": "特殊Status Code",
      "description": "許可されたHTTP statusを意図的に返す。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/http/status/:code",
      "url": "https://apis-cloud.net/lab/http/status/:code",
      "status": 418,
      "statuses": [
        201,
        202,
        207,
        208,
        226,
        300,
        400,
        404,
        410,
        418,
        425,
        428,
        429,
        451,
        500,
        503,
        507,
        508,
        511
      ],
      "contentTypes": [
        "application/json"
      ],
      "requestContentTypes": [],
      "tags": [
        "status",
        "edge-case"
      ],
      "support": "supported"
    },
    {
      "id": "identicon",
      "phase": 6,
      "category": "media",
      "title": "アイデンティコン",
      "description": "文字列から決まる5x5の左右対称なアイコン。同じ?seed=なら常に同じ絵になる。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/identicon.svg",
      "url": "https://apis-cloud.net/lab/media/identicon.svg",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/svg+xml"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "svg",
        "generated",
        "deterministic"
      ],
      "support": "supported"
    },
    {
      "id": "placeholder",
      "phase": 6,
      "category": "media",
      "title": "プレースホルダ画像",
      "description": "指定サイズの板に寸法を書いた、レイアウト確認用のダミー画像。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/placeholder.svg",
      "url": "https://apis-cloud.net/lab/media/placeholder.svg",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/svg+xml"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "svg",
        "placeholder"
      ],
      "support": "supported"
    },
    {
      "id": "sparkline",
      "phase": 6,
      "category": "media",
      "title": "スパークライン",
      "description": "カンマ区切りの数値から軸のない折れ線グラフを描く。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/sparkline.svg",
      "url": "https://apis-cloud.net/lab/media/sparkline.svg",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/svg+xml"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "svg",
        "chart"
      ],
      "support": "supported"
    },
    {
      "id": "gradient",
      "phase": 6,
      "category": "media",
      "title": "グラデーションPNG",
      "description": "2色の線形グラデーションを角度指定でPNGに描く。自前のPNGエンコーダを使う。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/gradient.png",
      "url": "https://apis-cloud.net/lab/media/gradient.png",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/png"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "png",
        "generated"
      ],
      "support": "supported"
    },
    {
      "id": "checkerboard",
      "phase": 6,
      "category": "media",
      "title": "市松模様PNG",
      "description": "透過確認に使う市松模様。タイルの大きさと2色を指定できる。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/checkerboard.png",
      "url": "https://apis-cloud.net/lab/media/checkerboard.png",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/png"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "png",
        "generated"
      ],
      "support": "supported"
    },
    {
      "id": "noise-png",
      "phase": 6,
      "category": "media",
      "title": "ノイズPNG",
      "description": "ランダムなピクセルを敷き詰めたPNG。?seed=を付けると毎回同じ絵になる。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/noise.png",
      "url": "https://apis-cloud.net/lab/media/noise.png",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/png"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "png",
        "random"
      ],
      "support": "supported"
    },
    {
      "id": "mandelbrot",
      "phase": 6,
      "category": "media",
      "title": "マンデルブロ集合",
      "description": "1ピクセルごとに反復計算して描く。このサイトで最もCPUを使うエンドポイント。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/mandelbrot.png",
      "url": "https://apis-cloud.net/lab/media/mandelbrot.png",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/png"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "png",
        "compute"
      ],
      "support": "supported"
    },
    {
      "id": "tracking-pixel",
      "phase": 6,
      "category": "media",
      "title": "1x1透明ピクセル",
      "description": "43バイトの透明GIF。いわゆるトラッキングピクセルで、画像として最小の応答。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/pixel.gif",
      "url": "https://apis-cloud.net/lab/media/pixel.gif",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "image/gif"
      ],
      "requestContentTypes": [],
      "tags": [
        "image",
        "gif",
        "minimal"
      ],
      "support": "supported"
    },
    {
      "id": "waveform",
      "phase": 6,
      "category": "media",
      "title": "波形指定の単音",
      "description": "正弦波・矩形波・のこぎり波・三角波を選んで鳴らす。/media/tone.wav の波形拡張版。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/waveform.wav",
      "url": "https://apis-cloud.net/lab/media/waveform.wav",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "audio/wav"
      ],
      "requestContentTypes": [],
      "tags": [
        "audio",
        "wav",
        "synth"
      ],
      "support": "supported"
    },
    {
      "id": "dtmf",
      "phase": 6,
      "category": "media",
      "title": "DTMF（プッシュ音）",
      "description": "電話のダイヤル音。1キーにつき低群・高群の2つの正弦波を重ねる規格どおりの合成。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/dtmf.wav",
      "url": "https://apis-cloud.net/lab/media/dtmf.wav",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "audio/wav"
      ],
      "requestContentTypes": [],
      "tags": [
        "audio",
        "wav",
        "dtmf"
      ],
      "support": "supported"
    },
    {
      "id": "morse",
      "phase": 6,
      "category": "media",
      "title": "モールス信号",
      "description": "文字列をモールス符号にして鳴らす。短点1・長点3・字間3・語間7の比率は国際規格どおり。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/morse.wav",
      "url": "https://apis-cloud.net/lab/media/morse.wav",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "audio/wav"
      ],
      "requestContentTypes": [],
      "tags": [
        "audio",
        "wav",
        "morse"
      ],
      "support": "supported"
    },
    {
      "id": "melody",
      "phase": 6,
      "category": "media",
      "title": "メロディ",
      "description": "音名の並びを矩形波で順に鳴らす簡易チップチューン。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/melody.wav",
      "url": "https://apis-cloud.net/lab/media/melody.wav",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "audio/wav"
      ],
      "requestContentTypes": [],
      "tags": [
        "audio",
        "wav",
        "music"
      ],
      "support": "supported"
    },
    {
      "id": "metronome",
      "phase": 6,
      "category": "media",
      "title": "メトロノーム",
      "description": "指定BPMのクリック音。小節の頭だけ高い音でアクセントを付ける。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/metronome.wav",
      "url": "https://apis-cloud.net/lab/media/metronome.wav",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "audio/wav"
      ],
      "requestContentTypes": [],
      "tags": [
        "audio",
        "wav",
        "music"
      ],
      "support": "supported"
    },
    {
      "id": "noise-wav",
      "phase": 6,
      "category": "media",
      "title": "ノイズ音",
      "description": "ホワイト／ピンク／ブラウンノイズ。高域の減り方だけで聞こえ方が大きく変わる。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/noise.wav",
      "url": "https://apis-cloud.net/lab/media/noise.wav",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "audio/wav"
      ],
      "requestContentTypes": [],
      "tags": [
        "audio",
        "wav",
        "noise"
      ],
      "support": "supported"
    },
    {
      "id": "silence",
      "phase": 6,
      "category": "media",
      "title": "無音",
      "description": "指定秒数のまったくの無音。中身は0の羅列で、再生系の動作確認に使う。",
      "methods": [
        "GET",
        "HEAD"
      ],
      "path": "/lab/media/silence.wav",
      "url": "https://apis-cloud.net/lab/media/silence.wav",
      "status": 200,
      "statuses": [
        200
      ],
      "contentTypes": [
        "audio/wav"
      ],
      "requestContentTypes": [],
      "tags": [
        "audio",
        "wav",
        "minimal"
      ],
      "support": "supported"
    }
  ],
  "unsupported": [
    {
      "id": "raw-http",
      "support": "impossible",
      "reason": "WorkersのResponse APIより下のraw HTTP framingは生成できない"
    },
    {
      "id": "http2-server-push",
      "support": "impossible",
      "reason": "HTTP/2 Server Pushは公開Web標準として廃止済み"
    },
    {
      "id": "raw-tcp-udp-server",
      "support": "external",
      "reason": "通常のHTTP WorkerではなくSockets/Spectrum等の別製品領域"
    },
    {
      "id": "webtransport-server",
      "support": "unsupported",
      "reason": "Workersの受信WebTransport endpointとして未提供"
    },
    {
      "id": "grpc-native-server",
      "support": "partial",
      "reason": "gRPC-Webやproxyは可能だがnative gRPC serverの完全再現ではない"
    }
  ]
}