{
    "$id": "http://api.example.com/profile.json#",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": false,
    "properties": {
        "age": {
            "maximum": 100,
            "minimum": 9,
            "type": "integer"
        },
        "available_for_hire": {
            "type": "boolean"
        },
        "email": {
            "_format": "email",
            "maxLength": 128,
            "type": "string"
        },
        "id": {
            "_format": "uuid",
            "type": "string"
        },
        "interests": {
            "items": {
                "maxLength": 120,
                "type": "string"
            },
            "maxItems": 100,
            "minItems": 3,
            "type": "array",
            "_uniqueItems": true
        },
        "location": {
            "additionalProperties": false,
            "properties": {
                "address": {
                    "maxLength": 128,
                    "type": "string"
                },
                "country": {
                    "enum": [
                        "US",
                        "CA",
                        "GB"
                    ]
                }
            },
            "required": [
                "country",
                "address"
            ],
            "type": "object"
        },
        "name": {
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9\\-]+(\\s[a-zA-Z0-9\\-]+)*$",
            "type": "string"
        },
        "skills": {
            "items": {
                "additionalProperties": false,
                "properties": {
                    "name": {
                        "maxLength": 64,
                        "minLenght": 1,
                        "type": "string"
                    },
                    "value": {
                        "maximum": 100,
                        "minimum": 0,
                        "multipleOf": 0.25,
                        "type": "number"
                    }
                },
                "required": [
                    "name",
                    "value"
                ],
                "type": "object"
            },
            "maxItems": 100,
            "type": "array",
            "_uniqueItems": true
        },
        "website": {
            "format": "hostname",
            "maxLength": 128,
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "id",
        "name",
        "age",
        "email",
        "location",
        "available_for_hire",
        "interests",
        "skills"
    ],
    "type": "object"
}