OpenAPI 仕様
(以前はSwagger RESTful API Documentation Specification)
バージョン 2.0
このドキュメント内のキーワード「MUST」「MUST NOT」「REQUIRED」「SHALL」「SHALL NOT」「SHOULD」「SHOULD NOT」「RECOMMENDED」「MAY」「OPTIONAL」は、RFC 2119に記載されているように解釈されます。
Swagger仕様は、Apache License, Version 2.0の下でライセンスされています。
はじめに
Swagger™は、RESTful APIを記述および文書化するために使用されるプロジェクトです。
Swagger仕様は、このようなAPIを記述するために必要な一連のファイルを定義します。これらのファイルは、Swagger-UIプロジェクトによってAPIを表示するため、およびSwagger-Codegenによってさまざまな言語でクライアントを生成するために使用できます。テストツールなどの追加のユーティリティも、結果のファイルを活用できます。
改訂履歴
バージョン |
日付 |
備考 |
2.0 |
2014-09-08 |
Swagger 2.0のリリース |
1.2 |
2014-03-14 |
正式なドキュメントの初版。 |
1.1 |
2012-08-22 |
Swagger 1.1のリリース |
1.0 |
2011-08-10 |
Swagger仕様の初版 |
定義
パスのテンプレート化
パスのテンプレート化とは、中括弧({})を使用してURLパスのセクションをパスパラメータで置き換え可能としてマークすることを指します。
MIMEタイプ
MIMEタイプの定義は、いくつかのリソースにわたって分散しています。MIMEタイプの定義は、RFC 6838に準拠している必要があります。
MIMEタイプの定義の例
text/plain; charset=utf-8
application/json
application/vnd.github+json
application/vnd.github.v3+json
application/vnd.github.v3.raw+json
application/vnd.github.v3.text+json
application/vnd.github.v3.html+json
application/vnd.github.v3.full+json
application/vnd.github.v3.diff
application/vnd.github.v3.patch
HTTPステータスコード
HTTPステータスコードは、実行された操作のステータスを示すために使用されます。利用可能なステータスコードは、RFC 7231およびIANA Status Code Registryに記載されています。
仕様
Swagger仕様に従ってRESTful APIを記述するファイルは、JSONオブジェクトとして表現され、JSON標準に準拠しています。JSONのスーパーセットであるYAMLも、Swagger仕様ファイルを表すために使用できます。
たとえば、フィールドが配列値を持つと言われる場合、JSON配列表現が使用されます
{
"field" : [...]
}
APIはJSONを使用して記述されていますが、API自体にJSON入出力を強制するものではありません。
仕様内のすべてのフィールド名は**大文字と小文字を区別します**。
スキーマは2種類のフィールドを公開します。宣言された名前を持つ固定フィールドと、フィールド名に正規表現パターンを宣言するパターンフィールドです。パターンフィールドは、それぞれが固有の名前を持つ限り、複数回出現できます。
ファイル構造
APIのSwagger表現は単一のファイルで構成されます。ただし、定義の一部は、ユーザーの判断で個別のファイルに分割できます。これは、JSON Schema定義に従って、仕様の$ref
フィールドに適用されます。
慣例により、Swagger仕様ファイルはswagger.json
という名前で付けられます。
データ型
Swagger Specificationのプリミティブデータ型は、JSON-Schema Draft 4でサポートされている型に基づいています。モデルは、JSON Schema Draft 4のサブセットであるスキーマオブジェクトを使用して記述されます。
追加のプリミティブデータ型"file"
は、パラメーターオブジェクトとレスポンスオブジェクトによって、パラメーター型またはレスポンスをファイルとして設定するために使用されます。
プリミティブには、オプションの修飾子プロパティformat
があります。Swaggerは、使用されているデータ型をより詳細に定義するために、いくつかの既知のフォーマットを使用します。ただし、format
プロパティはオープンなstring
値のプロパティであり、ドキュメントのニーズをサポートするために任意の値を設定できます。「email」や「uuid」などのフォーマットは、この仕様で定義されていなくても使用できます。format
プロパティが付随しない型は、JSON Schemaの定義に従います(上記で定義されているfile
型を除く)。Swagger Specificationで定義されているフォーマットは次のとおりです。
一般的な名前 |
タイプ |
フォーマット |
コメント |
整数 |
整数 |
int32 |
符号付き32ビット |
長整数 |
整数 |
int64 |
符号付き64ビット |
浮動小数点数 |
数値 |
浮動小数点数 |
|
倍精度浮動小数点数 |
数値 |
倍精度浮動小数点数 |
|
文字列 |
文字列 |
|
|
バイト |
文字列 |
バイト |
base64エンコード文字 |
バイナリ |
文字列 |
バイナリ |
任意のオクテットシーケンス |
ブール値 |
ブール値 |
|
|
日付 |
文字列 |
日付 |
full-date - RFC3339で定義されている通り |
日時 |
文字列 |
日付と時刻 |
date-time - RFC3339で定義されている通り |
パスワード |
文字列 |
パスワード |
UIに入力を隠す必要があることを示唆するために使用されます。 |
スキーマ
Swaggerオブジェクト
これは、API仕様のルートドキュメントオブジェクトです。以前はResource ListingとAPI Declaration(バージョン1.2以前)であったものを1つのドキュメントに結合します。
固定フィールド
フィールド名 |
タイプ |
説明 |
swagger |
文字列 |
必須。 使用されているSwagger Specificationのバージョンを指定します。Swagger UIや他のクライアントがAPIリストを解釈するために使用できます。値は"2.0" である必要があります。 |
情報 |
情報オブジェクト |
必須。 APIに関するメタデータを提供します。クライアントは必要に応じてこのメタデータを使用できます。 |
ホスト |
文字列 |
APIを提供するホスト(名前またはIPアドレス)。これはホストのみであり、スキームやサブパスを含めるべきではありません。ポートを含めることはできます。host が含まれていない場合、ドキュメントを提供するホスト(ポートを含む)が使用されます。host はパスのテンプレート化をサポートしていません。 |
ベースパス |
文字列 |
APIが提供されるベースパスで、host に対する相対パスです。含まれていない場合、APIはhost 直下で提供されます。値は先頭のスラッシュ(/ )で始まる必要があります。basePath はパスのテンプレート化をサポートしていません。 |
スキーム |
[文字列 ] |
APIの転送プロトコル。値は、"http" 、"https" 、"ws" 、"wss" のリストから選択する必要があります。schemes が含まれていない場合、Swagger定義自体にアクセスするために使用されたスキームがデフォルトとして使用されます。 |
消費する |
[文字列 ] |
APIが消費できるMIMEタイプのリスト。これはすべてのAPIにグローバルですが、特定のAPI呼び出しで上書きできます。値はMIMEタイプに記載されているとおりである必要があります。 |
生成する |
[文字列 ] |
APIが生成できるMIMEタイプのリスト。これはすべてのAPIにグローバルですが、特定のAPI呼び出しで上書きできます。値はMIMEタイプに記載されているとおりである必要があります。 |
パス |
パスオブジェクト |
必須。 APIで利用可能なパスと操作。 |
定義 |
定義オブジェクト |
操作によって生成および消費されるデータ型を保持するオブジェクト。 |
パラメーター |
パラメーター定義オブジェクト |
操作全体で使用できるパラメーターを保持するオブジェクト。このプロパティは、すべての操作に対するグローバルパラメーターを**定義しません**。 |
レスポンス |
レスポンス定義オブジェクト |
操作全体で使用できるレスポンスを保持するオブジェクト。このプロパティは、すべての操作に対するグローバルレスポンスを**定義しません**。 |
セキュリティ定義 |
セキュリティ定義オブジェクト |
仕様全体で使用できるセキュリティスキーム定義。 |
セキュリティ |
[セキュリティ要件オブジェクト] |
API全体に適用されるセキュリティスキームの宣言。値のリストは、使用可能な代替セキュリティスキームを記述します(つまり、セキュリティ要件間に論理ORがあります)。個々の操作は、この定義をオーバーライドできます。 |
タグ |
[タグオブジェクト] |
追加のメタデータを持つ仕様で使用されるタグのリスト。タグの順序は、解析ツールによる順序を反映するために使用できます。 操作オブジェクトによって使用されるすべてのタグが宣言されている必要はありません。宣言されていないタグは、ランダムに、またはツールのロジックに基づいて整理される場合があります。リスト内の各タグ名は一意である必要があります。 |
外部ドキュメント |
外部ドキュメンテーションオブジェクト |
追加の外部ドキュメント。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
情報オブジェクト
このオブジェクトは、APIに関するメタデータを提供します。クライアントは必要に応じてこのメタデータを使用でき、便宜上Swagger-UIに表示することもできます。
固定フィールド
フィールド名 |
タイプ |
説明 |
タイトル |
文字列 |
必須。 アプリケーションのタイトル。 |
説明 |
文字列 |
アプリケーションの簡単な説明。GFM構文を使用してリッチテキスト表現にすることができます。 |
利用規約 |
文字列 |
APIの利用規約。 |
連絡先 |
連絡先オブジェクト |
公開されたAPIの連絡先情報。 |
ライセンス |
ライセンスオブジェクト |
公開されたAPIのライセンス情報。 |
バージョン |
文字列 |
必須 アプリケーションAPIのバージョンを提供します(仕様のバージョンと混同しないでください)。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
情報オブジェクトの例
{
"title": "Swagger Sample App",
"description": "This is a sample server Petstore server.",
"termsOfService": "https://swagger.dokyumento.jp/terms/",
"contact": {
"name": "API Support",
"url": "http://www.swagger.io/support",
"email": "[email protected]"
},
"license": {
"name": "Apache 2.0",
"url": "https://apache.dokyumento.jp/licenses/LICENSE-2.0.html"
},
"version": "1.0.1"
}
title: Swagger Sample App
description: This is a sample server Petstore server.
termsOfService: https://swagger.dokyumento.jp/terms/
contact:
name: API Support
url: http://www.swagger.io/support
email: [email protected]
license:
name: Apache 2.0
url: https://apache.dokyumento.jp/licenses/LICENSE-2.0.html
version: 1.0.1
公開されたAPIの連絡先情報。
固定フィールド
フィールド名 |
タイプ |
説明 |
名前 |
文字列 |
連絡担当者/組織の識別名。 |
URL |
文字列 |
連絡先情報を示すURL。URL形式である必要があります。 |
Eメール |
文字列 |
連絡担当者/組織のメールアドレス。メールアドレスの形式である必要があります。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
{
"name": "API Support",
"url": "http://www.swagger.io/support",
"email": "[email protected]"
}
name: API Support
url: http://www.swagger.io/support
email: [email protected]
ライセンスオブジェクト
公開されたAPIのライセンス情報。
固定フィールド
フィールド名 |
タイプ |
説明 |
名前 |
文字列 |
必須。 APIに使用されるライセンス名。 |
URL |
文字列 |
APIに使用されるライセンスへのURL。URLの形式である必要があります。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
ライセンスオブジェクトの例
{
"name": "Apache 2.0",
"url": "https://apache.dokyumento.jp/licenses/LICENSE-2.0.html"
}
name: Apache 2.0
url: https://apache.dokyumento.jp/licenses/LICENSE-2.0.html
パスオブジェクト
個々のエンドポイントへの相対パスを保持します。パスはbasePath
に追加されて完全なURLが構築されます。ACL制約のため、パスが空になる場合があります。
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
/{パス} |
パス項目オブジェクト |
個々のエンドポイントへの相対パス。フィールド名はスラッシュで始まる必要があります。パスはbasePath に追加されて完全なURLが構築されます。パスのテンプレート化が許可されています。 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
パスオブジェクトの例
{
"/pets": {
"get": {
"description": "Returns all pets from the system that the user has access to",
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "A list of pets.",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/pet"
}
}
}
}
}
}
}
/pets:
get:
description: Returns all pets from the system that the user has access to
produces:
- application/json
responses:
'200':
description: A list of pets.
schema:
type: array
items:
$ref: '#/definitions/pet'
パス項目オブジェクト
単一のパスで利用可能な操作を記述します。ACL制約により、パスアイテムは空になる場合があります。パス自体はドキュメントビューアに公開されますが、利用可能な操作とパラメータは表示されません。
固定フィールド
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
パス項目オブジェクトの例
{
"get": {
"description": "Returns pets based on ID",
"summary": "Find pets by ID",
"operationId": "getPetsById",
"produces": [
"application/json",
"text/html"
],
"responses": {
"200": {
"description": "pet response",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Pet"
}
}
},
"default": {
"description": "error payload",
"schema": {
"$ref": "#/definitions/ErrorModel"
}
}
}
},
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of pet to use",
"required": true,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "csv"
}
]
}
get:
description: Returns pets based on ID
summary: Find pets by ID
operationId: getPetsById
produces:
- application/json
- text/html
responses:
'200':
description: pet response
schema:
type: array
items:
$ref: '#/definitions/Pet'
default:
description: error payload
schema:
$ref: '#/definitions/ErrorModel'
parameters:
- name: id
in: path
description: ID of pet to use
required: true
type: array
items:
type: string
collectionFormat: csv
オペレーションオブジェクト
パス上の単一のAPI操作を記述します。
固定フィールド
フィールド名 |
タイプ |
説明 |
タグ |
[文字列 ] |
APIドキュメント制御用のタグのリスト。タグは、リソースまたはその他の修飾子による操作の論理グループ化に使用できます。 |
概要 |
文字列 |
操作が何をするかの簡単な要約。swagger-uiでの最大可読性を実現するには、このフィールドは120文字未満である必要があります。 |
説明 |
文字列 |
操作動作の詳細な説明。GFM構文を使用してリッチテキスト表現にすることができます。 |
外部ドキュメント |
外部ドキュメンテーションオブジェクト |
この操作に関する追加の外部ドキュメント。 |
operationId |
文字列 |
操作を識別するために使用される一意の文字列。IDは、APIで記述されているすべての操作の中で一意である必要があります。ツールやライブラリはoperationIdを使用して操作を一意に識別する可能性があるため、一般的なプログラミングの命名規則に従うことをお勧めします。 |
消費する |
[文字列 ] |
操作が消費できるMIMEタイプのリスト。これは、Swaggerオブジェクトのconsumes 定義を上書きします。グローバル定義をクリアするために空の値を使用することもできます。値はMIMEタイプに記載されているとおりである必要があります。 |
生成する |
[文字列 ] |
操作が生成できるMIMEタイプのリスト。これは、Swaggerオブジェクトのproduces 定義を上書きします。グローバル定義をクリアするために空の値を使用することもできます。値はMIMEタイプに記載されているとおりである必要があります。 |
パラメーター |
[パラメータオブジェクト | 参照オブジェクト] |
この操作に適用可能なパラメータのリスト。パラメータがすでにパスアイテムで定義されている場合、新しい定義はそれを上書きしますが、削除することはできません。リストには重複するパラメータを含めることはできません。一意のパラメータは、名前と場所の組み合わせで定義されます。リストは、Swaggerオブジェクトのパラメータで定義されているパラメータにリンクするために参照オブジェクトを使用できます。最大で1つの「body」パラメータが存在できます。 |
レスポンス |
レスポンスオブジェクト |
必須。 この操作の実行によって返される可能性のある応答のリスト。 |
スキーム |
[文字列 ] |
操作の転送プロトコル。値は、"http" 、"https" 、"ws" 、"wss" のリストから選択する必要があります。この値は、Swaggerオブジェクトのschemes 定義を上書きします。 |
非推奨 |
ブール値 |
この操作が非推奨であることを宣言します。宣言された操作の使用は控えるべきです。デフォルト値はfalse です。 |
セキュリティ |
[セキュリティ要件オブジェクト] |
この操作に適用されるセキュリティスキームの宣言。値のリストは、使用できる代替セキュリティスキームを記述します(つまり、セキュリティ要件間に論理ORがあります)。この定義は、宣言された最上位のsecurity を上書きします。最上位のセキュリティ宣言を削除するには、空の配列を使用できます。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
オペレーションオブジェクトの例
{
"tags": [
"pet"
],
"summary": "Updates a pet in the store with form data",
"description": "",
"operationId": "updatePetWithForm",
"consumes": [
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"application/xml"
],
"parameters": [
{
"name": "petId",
"in": "path",
"description": "ID of pet that needs to be updated",
"required": true,
"type": "string"
},
{
"name": "name",
"in": "formData",
"description": "Updated name of the pet",
"required": false,
"type": "string"
},
{
"name": "status",
"in": "formData",
"description": "Updated status of the pet",
"required": false,
"type": "string"
}
],
"responses": {
"200": {
"description": "Pet updated."
},
"405": {
"description": "Invalid input"
}
},
"security": [
{
"petstore_auth": [
"write:pets",
"read:pets"
]
}
]
}
tags:
- pet
summary: Updates a pet in the store with form data
description: ""
operationId: updatePetWithForm
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
- application/xml
parameters:
- name: petId
in: path
description: ID of pet that needs to be updated
required: true
type: string
- name: name
in: formData
description: Updated name of the pet
required: false
type: string
- name: status
in: formData
description: Updated status of the pet
required: false
type: string
responses:
'200':
description: Pet updated.
'405':
description: Invalid input
security:
- petstore_auth:
- write:pets
- read:pets
外部ドキュメンテーションオブジェクト
拡張ドキュメントのために外部リソースを参照することを許可します。
固定フィールド
フィールド名 |
タイプ |
説明 |
説明 |
文字列 |
ターゲットドキュメントの簡単な説明。GFM構文を使用してリッチテキスト表現にすることができます。 |
URL |
文字列 |
必須。 ターゲットドキュメントのURL。値はURL形式である必要があります。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
外部ドキュメンテーションオブジェクトの例
{
"description": "Find more info here",
"url": "https://swagger.dokyumento.jp"
}
description: Find more info here
url: https://swagger.dokyumento.jp
パラメーターオブジェクト
単一の操作パラメータを記述します。
一意のパラメータは、名前と場所の組み合わせで定義されます。
5つの可能なパラメータタイプがあります。
- パス - パスのテンプレート化と組み合わせて使用され、パラメータ値は実際に操作のURLの一部です。これにはAPIのホストやベースパスは含まれません。たとえば、
/items/{itemId}
では、パスパラメータはitemId
です。
- クエリ - URLに追加されるパラメータ。例えば、
/items?id=###
の場合、クエリパラメータはid
です。
- ヘッダー - リクエストの一部として期待されるカスタムヘッダー。
- Body - HTTPリクエストに追加されるペイロード。ペイロードは1つしか存在できないため、ボディパラメータも**1つ**しか存在できません。ボディパラメータの名前はパラメータ自体には影響せず、ドキュメンテーション目的でのみ使用されます。フォームパラメータもペイロードに含まれるため、同じ操作に対してボディパラメータとフォームパラメータを同時に宣言することはできません。
- フォーム - HTTPリクエストのペイロードを記述するために使用され、
application/x-www-form-urlencoded
、multipart/form-data
、またはその両方がリクエストのコンテンツタイプ(Swaggerの定義では、操作のconsumes
プロパティ)として使用されます。これはファイルを送信するために使用できる唯一のパラメータタイプであり、file
タイプをサポートします。フォームパラメータはペイロードで送信されるため、同じ操作に対してボディパラメータと一緒に宣言することはできません。フォームパラメータは使用されるコンテンツタイプに基づいて異なる形式を持ちます(詳細については、http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4を参照)。
application/x-www-form-urlencoded
- クエリパラメータの形式に似ていますが、ペイロードとして使用されます。たとえば、foo=1&bar=swagger
の場合、foo
とbar
の両方がフォームパラメータです。これは通常、転送される単純なパラメータに使用されます。
multipart/form-data
- 各パラメータは、内部ヘッダーを持つペイロードのセクションを取ります。たとえば、ヘッダーContent-Disposition: form-data; name="submit-name"
の場合、パラメータの名前はsubmit-name
です。このタイプのフォームパラメータは、ファイルの転送によく使用されます。
固定フィールド
フィールド名 |
タイプ |
説明 |
名前 |
文字列 |
必須。 パラメータの名前。パラメータ名は**大文字と小文字を区別します**。in が"path" の場合、name フィールドはパスオブジェクトのパスフィールドの関連するパスセグメントに対応する必要があります。パスのテンプレート化の詳細については、そちらを参照してください。- その他のすべてのケースでは、
name はin プロパティに基づいて使用されるパラメータ名に対応します。
|
イン |
文字列 |
必須。 パラメータの場所。可能な値は「query」、「header」、「path」、「formData」、または「body」です。 |
説明 |
文字列 |
パラメータの簡単な説明。使用例が含まれる場合があります。GFM構文を使用してリッチテキスト表現にすることができます。 |
必須 |
ブール値 |
このパラメータが必須かどうかを決定します。パラメータが「path」にin である場合、このプロパティは**必須**であり、その値はtrue でなければなりません。それ以外の場合、このプロパティは含めてもよく、そのデフォルト値はfalse です。 |
in
が"body"
の場合
フィールド名 |
タイプ |
説明 |
スキーマ |
スキーマオブジェクト |
必須。 ボディパラメータに使用される型を定義するスキーマ。 |
in
が"body"
以外の値である場合
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
パラメーターオブジェクトの例
ボディパラメーター
参照スキーマ定義(通常はモデル定義用)を持つボディパラメータ
{
"name": "user",
"in": "body",
"description": "user to add to the system",
"required": true,
"schema": {
"$ref": "#/definitions/User"
}
}
name: user
in: body
description: user to add to the system
required: true
schema:
$ref: '#/definitions/User'
文字列値の配列であるボディパラメータ
{
"name": "user",
"in": "body",
"description": "user to add to the system",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
name: user
in: body
description: user to add to the system
required: true
schema:
type: array
items:
type: string
その他のパラメーター
64ビット整数値の配列を持つヘッダーパラメータ
{
"name": "token",
"in": "header",
"description": "token to be passed as a header",
"required": true,
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"collectionFormat": "csv"
}
name: token
in: header
description: token to be passed as a header
required: true
type: array
items:
type: integer
format: int64
collectionFormat: csv
文字列値のパスパラメータ
{
"name": "username",
"in": "path",
"description": "username to fetch",
"required": true,
"type": "string"
}
name: username
in: path
description: username to fetch
required: true
type: string
クエリパラメータを繰り返すことで複数の値を許可する、文字列値のオプションのクエリパラメータ
{
"name": "id",
"in": "query",
"description": "ID of the object to fetch",
"required": false,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi"
}
name: id
in: query
description: ID of the object to fetch
required: false
type: array
items:
type: string
collectionFormat: multi
ファイルアップロード用のファイルタイプを持つフォームデータ
{
"name": "avatar",
"in": "formData",
"description": "The avatar of the user",
"required": true,
"type": "file"
}
name: avatar
in: formData
description: The avatar of the user
required: true
type: file
アイテムオブジェクト
JSON-Schemaのアイテムオブジェクトの限定されたサブセット。これは、"body"
にin
として配置されていないパラメータ定義によって使用されます。
固定フィールド
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
アイテムオブジェクトの例
アイテムは文字列型で、最小長は2文字でなければなりません。
{
"type": "string",
"minLength": 2
}
type: string
minLength: 2
配列の配列で、内部配列は整数型であり、数値は0から63(両端を含む)の間でなければなりません。
{
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 63
}
}
type: array
items:
type: integer
minimum: 0
maximum: 63
レスポンスオブジェクト
操作の予期される応答のコンテナ。コンテナはHTTP応答コードを予期される応答にマッピングします。HTTP応答コードは事前にすべてを知ることはできないため、ドキュメントがすべての可能なHTTP応答コードをカバーする必要があるとは期待されません。ただし、成功した操作応答と既知のエラーをドキュメントがカバーすることは期待されます。
default
は、仕様で個別にカバーされていないすべてのHTTPコードのデフォルト応答オブジェクトとして使用できます。
Responses Object
は少なくとも1つの応答コードを含んでいなければならず、それは成功した操作呼び出しに対する応答であるべきです。
固定フィールド
パターン化されたフィールド
レスポンスオブジェクトの例
成功した操作に対する200レスポンスと、その他のデフォルトレスポンス(エラーを意味する)
{
"200": {
"description": "a pet to be returned",
"schema": {
"$ref": "#/definitions/Pet"
}
},
"default": {
"description": "Unexpected error",
"schema": {
"$ref": "#/definitions/ErrorModel"
}
}
}
'200':
description: a pet to be returned
schema:
$ref: '#/definitions/Pet'
default:
description: Unexpected error
schema:
$ref: '#/definitions/ErrorModel'
レスポンスオブジェクト
API操作からの単一の応答を記述します。
固定フィールド
フィールド名 |
タイプ |
説明 |
説明 |
文字列 |
必須。 レスポンスの簡単な説明。GFM構文を使用してリッチテキスト表現にすることができます。 |
スキーマ |
スキーマオブジェクト |
応答構造の定義。これはプリミティブ、配列、またはオブジェクトにすることができます。このフィールドが存在しない場合、応答の一部としてコンテンツが返されないことを意味します。スキーマオブジェクトの拡張として、そのルートtype 値は"file" でも構いません。これには関連するproduces MIMEタイプが付随するべきです。 |
ヘッダー |
ヘッダーオブジェクト |
応答とともに送信されるヘッダーのリスト。 |
例 |
例オブジェクト |
応答メッセージの例。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
レスポンスオブジェクトの例
複雑な型の配列の応答
{
"description": "A complex object array response",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/VeryComplexType"
}
}
}
description: A complex object array response
schema:
type: array
items:
$ref: '#/definitions/VeryComplexType'
文字列型の応答
{
"description": "A simple string response",
"schema": {
"type": "string"
}
}
description: A simple string response
schema:
type: string
ヘッダー付きレスポンス
{
"description": "A simple string response",
"schema": {
"type": "string"
},
"headers": {
"X-Rate-Limit-Limit": {
"description": "The number of allowed requests in the current period",
"type": "integer"
},
"X-Rate-Limit-Remaining": {
"description": "The number of remaining requests in the current period",
"type": "integer"
},
"X-Rate-Limit-Reset": {
"description": "The number of seconds left in the current period",
"type": "integer"
}
}
}
description: A simple string response
schema:
type: string
headers:
X-Rate-Limit-Limit:
description: The number of allowed requests in the current period
type: integer
X-Rate-Limit-Remaining:
description: The number of remaining requests in the current period
type: integer
X-Rate-Limit-Reset:
description: The number of seconds left in the current period
type: integer
戻り値のない応答
{
"description": "object created"
}
description: object created
応答の一部として送信できるヘッダーをリストします。
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
{名前} |
ヘッダーオブジェクト |
プロパティの名前はヘッダーの名前に対応します。値はヘッダーのタイプを記述します。 |
レート制限ヘッダー
{
"X-Rate-Limit-Limit": {
"description": "The number of allowed requests in the current period",
"type": "integer"
},
"X-Rate-Limit-Remaining": {
"description": "The number of remaining requests in the current period",
"type": "integer"
},
"X-Rate-Limit-Reset": {
"description": "The number of seconds left in the current period",
"type": "integer"
}
}
X-Rate-Limit-Limit:
description: The number of allowed requests in the current period
type: integer
X-Rate-Limit-Remaining:
description: The number of remaining requests in the current period
type: integer
X-Rate-Limit-Reset:
description: The number of seconds left in the current period
type: integer
例オブジェクト
操作応答の例を共有できるようにします。
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
{MIMEタイプ} |
Any |
プロパティの名前は、操作のproduces 値のいずれか(暗黙的または継承されたもの)でなければなりません。値は、そのような応答がどのようなものになるかの例であるべきです。 |
例オブジェクトの例
Petデータ型のapplication/json mimetypeに対する応答例
{
"application/json": {
"name": "Puma",
"type": "Dog",
"color": "Black",
"gender": "Female",
"breed": "Mixed"
}
}
application/json:
name: Puma
type: Dog
color: Black
gender: Female
breed: Mixed
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
整数型のシンプルなヘッダー
{
"description": "The number of allowed requests in the current period",
"type": "integer"
}
description: The number of allowed requests in the current period
type: integer
タグオブジェクト
操作オブジェクトで使用される単一のタグにメタデータを追加できるようにします。使用されるタグごとにタグオブジェクトを持つことは必須ではありません。
固定フィールド
フィールド名 |
タイプ |
説明 |
名前 |
文字列 |
必須。 タグの名前。 |
説明 |
文字列 |
タグの簡単な説明。GFM構文を使用してリッチテキスト表現にすることができます。 |
外部ドキュメント |
外部ドキュメンテーションオブジェクト |
このタグの追加の外部ドキュメント。 |
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
タグオブジェクトの例
{
"name": "pet",
"description": "Pets operations"
}
name: pet
description: Pets operations
参照オブジェクト
仕様内の他の定義を参照できるようにするシンプルなオブジェクト。再利用のために最上位で定義されているパラメータや応答を参照するために使用できます。
参照オブジェクトは、その値としてJSONポインタを使用するJSON参照です。この仕様では、正規の参照解除のみがサポートされています。
固定フィールド
フィールド名 |
タイプ |
説明 |
$ref |
文字列 |
必須。 参照文字列。 |
参照オブジェクトの例
{
"$ref": "#/definitions/Pet"
}
$ref: '#/definitions/Pet'
相対スキーマファイルの例
{
"$ref": "Pet.json"
}
$ref: 'Pet.yaml'
埋め込みスキーマを含む相対ファイルの例
{
"$ref": "definitions.json#/Pet"
}
$ref: 'definitions.yaml#/Pet'
スキーマオブジェクト
Schema Objectは、入力および出力データ型の定義を可能にします。これらの型はオブジェクトだけでなく、プリミティブや配列も可能です。このオブジェクトはJSON Schema Specification Draft 4に基づいており、その定義済みサブセットを使用しています。このサブセットに加えて、より完全なドキュメンテーションを可能にするために、この仕様によって拡張機能が提供されています。
プロパティの詳細については、JSON Schema CoreおよびJSON Schema Validationを参照してください。特に明記されていない限り、プロパティ定義はここで参照されているJSON Schema仕様に従います。
以下のプロパティはJSON Schema定義から直接取得され、同じ仕様に従います。
- $ref - JSON Referenceとして
- フォーマット(詳細についてはデータ型フォーマットを参照)
- タイトル
- 説明(GFM構文を使用してリッチテキスト表現にすることができます)
- デフォルト(JSON Schemaとは異なり、値はSchema Objectの定義された型に準拠する必要があります)
- multipleOf
- 最大
- 排他的最大
- 最小
- 排他的最小
- 最大長
- 最小長
- パターン
- maxItems
- minItems
- uniqueItems
- maxProperties
- minProperties
- 必須
- 列挙型
- タイプ
以下のプロパティはJSON Schema定義から取得されていますが、その定義はSwagger Specificationに合わせて調整されています。元の定義がJSON Schema定義を参照している箇所では、代わりにSchema Object定義が使用されている点を除けば、その定義はJSON Schemaと同じです。
JSON Schemaサブセットフィールド以外にも、以下のフィールドはスキーマのさらなるドキュメントに使用できます。
固定フィールド
フィールド名 |
タイプ |
説明 |
差別化要因 |
文字列 |
ポリモーフィズムのサポートを追加します。discriminatorは、このスキーマを継承する他のスキーマを区別するために使用されるスキーマプロパティ名です。使用されるプロパティ名は、このスキーマで定義され、required プロパティリストに存在する必要があります。使用される場合、値は、このスキーマまたはそれを継承する任意のスキーマの名前である必要があります。 |
読み取り専用 |
ブール値 |
スキーマ"properties" 定義にのみ関連します。プロパティを「読み取り専用」として宣言します。これは、応答の一部として送信されることは許可されるが、要求の一部として送信されることは許可されないことを意味します。readOnly がtrue としてマークされたプロパティは、定義されたスキーマのrequired リストに含めるべきではありません。デフォルト値はfalse です。 |
xml |
XMLオブジェクト |
これはプロパティスキーマでのみ使用できます。ルートスキーマには影響しません。このプロパティのXML表現形式を記述するための追加のメタデータを追加します。 |
外部ドキュメント |
外部ドキュメンテーションオブジェクト |
このスキーマに関する追加の外部ドキュメント。 |
例 |
Any |
このスキーマのインスタンスの例を含めるための自由形式のプロパティ。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
構成と継承(ポリモーフィズム)
Swaggerは、JSON SchemaのallOf
プロパティを使用してモデル定義を結合および拡張することを許可し、実質的にモデル構成を提供します。allOf
は、**独立して**検証されるが、結合されて単一のオブジェクトを構成するオブジェクト定義の配列を受け取ります。
構成はモデルの拡張性を提供しますが、モデル間の階層は意味しません。ポリモーフィズムをサポートするために、Swaggerはdiscriminator
フィールドのサポートを追加します。使用される場合、discriminator
は、モデルの構造を検証するためにどのスキーマ定義が使用されるかを決定するプロパティの名前になります。したがって、discriminator
フィールドは必須フィールドである必要があります。選択されたプロパティの値は、definitions
プロパティの下のモデルに与えられたフレンドリ名である必要があります。したがって、与えられたIDを持たないインラインスキーマ定義は、ポリモーフィズムでは**使用できません**。
XMLモデリング
xmlプロパティは、JSON定義をXMLに変換する際の追加定義を可能にします。XMLオブジェクトには、利用可能なオプションに関する追加情報が含まれています。
スキーマオブジェクトの例
プリミティブサンプル
以前のバージョンのSwaggerとは異なり、スキーマ定義はプリミティブや配列も記述するために使用できます。
{
"type": "string",
"format": "email"
}
type: string
format: email
シンプルなモデル
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"address": {
"$ref": "#/definitions/Address"
},
"age": {
"type": "integer",
"format": "int32",
"minimum": 0
}
}
}
type: object
required:
- name
properties:
name:
type: string
address:
$ref: '#/definitions/Address'
age:
type: integer
format: int32
minimum: 0
マップ/辞書プロパティを持つモデル
シンプルな文字列から文字列へのマッピングの場合
{
"type": "object",
"additionalProperties": {
"type": "string"
}
}
type: object
additionalProperties:
type: string
文字列からモデルへのマッピングの場合
{
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/ComplexModel"
}
}
type: object
additionalProperties:
$ref: '#/definitions/ComplexModel'
例付きモデル
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
},
"required": [
"name"
],
"example": {
"name": "Puma",
"id": 1
}
}
type: object
properties:
id:
type: integer
format: int64
name:
type: string
required:
- name
example:
name: Puma
id: 1
構成を持つモデル
{
"definitions": {
"ErrorModel": {
"type": "object",
"required": [
"message",
"code"
],
"properties": {
"message": {
"type": "string"
},
"code": {
"type": "integer",
"minimum": 100,
"maximum": 600
}
}
},
"ExtendedErrorModel": {
"allOf": [
{
"$ref": "#/definitions/ErrorModel"
},
{
"type": "object",
"required": [
"rootCause"
],
"properties": {
"rootCause": {
"type": "string"
}
}
}
]
}
}
}
definitions:
ErrorModel:
type: object
required:
- message
- code
properties:
message:
type: string
code:
type: integer
minimum: 100
maximum: 600
ExtendedErrorModel:
allOf:
- $ref: '#/definitions/ErrorModel'
- type: object
required:
- rootCause
properties:
rootCause:
type: string
ポリモーフィズムをサポートするモデル
{
"definitions": {
"Pet": {
"type": "object",
"discriminator": "petType",
"properties": {
"name": {
"type": "string"
},
"petType": {
"type": "string"
}
},
"required": [
"name",
"petType"
]
},
"Cat": {
"description": "A representation of a cat",
"allOf": [
{
"$ref": "#/definitions/Pet"
},
{
"type": "object",
"properties": {
"huntingSkill": {
"type": "string",
"description": "The measured skill for hunting",
"default": "lazy",
"enum": [
"clueless",
"lazy",
"adventurous",
"aggressive"
]
}
},
"required": [
"huntingSkill"
]
}
]
},
"Dog": {
"description": "A representation of a dog",
"allOf": [
{
"$ref": "#/definitions/Pet"
},
{
"type": "object",
"properties": {
"packSize": {
"type": "integer",
"format": "int32",
"description": "the size of the pack the dog is from",
"default": 0,
"minimum": 0
}
},
"required": [
"packSize"
]
}
]
}
}
}
definitions:
Pet:
type: object
discriminator: petType
properties:
name:
type: string
petType:
type: string
required:
- name
- petType
Cat:
description: A representation of a cat
allOf:
- $ref: '#/definitions/Pet'
- type: object
properties:
huntingSkill:
type: string
description: The measured skill for hunting
default: lazy
enum:
- clueless
- lazy
- adventurous
- aggressive
required:
- huntingSkill
Dog:
description: A representation of a dog
allOf:
- $ref: '#/definitions/Pet'
- type: object
properties:
packSize:
type: integer
format: int32
description: the size of the pack the dog is from
default: 0
minimum: 0
required:
- packSize
XMLオブジェクト
よりきめ細かいXMLモデル定義を可能にするメタデータオブジェクト。
配列を使用する場合、XML要素名は(単数形/複数形のために)**推測されず**、その情報を追加するためにname
プロパティを使用する必要があります。期待される動作については例を参照してください。
固定フィールド
フィールド名 |
タイプ |
説明 |
名前 |
文字列 |
記述されたスキーマプロパティに使用される要素/属性の名前を置き換えます。Items Object (items ) 内で定義されている場合、リスト内の個々のXML要素の名前に影響します。type がarray (items の外側) とともに定義されている場合、ラッパー要素に影響し、wrapped がtrue の場合にのみ影響します。wrapped がfalse の場合、無視されます。 |
ネームスペース |
文字列 |
名前空間定義のURL。値はURL形式であるべきです。 |
プレフィックス |
文字列 |
名前に使用するプレフィックス。 |
属性 |
ブール値 |
プロパティ定義が要素ではなく属性に変換されるかどうかを宣言します。デフォルト値はfalse です。 |
包まれた |
ブール値 |
配列定義にのみ使用できます。配列がラップされているか(例:<books><book/><book/></books> )、ラップされていないか(<book/><book/> )を示します。デフォルト値はfalse です。この定義は、type がarray と同時に定義されている場合にのみ有効です(items の外側)。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
XMLオブジェクトの例
XMLオブジェクト定義の例は、スキーマオブジェクトのプロパティ定義内に、XML表現のサンプルとともに含まれています。
XML要素なし
基本的な文字列プロパティ
{
"animals": {
"type": "string"
}
}
animals:
type: string
<animals>...</animals>
基本的な文字列配列プロパティ(wrapped
はデフォルトでfalse
です)
{
"animals": {
"type": "array",
"items": {
"type": "string"
}
}
}
animals:
type: array
items:
type: string
<animals>...</animals>
<animals>...</animals>
<animals>...</animals>
XML名の置換
{
"animals": {
"type": "string",
"xml": {
"name": "animal"
}
}
}
animals:
type: string
xml:
name: animal
<animal>...</animal>
XML属性、プレフィックス、および名前空間
この例では、完全なモデル定義が示されています。
{
"Person": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int32",
"xml": {
"attribute": true
}
},
"name": {
"type": "string",
"xml": {
"namespace": "https://swagger.dokyumento.jp/schema/sample",
"prefix": "sample"
}
}
}
}
}
Person:
type: object
properties:
id:
type: integer
format: int32
xml:
attribute: true
name:
type: string
xml:
namespace: https://swagger.dokyumento.jp/schema/sample
prefix: sample
<Person id="123">
<sample:name xmlns:sample="https://swagger.dokyumento.jp/schema/sample">example</sample:name>
</Person>
XML配列
要素名の変更
{
"animals": {
"type": "array",
"items": {
"type": "string",
"xml": {
"name": "animal"
}
}
}
}
animals:
type: array
items:
type: string
xml:
name: animal
<animal>value</animal>
<animal>value</animal>
外部のname
プロパティはXMLに影響しません。
{
"animals": {
"type": "array",
"items": {
"type": "string",
"xml": {
"name": "animal"
}
},
"xml": {
"name": "aliens"
}
}
}
animals:
type: array
items:
type: string
xml:
name: animal
xml:
name: aliens
<animal>value</animal>
<animal>value</animal>
配列がラップされていても、名前が明示的に定義されていない場合、内部的にも外部的にも同じ名前が使用されます。
{
"animals": {
"type": "array",
"items": {
"type": "string"
},
"xml": {
"wrapped": true
}
}
}
animals:
type: array
items:
type: string
xml:
wrapped: true
<animals>
<animals>value</animals>
<animals>value</animals>
</animals>
上記の例を解決するには、以下の定義を使用できます。
{
"animals": {
"type": "array",
"items": {
"type": "string",
"xml": {
"name": "animal"
}
},
"xml": {
"wrapped": true
}
}
}
animals:
type: array
items:
type: string
xml:
name: animal
xml:
wrapped: true
<animals>
<animal>value</animal>
<animal>value</animal>
</animals>
内部名と外部名の両方に影響を与える
{
"animals": {
"type": "array",
"items": {
"type": "string",
"xml": {
"name": "animal"
}
},
"xml": {
"name": "aliens",
"wrapped": true
}
}
}
animals:
type: array
items:
type: string
xml:
name: animal
xml:
name: aliens
wrapped: true
<aliens>
<animal>value</animal>
<animal>value</animal>
</aliens>
外部要素を変更しても内部要素を変更しない場合
{
"animals": {
"type": "array",
"items": {
"type": "string"
},
"xml": {
"name": "aliens",
"wrapped": true
}
}
}
animals:
type: array
items:
type: string
xml:
name: aliens
wrapped: true
<aliens>
<aliens>value</aliens>
<aliens>value</aliens>
</aliens>
定義オブジェクト
操作によって消費および生成できるデータ型を保持するオブジェクト。これらのデータ型はプリミティブ、配列、またはモデルにすることができます。
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
{名前} |
スキーマオブジェクト |
単一の定義で、「名前」をそれが定義するスキーマにマッピングします。 |
定義オブジェクトの例
{
"Category": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
}
},
"Tag": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
}
}
}
Category:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
Tag:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
パラメーター定義オブジェクト
操作間で再利用されるパラメーターを保持するオブジェクト。パラメーター定義は、ここで定義されているパラメーターを参照できます。
これは、グローバル操作パラメータを**定義しません**。
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
{名前} |
パラメーターオブジェクト |
単一のパラメータ定義で、「名前」をそれが定義するパラメータにマッピングします。 |
パラメーター定義オブジェクトの例
{
"skipParam": {
"name": "skip",
"in": "query",
"description": "number of items to skip",
"required": true,
"type": "integer",
"format": "int32"
},
"limitParam": {
"name": "limit",
"in": "query",
"description": "max records to return",
"required": true,
"type": "integer",
"format": "int32"
}
}
skipParam:
name: skip
in: query
description: number of items to skip
required: true
type: integer
format: int32
limitParam:
name: limit
in: query
description: max records to return
required: true
type: integer
format: int32
レスポンス定義オブジェクト
操作全体で再利用されるレスポンスを保持するオブジェクト。レスポンス定義は、ここで定義されているレスポンスを参照できます。
これは、グローバル操作応答を**定義しません**。
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
{名前} |
レスポンスオブジェクト |
単一のレスポンス定義で、「名前」をそれが定義するレスポンスにマッピングします。 |
レスポンス定義オブジェクトの例
{
"NotFound": {
"description": "Entity not found."
},
"IllegalInput": {
"description": "Illegal input for operation."
},
"GeneralError": {
"description": "General Error",
"schema": {
"$ref": "#/definitions/GeneralError"
}
}
}
NotFound:
description: Entity not found.
IllegalInput:
description: Illegal input for operation.
GeneralError:
description: General Error
schema:
$ref: '#/definitions/GeneralError'
セキュリティ定義オブジェクト
仕様で使用できるセキュリティスキームの宣言。これは操作にセキュリティスキームを強制するものではなく、各スキームに関連する詳細を提供するだけのものです。
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
{名前} |
セキュリティスキームオブジェクト |
単一のセキュリティスキーム定義で、「名前」をそれが定義するスキームにマッピングします。 |
セキュリティ定義オブジェクトの例
{
"api_key": {
"type": "apiKey",
"name": "api_key",
"in": "header"
},
"petstore_auth": {
"type": "oauth2",
"authorizationUrl": "https://swagger.dokyumento.jp/api/oauth/dialog",
"flow": "implicit",
"scopes": {
"write:pets": "modify pets in your account",
"read:pets": "read your pets"
}
}
}
api_key:
type: apiKey
name: api_key
in: header
petstore_auth:
type: oauth2
authorizationUrl: https://swagger.dokyumento.jp/api/oauth/dialog
flow: implicit
scopes:
write:pets: modify pets in your account
read:pets: read your pets
セキュリティスキームオブジェクト
操作で使用できるセキュリティスキームの定義を許可します。サポートされているスキームは、基本認証、APIキー(ヘッダーまたはクエリパラメータのいずれか)、OAuth2の一般的なフロー(implicit、password、application、access code)です。
固定フィールド
フィールド名 |
タイプ |
有効性 |
説明 |
タイプ |
文字列 |
Any |
必須。 セキュリティスキームのタイプ。有効な値は"basic" 、"apiKey" 、または"oauth2" です。 |
説明 |
文字列 |
Any |
セキュリティスキームの簡単な説明。 |
名前 |
文字列 |
APIキー |
必須。 使用するヘッダーまたはクエリパラメータの名前。 |
イン |
文字列 |
APIキー |
必須 APIキーの場所。有効な値は"query" または"header" です。 |
フロー |
文字列 |
oauth2 |
必須。 OAuth2セキュリティスキームで使用されるフロー。有効な値は、"implicit" 、"password" 、"application" 、または"accessCode" です。 |
認可URL |
文字列 |
oauth2 ("implicit" , "accessCode" ) |
必須。 このフローに使用される認証URL。URL形式であるべきです。 |
トークンURL |
文字列 |
oauth2 ("password" , "application" , "accessCode" ) |
必須。 このフローに使用されるトークンURL。URL形式であるべきです。 |
スコープ |
スコープオブジェクト |
oauth2 |
必須。 OAuth2セキュリティスキームで利用可能なスコープ。 |
パターン化されたフィールド
フィールド名 |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
セキュリティスキームオブジェクトの例
基本認証のサンプル
{
"type": "basic"
}
type: basic
APIキーの例
{
"type": "apiKey",
"name": "api_key",
"in": "header"
}
type: apiKey
name: api_key
in: header
Implicit OAuth2のサンプル
{
"type": "oauth2",
"authorizationUrl": "https://swagger.dokyumento.jp/api/oauth/dialog",
"flow": "implicit",
"scopes": {
"write:pets": "modify pets in your account",
"read:pets": "read your pets"
}
}
type: oauth2
authorizationUrl: https://swagger.dokyumento.jp/api/oauth/dialog
flow: implicit
scopes:
write:pets: modify pets in your account
read:pets: read your pets
スコープオブジェクト
OAuth2セキュリティスキームで利用可能なスコープをリストします。
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
{名前} |
文字列 |
スコープの名前と、その簡単な説明(プロパティの値として)をマッピングします。 |
パターンオブジェクト
フィールドパターン |
タイプ |
説明 |
^x- |
Any |
Swaggerスキーマの拡張を許可します。フィールド名はx- で始まる必要があります(例:x-internal-id )。値はnull 、プリミティブ、配列、またはオブジェクトにすることができます。ベンダー拡張の詳細については、そちらを参照してください。 |
スコープオブジェクトの例
{
"write:pets": "modify pets in your account",
"read:pets": "read your pets"
}
write:pets: modify pets in your account
read:pets: read your pets
セキュリティ要件オブジェクト
この操作を実行するために必要なセキュリティスキームをリストします。このオブジェクトには複数のセキュリティスキームを宣言でき、それらはすべて必須です(つまり、スキーム間に論理ANDがあります)。
各プロパティに使用される名前は、セキュリティ定義で宣言されたセキュリティスキームに対応する必要があります。
パターン化されたフィールド
フィールドパターン |
タイプ |
説明 |
{名前} |
[文字列 ] |
各名前は、セキュリティ定義で宣言されているセキュリティスキームに対応する必要があります。セキュリティスキームのタイプが"oauth2" の場合、値は実行に必要なスコープ名のリストです。他のセキュリティスキームタイプの場合、配列は空である必要があります。 |
セキュリティ要件オブジェクトの例
OAuth2以外のセキュリティ要件
{
"api_key": []
}
api_key: []
OAuth2セキュリティ要件
{
"petstore_auth": [
"write:pets",
"read:pets"
]
}
petstore_auth:
- write:pets
- read:pets
仕様の拡張
Swagger Specificationはほとんどのユースケースに対応しようとしますが、特定のポイントで仕様を拡張するために追加データを追加できます。
拡張プロパティは常に"x-"
でプレフィックスされ、任意の有効なJSON形式の値を持つことができます。
拡張機能は、利用可能なツールによってサポートされている場合とされていない場合がありますが、要求されたサポートを追加するために拡張することもできます(ツールが内部またはオープンソースである場合)。
セキュリティフィルタリング
Swagger仕様内のいくつかのオブジェクトは、APIドキュメントの核となるものであっても、宣言されて空のままであったり、完全に削除されたりする場合があります。
その理由は、ドキュメント自体に追加のアクセス制御レイヤーを許可するためです。仕様自体の一部ではありませんが、特定のライブラリは、何らかの認証/認可形式に基づいてドキュメントの一部へのアクセスを許可することを選択する場合があります。
これに関する2つの例
- パスオブジェクトは空になる場合があります。これは直感に反するかもしれませんが、これにより閲覧者は正しい場所に到達したものの、ドキュメントにアクセスできないことを知ることができます。閲覧者は引き続き情報オブジェクトにアクセスでき、そこには認証に関する追加情報が含まれる場合があります。
- パスアイテムオブジェクトが空になる場合があります。この場合、閲覧者はパスが存在することを知っていますが、その操作やパラメータを見ることはできません。これは、パスオブジェクトからパス自体を隠すのとは異なり、ユーザーはパスの存在を知りません。これにより、ドキュメント提供者は閲覧者が見ることができるものに対してより細かい制御が可能になります。