{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "#GraphObject",
    "description": "Standard metadata properties of a graph object, maintained by the system. These are visible to users but may not be directly modified.",
    "type": "object",
    "propertyNames": {
        "pattern": "^(_|tag\\.)?[A-Za-z0-9. -]+$"
    },
    "properties": {
        "_key": {
            "description": "An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role.",
            "type": "string",
            "minLength": 10
        },
        "_class": {
            "description": "One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '_class':'Host'.",
            "oneOf": [
                {
                    "type": "string",
                    "minLength": 2
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "string",
                        "minLength": 2
                    }
                }
            ]
        },
        "_type": {
            "description": "The type of object, typically reflecting the vendor and resource type. For example, 'aws_iam_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user_endpoint' or 'cve'.",
            "type": "string",
            "minLength": 3
        }
    },
    "patternProperties": {
        "^tag\\.": {
            "description": "Named tags assigned to the entity (i.e., 'tag.Name', 'tag.OtherName')",
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "number"
                },
                {
                    "type": "boolean"
                }
            ]
        }
    },
    "required": ["_key", "_class", "_type"]
}
