This works as expected, since_1 is required:
data Foo
= Bar { _1 :: LText }
{
"swagger": "2.0",
"info": {
"version": "",
"title": ""
},
"definitions": {
"Foo": {
"required": [
"_1"
],
"type": "object",
"properties": {
"_1": {
"type": "string"
}
}
}
},
"paths": {}
}
So does this, since _1 is not required:
data Foo
= Bar { _1 :: Maybe LText }
{
"swagger": "2.0",
"info": {
"version": "",
"title": ""
},
"definitions": {
"Foo": {
"type": "object",
"properties": {
"_1": {
"type": "string"
}
}
}
},
"paths": {}
}
But this does not, since _2 should not be required:
data Foo
= Bar { _1 :: LText }
| Baz { _2 :: Maybe LText }
deriving (Generic, ToJSON, ToSchema)
{
"swagger": "2.0",
"info": {
"version": "",
"title": ""
},
"definitions": {
"Foo": {
"minProperties": 1,
"maxProperties": 1,
"type": "object",
"properties": {
"Bar": {
"required": [
"_1"
],
"type": "object",
"properties": {
"_1": {
"type": "string"
}
}
},
"Baz": {
"required": [
"_2"
],
"type": "object",
"properties": {
"_2": {
"type": "string"
}
}
}
}
}
},
"paths": {}
}
This works as expected, since
_1isrequired:{ "swagger": "2.0", "info": { "version": "", "title": "" }, "definitions": { "Foo": { "required": [ "_1" ], "type": "object", "properties": { "_1": { "type": "string" } } } }, "paths": {} }So does this, since
_1is notrequired:{ "swagger": "2.0", "info": { "version": "", "title": "" }, "definitions": { "Foo": { "type": "object", "properties": { "_1": { "type": "string" } } } }, "paths": {} }But this does not, since
_2should not berequired:{ "swagger": "2.0", "info": { "version": "", "title": "" }, "definitions": { "Foo": { "minProperties": 1, "maxProperties": 1, "type": "object", "properties": { "Bar": { "required": [ "_1" ], "type": "object", "properties": { "_1": { "type": "string" } } }, "Baz": { "required": [ "_2" ], "type": "object", "properties": { "_2": { "type": "string" } } } } } }, "paths": {} }