4

I need to validate string schema format: "date" or format: "date-time" to accept only ISO 8601 but also allow empty string "" (the "" requirement should be separately checked using the required schema).

{
   "datetime1": {
      "type": "string",
      "format": "date-time",
   }
}

However, the native ajv format parser does not allow empty string "" to pass. How do I make it allow empty string, and still validate ISO 8601?

Do I really have to write my own format checker using ajv.addFormat()? I also have the same issue for "format": "email", where I also need "" to be valid.

Note: I can't modify the schema, so I can't add defaults.

Andrew Ooi
  • 309
  • 1
  • 3
  • 10

1 Answers1

2

Lets try to use oneOf

date_to: {
  type: 'string',
  oneOf: [
    {
      maxLength: 0
    },
    {
      format: 'date-time',
      minLength: 1
    }
  ]
},

in the first object, it will allows empty string. In the second object, it will check input based on your format

putra
  • 154
  • 1
  • 9