| { |
| "$schema": "http://json-schema.org/draft-07/schema#", |
| "$id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-secure.json#", |
| "title": "Meta-schema for the security assessment of JSON Schemas", |
| "description": "If a JSON Schema fails validation against this meta-schema, it may be unsafe to validate untrusted data", |
| "definitions": { |
| "schemaArray": { |
| "type": "array", |
| "minItems": 1, |
| "items": {"$ref": "#"} |
| } |
| }, |
| "dependencies": { |
| "patternProperties": { |
| "description": "prevent slow validation of large property names", |
| "required": ["propertyNames"], |
| "properties": { |
| "propertyNames": { |
| "required": ["maxLength"] |
| } |
| } |
| }, |
| "uniqueItems": { |
| "description": "prevent slow validation of large non-scalar arrays", |
| "if": { |
| "properties": { |
| "uniqueItems": {"const": true}, |
| "items": { |
| "properties": { |
| "type": { |
| "anyOf": [ |
| { |
| "enum": ["object", "array"] |
| }, |
| { |
| "type": "array", |
| "contains": {"enum": ["object", "array"]} |
| } |
| ] |
| } |
| } |
| } |
| } |
| }, |
| "then": { |
| "required": ["maxItems"] |
| } |
| }, |
| "pattern": { |
| "description": "prevent slow pattern matching of large strings", |
| "required": ["maxLength"] |
| }, |
| "format": { |
| "description": "prevent slow format validation of large strings", |
| "required": ["maxLength"] |
| } |
| }, |
| "properties": { |
| "additionalItems": {"$ref": "#"}, |
| "additionalProperties": {"$ref": "#"}, |
| "dependencies": { |
| "additionalProperties": { |
| "anyOf": [ |
| {"type": "array"}, |
| {"$ref": "#"} |
| ] |
| } |
| }, |
| "items": { |
| "anyOf": [ |
| {"$ref": "#"}, |
| {"$ref": "#/definitions/schemaArray"} |
| ] |
| }, |
| "definitions": { |
| "additionalProperties": {"$ref": "#"} |
| }, |
| "patternProperties": { |
| "additionalProperties": {"$ref": "#"} |
| }, |
| "properties": { |
| "additionalProperties": {"$ref": "#"} |
| }, |
| "if": {"$ref": "#"}, |
| "then": {"$ref": "#"}, |
| "else": {"$ref": "#"}, |
| "allOf": {"$ref": "#/definitions/schemaArray"}, |
| "anyOf": {"$ref": "#/definitions/schemaArray"}, |
| "oneOf": {"$ref": "#/definitions/schemaArray"}, |
| "not": {"$ref": "#"}, |
| "contains": {"$ref": "#"}, |
| "propertyNames": {"$ref": "#"} |
| } |
| } |