以下に、OpenAPI 3.1.0 YAMLファイルの文法と構造を解説します。
OpenAPI 3.1.0 YAMLの基本構造
OpenAPI 3.1.0は、OpenAPI 3.0.0の機能を拡張し、JSON Schemaの完全な互換性などの新機能を追加しています。以下に基本的な構造を示します。
openapi: 3.1.0
info:
title: APIのタイトル
description: APIの詳細な説明
version: 1.0.0
servers:
- url: https://api.example.com/v1
description: 本番サーバ
paths:
/users:
get:
summary: すべてのユーザーを取得
responses:
'200':
description: 成功レスポンス
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
components:
schemas:
User:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
各セクションの説明
1. openapi
OpenAPIのバージョンを指定します。この例では3.1.0です。
2. info
APIに関する基本情報を提供します。
title: APIの名前description: APIの説明version: APIのバージョン
3. servers
APIが利用可能なサーバのリストを指定します。
url: サーバのURLdescription: サーバの説明
4. paths
APIの各エンドポイントとそのメソッドを定義します。
/users: エンドポイントのパスget: HTTPメソッドsummary: エンドポイントの概要responses: レスポンスの詳細'200': ステータスコードdescription: レスポンスの説明content: レスポンスの内容と形式application/json: レスポンスのコンテンツタイプschema: レスポンスデータのスキーマtype: データの型(この場合は配列)items: 配列の各要素のスキーマ参照
5. components
スキーマやセキュリティスキームなどの再利用可能なコンポーネントを定義します。
schemas: スキーマの定義User: スキーマ名type: オブジェクトの型properties: プロパティのリストid: プロパティ名type: プロパティの型(この場合は整数)
name: プロパティ名type: プロパティの型(この場合は文字列)
email: プロパティ名type: プロパティの型(この場合は文字列)
OpenAPI 3.1.0の新機能
- JSON Schema 2020-12の完全なサポート:
OpenAPI 3.1.0は、JSON Schema 2020-12の完全なサポートを提供します。これにより、スキーマ定義の柔軟性と表現力が向上します。 webhooks:
Webhookのサポートが追加され、サーバーからクライアントに対するコールバックを定義できるようになりました。- リファレンス解決:
$refを使用して、JSON Schemaと同様に外部ファイルへの参照をより柔軟に行うことができます。
例: ユーザー作成エンドポイントの追加(OpenAPI 3.1.0)
以下は、新しいユーザーを作成するためのPOST /usersエンドポイントを追加する例です。
openapi: 3.1.0
info:
title: Sample API
description: APIの詳細な説明
version: 1.0.0
servers:
- url: https://api.example.com/v1
description: 本番サーバ
paths:
/users:
post:
summary: 新しいユーザーを作成
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/User'
responses:
'201':
description: ユーザー作成成功
content:
application/json:
schema:
$ref: '#/components/schemas/User'
components:
schemas:
User:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
このエンドポイントは、新しいユーザーのデータを受け取り、それをもとにユーザーを作成します。リクエストボディとレスポンスのスキーマは、先に定義されたUserスキーマを参照しています。
このように、OpenAPI 3.1.0 YAMLファイルを使ってAPIの設計とドキュメントを詳細に記述できます。これにより、APIの構造や動作を明確に伝えることができます。


