I've a json schema like this:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Operation",
"description": "The schema of an operation",
"type": "object",
"properties": {
"id":{
"description": "Unique identifier of the service",
"type": "string"
},
"description":{
"type": "string"
},
"dateDebut":{
"type": "string",
"format": "date-time"
},
"dateFin":{
"type": "string",
"format": "date-time"
}
}
}
How can I say in my schema that the dateFin
must be greater than the dateDebut
?
This library supports it https://github.com/epoberezkin/ajv#features
var ajv = Ajv({v5:true,allErrors: true})
{
"startDate": {
"format": "date",
"message": "Please Enter correct date format YYYY-MM-DD"
},
"endDate": {
"format": "date",
"message": "Please Enter correct date format YYYY-MM-DD",
"formatMinimum": {
"$data": "1/startDate"
}
}
}
You can't do that on the JSON-Schema level. You'd have to validate that separately for your Operation
objects. In general, JSON-Schema only provides a kind of "well-formed-ness" sanity checks: about a property being a number, date, or a string matching a regexp; or about an object having certain nested structure of properties. More advanced business rules like the one from your example should be controlled elsewhere.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With