説明
スキーマの $ref は、データ構造を定義するスキーマオブジェクトを参照する必要があります。レスポンスやパラメーターのオブジェクト全体では、その場所で必要なモデル構造と一致しません。
想定される影響
リクエストやレスポンスの型を解決できず、検証やモデル生成に失敗する可能性があります。
対処方法
共通モデルは #/definitions/... の正しいスキーマを参照してください。有効な外部スキーマ参照も使えます。参照先の種類とデータ構造を確認してください。
例
次の POST の例では、レスポンスの schema 内で誤って参照した Success レスポンスを、User スキーマへの参照に変更しています。
変更前
json
{
"swagger": "2.0",
"info": {
"title": "Simple API Overview",
"version": "1.0.0"
},
"paths": {
"/": {
"post": {
"operationId": "listVersionsv2",
"summary": "List API versions",
"responses": {
"200": {
"$ref": "#/responses/Success"
}
},
"parameters": [
{
"$ref": "#/parameters/limitParam"
}
]
}
}
},
"responses": {
"Success": {
"description": "A user",
"schema": {
"$ref": "#/responses/Success"
}
}
},
"parameters": {
"limitParam": {
"name": "limit",
"in": "body",
"description": "max records to return",
"required": true,
"schema": {
"type": "integer"
}
}
},
"definitions": {
"User": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
}
}
}
}
変更後
json
{
"swagger": "2.0",
"info": {
"title": "Simple API Overview",
"version": "1.0.0"
},
"paths": {
"/": {
"post": {
"operationId": "listVersionsv2",
"summary": "List API versions",
"responses": {
"200": {
"$ref": "#/responses/Success"
}
},
"parameters": [
{
"$ref": "#/parameters/limitParam"
}
]
}
}
},
"responses": {
"Success": {
"description": "A user",
"schema": {
"$ref": "#/definitions/User"
}
}
},
"parameters": {
"limitParam": {
"name": "limit",
"in": "body",
"description": "max records to return",
"required": true,
"schema": {
"type": "integer"
}
}
},
"definitions": {
"User": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
}
}
}
}