{
  "$schema": "http://json-schema.org/draft/2020-12/schema",
  "$id": "http://example.com/schema/TestUser",
  "$ref": "#/$defs/TestUser",
  "$defs": {
    "GrandfatherType": {
      "properties": {
        "family_name": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "family_name"
      ]
    },
    "TestUser": {
      "properties": {
        "some_base_property": {
          "type": "integer"
        },
        "some_base_property_yaml": {
          "type": "integer"
        },
        "grand": {
          "$ref": "#/$defs/GrandfatherType"
        },
        "SomeUntaggedBaseProperty": {
          "type": "boolean"
        },
        "PublicNonExported": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string",
          "maxLength": 20,
          "minLength": 1,
          "pattern": ".*",
          "title": "the name",
          "description": "this is a property",
          "default": "alex",
          "readOnly": true,
          "examples": [
            "joe",
            "lucy"
          ]
        },
        "password": {
          "type": "string",
          "writeOnly": true
        },
        "friends": {
          "items": {
            "type": "integer"
          },
          "type": "array",
          "description": "list of IDs, omitted when empty"
        },
        "tags": {
          "patternProperties": {
            ".*": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "options": {
          "type": "object"
        },
        "TestFlag": {
          "type": "boolean"
        },
        "birth_date": {
          "type": "string",
          "format": "date-time"
        },
        "website": {
          "type": "string",
          "format": "uri"
        },
        "network_address": {
          "type": "string",
          "format": "ipv4"
        },
        "photo": {
          "type": "string",
          "contentEncoding": "base64"
        },
        "photo2": {
          "type": "string",
          "contentEncoding": "base64"
        },
        "feeling": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            }
          ]
        },
        "age": {
          "type": "integer",
          "maximum": 120,
          "exclusiveMaximum": 121,
          "minimum": 18,
          "exclusiveMinimum": 17
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "Baz": {
          "type": "string",
          "foo": [
            "bar",
            "bar1"
          ],
          "hello": "world"
        },
        "color": {
          "type": "string",
          "enum": [
            "red",
            "green",
            "blue"
          ]
        },
        "rank": {
          "type": "integer",
          "enum": [
            1,
            2,
            3
          ]
        },
        "mult": {
          "type": "number",
          "enum": [
            1,
            1.5,
            2
          ]
        },
        "roles": {
          "items": {
            "type": "string",
            "enum": [
              "admin",
              "moderator",
              "user"
            ]
          },
          "type": "array"
        },
        "priorities": {
          "items": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1
            ]
          },
          "type": "array"
        },
        "offsets": {
          "items": {
            "type": "number",
            "enum": [
              1.570796,
              3.141592,
              6.283185
            ]
          },
          "type": "array"
        },
        "anything": true,
        "raw": true
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "some_base_property",
        "some_base_property_yaml",
        "grand",
        "SomeUntaggedBaseProperty",
        "PublicNonExported",
        "id",
        "name",
        "password",
        "TestFlag",
        "age",
        "email",
        "Baz",
        "color",
        "roles",
        "raw"
      ]
    }
  }
}