suretype icon indicating copy to clipboard operation
suretype copied to clipboard

JSON schema does not explicitly add "additionProperties: false"

Open crobinson42 opened this issue 2 years ago • 2 comments

This validator:

v
  .object({
    id: v.string().required(),
    username: v.string(),
    nested: v.object({
      email: v.string(),
    }),
  })

Will produce this json-schema:

{
  type: 'object',
  properties: {
    id: { type: 'string' },
    username: { type: 'string' },
    nested: { type: 'object', properties: [Object] }
  },
  required: [ 'id' ]
}

The problem here is that JSON-schema validators like ajv infer if there is no additionalProperties: false then additional properties are allowed. This conflicts with the implementation of the ObjectValidator because if you want to allow additional properties you are required to chain .additional({ ... }) which should imply to the developer that when .additional({...}) is not used then to expect _additionalProperties: false_ in the json-schema output.

crobinson42 avatar Nov 08 '23 19:11 crobinson42