OpenAPIスキーマからTypeScriptの型への変換ツール
OpenAPI 3.x(またはSwagger 2.0)ドキュメントのコンポーネントスキーマを、TypeScriptのインターフェース型とタイプエイリアス宣言に変換します。$refを解決し、allOfを交差型に、oneOf/anyOfを共用型に変換し、discriminatorとnullableフィールドを処理し、ダウンロード可能な.tsファイルを生成します。
入力
出力
ガイド
OpenAPI 3.x(またはSwagger 2.0)ドキュメントを貼り付けて、components.schemasのすべてのスキーマのための単純なTypeScript interface/type宣言を取得します — サーバーなし、コード生成CLIなし、npm installなし。
APIスキーマをTypeScriptに手動でコピーするのは退屈で、微妙なエラーを犯しやすいものです:すべての$refはそのターゲットにトレースバックする必要があり、allOf/oneOf/anyOfは正しいunion/intersection形式が必要であり、見落とされたrequiredまたはnullableフィールドはAPIが実際に返すものについてのタイプを黙ってうそをつきます。このツールは仕様自体からこれをすべて決定論的に解決するため、結果は毎回ドキュメントと一致します。
使用方法
- OpenAPI 3.xまたはSwagger 2.0ドキュメント(YAMLとJSONの両方が機能します)を入力ボックスに貼り付けるか、例を試すをクリックしてサンプルPet Store仕様をロードします。
- スキーマの説明でそれぞれのインターフェース、型、プロパティに注釈を付けたい場合は、スキーマの説明からJSDocコメントを追加を有効にします。
- 生成された
.tsファイルをコピーまたはダウンロードします。
出力は、仕様を編集すると自動的に更新されます。
変換されるもの
$ref解決 —components/schemas、$defs、または(Swagger 2.0の場合)definitionsへのすべての参照は名前で解決され、異なるbucket間のスキーマ間の参照を含みます。ランタイムバリデータへの変換とは異なり、プレーンTypeScript型は宣言順序またはサイクル処理を必要としません — インターフェースとtypeエイリアスは任意の順序で互いに(それ自身を含む)参照できるため、自己参照する「tree node」スキーマはそのまま機能します。allOf— intersection型(A & B)になり、allOfエントリごとに1つのメンバー。oneOf/anyOf— union型(A | B)になります。discriminator— 特別な構文は不要です:union の各メンバーが独自のliteral型プロパティを持つオブジェクト型(kind: "cat"対kind: "dog")になったら、TypeScriptはそのプロパティで既にunionを絞ります。生成された型は、共有フィールドで切り替える瞬間に判別されたunionになります。nullable: true(OpenAPI 3.0)および**type: [T, "null"]**(OpenAPI 3.1 / JSON Schema)— 両方がT | nullになります。enum— string enumはstring literalのunionになります;constは単一のliteral型になります。required/ optional properties — 必須キーは必須のままです;他はすべて?を取得します。additionalProperties—falseは[key: string]: never;インデックスシグネチャを追加します;スキーマ値は& Record<string, T>になります。- 暗黙的な形状 —
typeを省略するがpropertiesまたはitemsを宣言するスキーマ(手書きの仕様では一般的)は、unknownにフォールバックするのではなくオブジェクトまたは配列として読まれます。
オブジェクトスキーマはexport interfaceとして発行されます;他はすべて(union、intersection、enum、array alias、$refのみのスキーマ)export typeとして発行されます。
パラメータ、リクエストボディ、パスはどうですか?
このツールはcomponents.schemasのみを読み取ります — 再利用可能なデータ形状です。paths、操作パラメータ、またはレスポンスエンベロープのタイプを生成しません;そのため、仕様に対して完全なコードジェネレータを使用するか、必要なスキーマを個別に貼り付けてください。
私のスペックはSwagger 2.0(swagger: "2.0")を使用しています — これは機能しますか?
はい、definitionsはcomponents.schemasと同じ方法で読み取られます。ドキュメント全体を最初にOpenAPI 3.xに変換することが好ましい場合(新しい$refパス、requestBody、serversなど)、OpenAPI v2 to v3 Converterを参照してください。
私のスペックが最初に検証されますか?
いいえ — このツールはドキュメントが既に整形式であることを前提とし、純粋に型生成に焦点を当てています。構造的検証(missing operationId、解決不可能な$ref、未宣言のpathパラメータ)が必要な場合、変換の前または代わりにOpenAPI / Swagger Validatorを参照してください。
Zodスキーマが必要で、プレーンTypeScript型ではない
JSON Schema to Zod Schema Converterを参照してください — 1つのスキーマ(完全なOpenAPIドキュメントではない)を貼り付けて、ランタイム検証Zodスキーマと推論されたTypeScript型を取得します。
私のスペックはどこかに送信されますか?
いいえ。パースと型生成はブラウザ内で完全に実行されます — ここで実行されるのと同じコードが公開APIとMCPツールをサポートしており、何もネットワークリクエストを行いません。
Use it from code
From 3 credits per callREST API
curl -X POST https://api.iotools.cloud/v1/tool/openapi-to-typescript-converter \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"openapiText": "openapi: 3.0.3\ninfo:\n title: Pet Store\n versio…",
"includeComments": "false"
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `openapi-to-typescript-converter` tool (OpenAPI Schema to TypeScript Types Converter) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.