{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "Constraint specification for a block member's property",
    "oneOf": [
        {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "description": "Constraint specification for a fixed value",
            "properties": {
                "value": {
                    "description": "Fixed value.",
                    "type": [
                        "number",
                        "string",
                        "boolean",
                        "object",
                        "array",
                        "null"
                    ]
                }
            },
            "title": "Fixed value constraint",
            "type": "object"
        },
        {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "description": "Base schema definition",
            "properties": {
                "comment": {
                    "description": "Comment property for adding explanatory notes",
                    "type": "string"
                }
            },
            "title": "Base schema definition",
            "type": "object"
        },
        {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "description": "Base schema definition",
            "properties": {
                "comment": {
                    "description": "Comment property for adding explanatory notes",
                    "type": "string"
                }
            },
            "title": "Base schema definition",
            "type": "object"
        },
        {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "description": "Base schema definition",
            "properties": {
                "comment": {
                    "description": "Comment property for adding explanatory notes",
                    "type": "string"
                }
            },
            "title": "Base schema definition",
            "type": "object"
        }
    ],
    "properties": {
        "path": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "description": "Array of role names. Absolute path starts with name of root block, which is always null. Relative path starts with name of first contained block within the current one.",
            "items": {
                "type": "string"
            },
            "title": "Block role path",
            "type": "array"
        },
        "propertyId": {
            "description": "Property identifier",
            "properties": {
                "index": {
                    "type": "number"
                },
                "level": {
                    "type": "number"
                }
            },
            "required": [
                "level",
                "index"
            ],
            "type": "object"
        }
    },
    "required": [
        "propertyId"
    ],
    "title": "Block member constraint",
    "type": "object"
}
