У меня есть следующий класс:
import com.fasterxml.jackson.annotation.JsonProperty
import org.joda.time.DateTime
import org.joda.time.DateTimeZone
data class Entity(
val email: String,
val name: String,
val birthDate: DateTime,
@JsonProperty(required = false) val gender: Gender? = null,
@JsonProperty(required = false) val country: String? = null,
val locale: String,
val disabled: Boolean = false,
@JsonProperty(required = false) val createdAt: DateTime = DateTime(DateTimeZone.UTC),
val role: Role,
val entityTypeId: Long,
val entityTypeAttributes: MutableMap<String, Any> = HashMap(),
val medicalSpecialityId: Long? = null,
val id: Long? = null
)
И некоторые свойства не требуются, потому что они либо допускают значение NULL (пол, страна), либо имеют значение по умолчанию (createdAt).
Однако сгенерированная документация по чванству выглядит следующим образом:
"components": {
"schemas": {
"Entity": {
"required": [
"birthDate",
"createdAt", <------------ Notice here!
"disabled",
"email",
"entityTypeAttributes",
"entityTypeId",
"locale",
"name",
"role"
],
"type": "object",
"properties": {
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"birthDate": {
"type": "string",
"format": "date-time"
},
"gender": {
"type": "string",
"enum": [
"MALE",
"FEMALE",
"OTHER"
]
},
"country": {
"type": "string"
},
"locale": {
"type": "string"
},
"disabled": {
"type": "boolean"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"role": {
"type": "string",
"enum": [
"ADMIN",
"DOCTOR",
"PATIENT"
]
},
"entityTypeId": {
"type": "integer",
"format": "int64"
},
"entityTypeAttributes": {
"type": "object",
"additionalProperties": {
"type": "object"
}
},
"medicalSpecialityId": {
"type": "integer",
"format": "int64"
},
"id": {
"type": "integer",
"format": "int64"
}
}
},
(...)
Итак, с точки зрения документации, это показывает, что createdAt
является обязательным (что неверно) ...
Созданные документы Swagger
Я использую Kotlin, Javalin и интеграцию OpenAPI (io.javalin.plugin.openapi
) Javalin.
Я не знаю, что еще мне нужно заставить OpenAPI понять, что createdAt
не является обязательным ...