{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "schema.schema.json",
    "title": "Schema in EXT_structural_metadata",
    "type": "object",
    "description": "An object defining classes and enums.",
    "allOf": [
        {
            "$ref": "glTFProperty.schema.json"
        }
    ],
    "properties": {
        "id": {
            "type": "string",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
            "description": "Unique identifier for the schema. Schema IDs must be alphanumeric identifiers matching the regular expression `^[a-zA-Z_][a-zA-Z0-9_]*$`."
        },
        "name": {
            "type": "string",
            "minLength": 1,
            "description": "The name of the schema, e.g. for display purposes."
        },
        "description": {
            "type": "string",
            "minLength": 1,
            "description": "The description of the schema."
        },
        "version": {
            "type": "string",
            "minLength": 1,
            "description": "Application-specific version of the schema."
        },
        "classes": {
            "type": "object",
            "description": "A dictionary, where each key is a class ID and each value is an object defining the class. Class IDs must be alphanumeric identifiers matching the regular expression `^[a-zA-Z_][a-zA-Z0-9_]*$`.",
            "minProperties": 1,
            "additionalProperties": {
                "$ref": "class.schema.json"
            }
        },
        "enums": {
            "type": "object",
            "description": "A dictionary, where each key is an enum ID and each value is an object defining the values for the enum. Enum IDs must be alphanumeric identifiers matching the regular expression `^[a-zA-Z_][a-zA-Z0-9_]*$`.",
            "minProperties": 1,
            "additionalProperties": {
                "$ref": "enum.schema.json"
            }
        },
        "extensions": {},
        "extras": {}
    },
    "required": [
        "id"
    ]
}