blob: abec3ec577711a1edf3c5f443a5912682fe47fbe [file] [log] [blame]
{
"type": "object",
"properties": {
"version": {
"$ref": "#/definitions/decimal_type"
},
"address": {
"$ref": "#/definitions/address_type"
},
"phones": {
"type": "array",
"minItems": 1,
"maxItems": 2,
"uniqueItems": true,
"items": {
"$ref": "#/definitions/phone_type"
}
},
"names": {
"type": "array",
"items": [
{ "type": "string" },
{ "type": "string" }
],
"additionalItems": false
},
"extra": {
"type": "object",
"patternProperties": {
"^S_": { "type": "string" }
}
},
"gender": {
"type": "string",
"enum": ["M", "F"]
}
},
"additionalProperties": false,
"dependencies": {
"address": [ "version" ],
"names": {
"properties": {
"version": { "$ref": "#/definitions/decimal_type" }
},
"required": ["version"]
}
},
"definitions": {
"address_type": {
"type": "object",
"properties": {
"number": {
"$ref": "#/definitions/positiveInt_type"
},
"street1": {
"type": "string"
},
"street2": {
"type": ["string", "null"]
},
"street3": {
"not": { "type": ["boolean", "number", ",integer", "object", "null"] }
},
"city": {
"type": "string",
"maxLength": 10,
"minLength": 4
},
"area": {
"oneOf": [
{ "$ref": "#/definitions/county_type" },
{ "$ref": "#/definitions/province_type" }
]
},
"country": {
"allOf": [
{ "$ref": "#/definitions/country_type" }
]
},
"postcode": {
"anyOf": [
{ "type": "string", "pattern": "^[A-Z]{2}[0-9]{1,2} [0-9][A-Z]{2}$" },
{ "type": "string", "pattern": "^[0-9]{5}$" }
]
}
},
"minProperties": 7,
"required": [
"number",
"street1",
"city"
]
},
"country_type": {
"type": "string",
"enum": ["UK", "Canada"]
},
"county_type": {
"type": "string",
"enum": ["Sussex", "Surrey", "Kent", "Narnia"]
},
"province_type": {
"type": "string",
"enum": ["Quebec", "Narnia", "BC", "Alberta"]
},
"date_type": {
"pattern": "^([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1]))?)?$",
"type": "string"
},
"positiveInt_type": {
"minimum": 0,
"exclusiveMinimum": true,
"maximum": 100,
"exclusiveMaximum": true,
"type": "integer"
},
"decimal_type": {
"multipleOf": 1.0,
"type": "number"
},
"time_type": {
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\\.[0-9]+)?$",
"type": "string"
},
"unsignedInt_type": {
"type": "integer",
"minimum": 0,
"maximum": 99999
},
"phone_type": {
"pattern": "^[0-9]*-[0-9]*",
"type": "string"
},
"url_type": {
"type": "string"
}
}
}