{
    "$id": "../common/cyber-observable-core.json",
    "$schema": "http://json-schema.org/draft-06/schema#",
    "title": "cyber-observable-core",
    "description": "Common properties and behavior across all Cyber Observable Objects.",
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "pattern": "^\\-?[a-z0-9]+(-[a-z0-9]+)*\\-?$",
            "minLength": 3,
            "maxLength": 250,
            "description": "Indicates that this object is an Observable Object. The value of this property MUST be a valid Observable Object type name, but to allow for custom objects this has been removed from the schema.",
            "not": {
                "const": "action"
            }
        },
        "extensions": {
            "$ref": "dictionary.json",
            "description": "Specifies any extensions of the object, as a dictionary."
        }
    },
    "patternProperties": {
        "^[a-z0-9_]{0,246}_bin$": {
            "$ref": "binary.json"
        },
        "^[a-z0-9_]{3,250}$": {
            "anyOf": [
                {
                    "type": "array",
                    "minItems": 1
                },
                {
                    "type": "string"
                },
                {
                    "type": "integer"
                },
                {
                    "type": "boolean"
                },
                {
                    "type": "number"
                },
                {
                    "type": "object"
                }
            ]
        }
    },
    "additionalProperties": false,
    "required": [
        "type"
    ]
}