{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "missing-classes": {
            "type": "object",
            "properties": {
                "behavior": {
                    "type": "string",
                    "enum": [
                        "ignore",
                        "error",
                        "report"
                    ],
                    "default": "report"
                },
                "ignoreMissingAnnotations": {
                    "type": "boolean",
                    "default": "false"
                }
            }
        },
        "reportUsesFor": {
            "oneOf": [
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "_uniqueItems": true,
                    "default": [
                        "java.missing.newClass",
                        "java.missing.oldClass",
                        "java.missing.oldSuperType",
                        "java.missing.newSuperType",
                        "java.class.nonPublicPartOfAPI",
                        "java.class.externalClassNoLongerExposedInAPI",
                        "java.class.externalClassExposedInAPI"
                    ]
                },
                {
                    "type": "string",
                    "enum": [
                        "all-differences"
                    ]
                }
            ]
        },
        "filter": {
            "type": "object",
            "properties": {
                "classes": {
                    "type": "object",
                    "properties": {
                        "regex": {
                            "description": "Whether to understand the class names as regular expressions.",
                            "type": "boolean",
                            "default": "false"
                        },
                        "include": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "exclude": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                },
                "packages": {
                    "type": "object",
                    "properties": {
                        "regex": {
                            "description": "Whether to understand the package names as regular expressions.",
                            "type": "boolean",
                            "default": "false"
                        },
                        "include": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "exclude": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        }
    },
    "additionalProperties": true
}