138 lines
3.1 KiB
JSON
138 lines
3.1 KiB
JSON
|
{
|
||
|
"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"
|
||
|
}
|
||
|
}
|
||
|
}
|