Closed blakeSaucier closed 1 year ago
Hello,
Normally when generating a jsonSchema for a type, the properties are listed along with the additionalProperties flag set to false. As an example:
additionalProperties
false
type TestRecord = { FirstName: string; LastName: string }
will generate to:
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "TestRecord", "type": "object", "additionalProperties": false, "properties": { "firstName": { "type": "string" }, "lastName": { "type": "string" } } }
Notice that the "additionalProperties": false. In addition, single case DUs also have this behaviour.
"additionalProperties": false
When generating a schema for a multi case DU:
type MultiCase = | WithOneField of int | WithNamedFields of name: string * value: float
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "TestDU", "definitions": { "WithOneField": { "type": "object", "required": [ "tag", "item" ], "properties": { "tag": { "type": "string", "default": "WithOneField", "x-enumNames": ["WithOneField"], "enum": ["WithOneField"] }, "item": { "type": "integer" } } }, "WithNamedFields": { "type": "object", "required": [ "tag", "name", "value" ], "properties": { "tag": { "type": "string", "default": "WithNamedFields", "x-enumNames": ["WithNamedFields"], "enum": ["WithNamedFields"] }, "name": { "type": "string" }, "value": { "type": "number" } } } }, "anyOf": [ { "$ref": "#/definitions/WithOneField" }, { "$ref": "#/definitions/WithNamedFields" } ] }
Notice that the additionalProperties flag is missing.
This has downstream implications for validating json against this schema as well as generating models in other languages from this schema. I can try and put together a PR.
Hello,
Normally when generating a jsonSchema for a type, the properties are listed along with the
additionalProperties
flag set tofalse
. As an example:will generate to:
Notice that the
"additionalProperties": false
. In addition, single case DUs also have this behaviour.When generating a schema for a multi case DU:
Notice that the
additionalProperties
flag is missing.This has downstream implications for validating json against this schema as well as generating models in other languages from this schema. I can try and put together a PR.