本文へスキップ

JSONスキーマからOpenAPI仕様への変換器 — Numio

JSON Schema(draft-04 以降)を OpenAPI 3.0 の Schema Object に変換します。"null" を含む type 配列は "nullable: true" に、const は要素が 1 つの enum に、examples は単一の example になります。

ペイロードを draft-07 のスキーマで検証しており、同じモデルを OpenAPI 3.0 ドキュメントの components/schemas でも使いたい場合。

JSON Schema

Open API Schema

こんなときに使えます

  • ペイロードを draft-07 のスキーマで検証しており、同じモデルを OpenAPI 3.0 ドキュメントの components/schemas でも使いたい場合。
  • OpenAPI 3.0 のツールが "type": ["string", "null"] を受け付けず、null 許容フィールドを書き換える必要がある場合。

使い方

  1. JSON Schema パネルに JSON Schema を貼り付けます。送信前にページで解析するため、有効な JSON である必要があります。
  2. スキーマは /api/json-schema-to-openapi-schema に送信され、サーバーで変換されます。パネルにはその旨の通知が表示されます。
  3. Open API Schema パネルから結果をコピーし、OpenAPI ファイルの components/schemas の下に配置します。

JSON Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "kind": { "const": "invoice" },
    "total": { "type": ["number", "null"], "exclusiveMinimum": 0 },
    "notes": { "type": "string", "examples": ["Net 30"] }
  },
  "required": ["kind"]
}

OpenAPI 3.0 Schema Object

{
  "type": "object",
  "properties": {
    "kind": {
      "enum": [
        "invoice"
      ]
    },
    "total": {
      "type": "number",
      "exclusiveMinimum": true,
      "nullable": true,
      "minimum": 0
    },
    "notes": {
      "type": "string",
      "example": "Net 30"
    }
  },
  "required": [
    "kind"
  ]
}

仕様と制限

入力は変換のためにサーバーのルート(/api/json-schema-to-openapi-schema)に送信されます。ブラウザ内だけで処理されるわけではありません。Next.js の API ルートが受け付けるリクエストボディは、デフォルトで 1 MB までです。

$schema キーワードは削除されます。数値の exclusiveMinimum/exclusiveMaximum は、OpenAPI 3.0 の形式である minimum/maximum とブール値のフラグに書き換えられます。

$ref の値はそのまま残り、definitions は components/schemas に移動されないため、参照パスは自分で修正する必要があります。

変換先は OpenAPI 3.0 です。OpenAPI 3.1 は JSON Schema をそのまま使うため、通常は変換不要です。

FAQ

null 許容の型はどう変換されますか?

["number", "null"] のような type 配列は、例のように "type": "number" と "nullable": true になります。

$ref 参照は解決されますか?

いいえ。ページは参照を展開しません。"$ref": "#/definitions/Tag" と definitions ブロックはそのままコピーされます。

const と examples はどうなりますか?

const は値が 1 つの enum になり、examples 配列はその最初の要素を使った単一の example に置き換えられます。

仕様を確認する