ZeroTool Workbench

OpenAPI → TypeScript ジェネレーター

OpenAPI 3.0/3.1 仕様(YAML/JSON)からブラウザで TypeScript インターフェースを生成。$ref・oneOf/allOf・enum・nullable 対応、Zod スキーマも同時出力可。

100% クライアントサイド データはブラウザ外に出ません 無料 · 登録不要
OpenAPI 仕様(YAML / JSON)
TypeScript 出力

使い方

  1. OpenAPI 3.0.x または 3.1.x のドキュメント(YAML / JSON)を左側パネルに貼り付けます。
  2. 入力中は 300 ms デバウンスでリアルタイム生成されます。
  3. 必要に応じて ルート名前空間 の変更、全プロパティを optional 化、path 型の追加、Zod スキーマの同時出力を切り替えられます。
  4. コピー ボタンで TypeScript 出力全文をコピーします。

生成される内容

  • components/schemas:各スキーマが export interface または export type になります。オブジェクトは interface、プリミティブ / union / enum / intersection は type alias として出力されます。
  • $ref#/components/schemas/... への参照は型名で解決され、仕様の宣言順を維持します。
  • oneOf / anyOf:union 型 A | B | CallOf は intersection A & B になります。
  • enum:文字列または数値のリテラル union。
  • nullable:3.0 の nullable: true も 3.1 の type: ['X', 'null']X | null に変換。
  • format ヒントformat: date-time には ISO 8601 の JSDoc を付与し、format: binaryBlob になります。
  • additionalProperties:インデックスシグネチャまたは Record<string, T>

Path 型(任意)

path 型を含める を有効にすると、各オペレーションに型エンベロープが生成されます:

export namespace Components {
export namespace GetPetById {
  export interface PathParameters {
    id: number;
  }
  export type Response200 = Pet;
}
}

operationId がない場合は method と path から合成します(例:GetPetsId)。

Zod スキーマ(任意)

Zod スキーマを含める を有効にすると、各コンポーネントに対して XSchema を並行して出力します:

import { z } from 'zod';

export const PetSchema = z.object({
id: z.number().int(),
name: z.string(),
status: z.enum(["available", "pending", "sold"]),
});

OpenAPI 仕様ではなく既存の手書き TS 型から Zod を作りたい場合は TypeScript → Zod を使ってください。

関連ツール

FAQ

対応している OpenAPI のバージョンは?

3.0.x と 3.1.x の両方に対応します。OpenAPI 3.1 の `type: ['string', 'null']` は `string | null` として、OpenAPI 3.0 の `nullable: true` も同様に解釈されます。

Swagger 2.0 は使えますか?

設計上、Swagger 2.0 は非対応です。先に editor.swagger.io(Swagger Editor の内蔵コンバーター)で OpenAPI 3.x に移行してから貼り付けてください。

リモート $ref は解決されますか?

`#/components/schemas/...` という内部参照のみ解決します。外部 URL やファイルパスへの $ref は取得しません。参照先スキーマをインライン化するか、openapi-typescript CLI を使ってください。

仕様はサーバーに送られますか?

送られません。パース、$ref 解決、TypeScript 生成のすべてがブラウザ内で完結します。バックエンドなし、仕様内容のテレメトリ送信もありません。

Zod スキーマも一緒に得られますか?

はい。**Zod スキーマを含める** をオンにすると、TypeScript インターフェースに加えて `z.object({...})` も出力します。静的型と一致するランタイム検証が必要な場合に便利です。

「path 型を含める」は何をしますか?

各オペレーションごとに名前空間を生成し、`PathParameters`・`QueryParameters`・`RequestBody`・`Response200` / `Response201` などを公開します。DTO インターフェースだけ欲しい場合はオフのままで構いません。