Я хотел бы, чтобы мое тело HTTP-запроса принимало что-то вроде:
{
"grant_type": "refresh_token", // "refresh_token" or "password"
"client_id": "my-client", // NEVER CHANGE
"refresh_token": "XXX"
}
или
{
"grant_type": "password", // "refresh_token" or "password"
"client_id": "my-client", // NEVER CHANGE
"username": "XXX",
"password": "XXX",
}
Как видите, изменение формата основано на grant_type
. Итак, я определил эту схему:
{
"definitions": {
"username_and_password": {
"type": "object",
"properties": {
"grant_type": { "type": "string", "enum": ["password"] },
"client_id": { "type": "string", "enum": ["my-client"] },
"username": { "type": "string" },
"password": { "type": "string" }
},
"required": ["grant_type", "client_id", "username", "password" ]
},
"refresh_token": {
"type": "object",
"properties": {
"grant_type": { "type": "string", "enum": ["refresh_token"] },
"client_id": { "type": "string", "enum": ["my-client"] },
"refresh_token": { "type": "string" }
},
"required": [ "grant_type", "client_id", "refresh_token" ]
}
},
"oneOf": [
{ "$ref": "#/definitions/username_and_password" },
{ "$ref": "#/definitions/refresh_token" }
],
"additionalProperties": false
}
Я использую это как модель API-шлюза, но он отрицает все, что я отправляю. Где ошибка?