JSON schema: date greater than an other

10.7k views Asked by At

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 ?

2

There are 2 answers

0
Ivan Krechetov On BEST ANSWER

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.

0
Bolarinwa On

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"
        }
    }
}