{
 "$id": "cfnlint.schema.v1.json",
 "$schema": "http://json-schema.org/draft-07/schema#",
 "additionalProperties": false,
 "default": true,
 "definitions": {
  "nonNegativeInteger": {
   "minimum": 0,
   "type": "integer"
  },
  "nonNegativeIntegerDefault0": {
   "allOf": [
    {
     "$ref": "#/definitions/nonNegativeInteger"
    },
    {
     "default": 0
    }
   ]
  },
  "schemaArray": {
   "items": {
    "$ref": "#"
   },
   "minItems": 1,
   "type": "array"
  },
  "simpleTypes": {
   "enum": [
    "array",
    "boolean",
    "integer",
    "null",
    "number",
    "object",
    "string",
    "date"
   ]
  },
  "stringArray": {
   "default": [],
   "items": {
    "type": "string"
   },
   "type": "array",
   "uniqueItems": true
  }
 },
 "patternProperties": {
  "^[a-z]{2}-[a-z]+-[0-9]$": {
   "$ref": "#"
  },
  "^[a-z]{2}-gov-[a-z]+-[0-9]$": {
   "$ref": "#"
  },
  "^all$": {
   "$ref": "#"
  }
 },
 "properties": {
  "$comment": {
   "type": "string"
  },
  "$id": {
   "format": "uri-reference",
   "type": "string"
  },
  "$ref": {
   "format": "uri-reference",
   "type": "string"
  },
  "$schema": {
   "format": "uri",
   "type": "string"
  },
  "additionalItems": {
   "$ref": "#"
  },
  "additionalProperties": {
   "$ref": "#"
  },
  "allOf": {
   "$ref": "#/definitions/schemaArray"
  },
  "anyOf": {
   "$ref": "#/definitions/schemaArray"
  },
  "cfnContext": {
   "additionalProperties": false,
   "properties": {
    "functions": {
     "items": {
      "type": "string"
     },
     "properties": {
      "$ref": {
       "format": "uri-reference",
       "type": "string"
      }
     },
     "type": [
      "array",
      "object"
     ]
    },
    "pseudoParameters": {
     "items": {
      "type": "string"
     },
     "type": "array"
    },
    "schema": {
     "$ref": "#"
    }
   },
   "type": "object"
  },
  "cfnGather": {
   "additionalProperties": false,
   "properties": {
    "gather": true,
    "schema": {
     "$ref": "#"
    }
   },
   "type": "object"
  },
  "cfnLint": {
   "cfnLint": "true",
   "items": {
    "type": "string"
   },
   "type": [
    "array",
    "string"
   ]
  },
  "const": true,
  "contains": {
   "$ref": "#"
  },
  "contentEncoding": {
   "type": "string"
  },
  "contentMediaType": {
   "type": "string"
  },
  "default": true,
  "definitions": {
   "additionalProperties": {
    "$ref": "#"
   },
   "default": {},
   "type": "object"
  },
  "dependencies": {
   "additionalProperties": {
    "anyOf": [
     {
      "$ref": "#"
     },
     {
      "$ref": "#/definitions/stringArray"
     }
    ]
   },
   "type": "object"
  },
  "dependentExcluded": {
   "additionalProperties": false,
   "patternProperties": {
    "^[A-Za-z0-9]{1,64}$": {
     "items": {
      "type": "string"
     },
     "type": "array"
    }
   },
   "type": "object"
  },
  "description": {
   "type": "string"
  },
  "dynamicValidation": {
   "additionalProperties": false,
   "properties": {
    "context": {
     "enum": [
      "conditions",
      "mappings",
      "refs"
     ],
     "type": "string"
    },
    "pathCheck": {
     "type": "string"
    },
    "transformCheck": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "else": {
   "$ref": "#"
  },
  "enum": {
   "items": true,
   "type": "array"
  },
  "examples": {
   "items": true,
   "type": "array"
  },
  "exclusiveMaximum": {
   "anyOf": [
    {
     "type": "number"
    },
    {
     "additionalProperties": false,
     "properties": {
      "$data": {
       "type": "string"
      }
     },
     "required": [
      "$data"
     ],
     "type": "object"
    }
   ]
  },
  "exclusiveMinimum": {
   "anyOf": [
    {
     "type": "number"
    },
    {
     "additionalProperties": false,
     "properties": {
      "$data": {
       "type": "string"
      }
     },
     "required": [
      "$data"
     ],
     "type": "object"
    }
   ]
  },
  "format": {
   "type": "string"
  },
  "if": {
   "$ref": "#"
  },
  "items": {
   "anyOf": [
    {
     "$ref": "#"
    },
    {
     "$ref": "#/definitions/schemaArray"
    }
   ],
   "default": true
  },
  "maxItems": {
   "$ref": "#/definitions/nonNegativeInteger"
  },
  "maxUniqueItems": {
   "$ref": "#/definitions/nonNegativeInteger"
  },
  "maxLength": {
   "$ref": "#/definitions/nonNegativeInteger"
  },
  "maxProperties": {
   "$ref": "#/definitions/nonNegativeInteger"
  },
  "maximum": {
   "anyOf": [
    {
     "type": "number"
    },
    {
     "additionalProperties": false,
     "properties": {
      "$data": {
       "type": "string"
      }
     },
     "required": [
      "$data"
     ],
     "type": "object"
    }
   ]
  },
  "minItems": {
   "$ref": "#/definitions/nonNegativeIntegerDefault0"
  },
  "minLength": {
   "$ref": "#/definitions/nonNegativeIntegerDefault0"
  },
  "minProperties": {
   "$ref": "#/definitions/nonNegativeIntegerDefault0"
  },
  "minimum": {
   "anyOf": [
    {
     "type": "number"
    },
    {
     "additionalProperties": false,
     "properties": {
      "$data": {
       "type": "string"
      }
     },
     "required": [
      "$data"
     ],
     "type": "object"
    }
   ]
  },
  "multipleOf": {
   "exclusiveMinimum": 0,
   "type": "number"
  },
  "not": {
   "$ref": "#"
  },
  "oneOf": {
   "$ref": "#/definitions/schemaArray"
  },
  "pattern": {
   "format": "regex",
   "type": "string"
  },
  "patternProperties": {
   "additionalProperties": {
    "$ref": "#"
   },
   "default": {},
   "propertyNames": {
    "format": "regex"
   },
   "type": "object"
  },
  "prefixItems": {
   "items": {
    "$ref": "#"
   },
   "type": "array"
  },
  "properties": {
   "additionalProperties": {
    "$ref": "#"
   },
   "default": {},
   "type": "object"
  },
  "propertyNames": {
   "$ref": "#"
  },
  "readOnly": {
   "default": false,
   "type": "boolean"
  },
  "required": {
   "$ref": "#/definitions/stringArray"
  },
  "requiredXor": {
   "items": {
    "type": "string"
   },
   "type": "array"
  },
  "then": {
   "$ref": "#"
  },
  "title": {
   "type": "string"
  },
  "type": {
   "anyOf": [
    {
     "$ref": "#/definitions/simpleTypes"
    },
    {
     "items": {
      "$ref": "#/definitions/simpleTypes"
     },
     "minItems": 1,
     "type": "array",
     "uniqueItems": true
    }
   ]
  },
  "uniqueItems": {
   "default": false,
   "type": "boolean"
  },
  "uniqueKeys": {
   "items": {
    "type": "string"
   },
   "type": "array"
  }
 },
 "title": "cfn-lint schema for schema extensions",
 "type": [
  "object",
  "boolean"
 ]
}
