OpenAPI 3.1の新機能とJSON Schemaとの整合

JSON Schema 2020-12の完全サポート、webhooksセクション、nullableの型配列への置き換え、constキーワード、if/then/elseスキーマを含むOpenAPI 3.1の3.0からの改善を探索。

Advanced Features

詳細な説明

OpenAPI 3.1の新機能

OpenAPI 3.1はJSON Schema 2020-12と仕様を整合させる重要なアップデートです。強力なスキーマ機能をもたらし、OpenAPIとJSON Schemaの関係を簡素化します。

JSON Schema完全互換

最大の変更:OpenAPI 3.1のスキーマは有効なJSON Schema 2020-12です:

# OpenAPI 3.0(カスタムnullable)
name:
  type: string
  nullable: true

# OpenAPI 3.1(JSON Schema標準)
name:
  type: [string, "null"]

型配列

nullable を型配列で置き換え:

# 3.1
age:
  type: [integer, "null"]

# 複数の型
value:
  type: [string, integer]

constキーワード

enumなしの固定値:

# 3.1
type:
  const: user

Webhooksセクション

Webhook定義のための新しいトップレベルセクション。

条件付きスキーマ(if/then/else)

Address:
  type: object
  if:
    properties:
      country:
        const: US
  then:
    required: [state]
  else:
    required: [province]

3.0からの移行

主な変更点:

  1. openapi: "3.0.x"openapi: "3.1.0" に変更
  2. nullable: truetype: [original_type, "null"] に置き換え
  3. 単一値の enumconst に置き換え
  4. Webhookコールバックを新しい webhooks セクションに移動
  5. 必要に応じて $ref の兄弟キーワードを追加

ユースケース

OpenAPI 3.0から3.1にアップグレードするチームは、JSON Schemaの完全互換性の恩恵を受け、変換なしでバリデーション、ドキュメント、コード生成間でスキーマの再利用が可能になります。webhooksセクションはイベント駆動アーキテクチャにとって重要であり、条件付きスキーマ(if/then/else)は3.0では不可能だった複雑なビジネスルールのドキュメント化を可能にします。

試してみる — OpenAPI Editor & Viewer

フルツールを開く