{
 "additionalProperties": false,
 "definitions": {
  "CachePolicyConfig": {
   "additionalProperties": false,
   "properties": {
    "Comment": {
     "type": "string"
    },
    "DefaultTTL": {
     "minimum": 0,
     "multipleOf": 1.0,
     "type": "number"
    },
    "MaxTTL": {
     "minimum": 0,
     "multipleOf": 1.0,
     "type": "number"
    },
    "MinTTL": {
     "minimum": 0,
     "multipleOf": 1.0,
     "type": "number"
    },
    "Name": {
     "type": "string"
    },
    "ParametersInCacheKeyAndForwardedToOrigin": {
     "$ref": "#/definitions/ParametersInCacheKeyAndForwardedToOrigin"
    }
   },
   "required": [
    "Name",
    "MinTTL",
    "MaxTTL",
    "DefaultTTL",
    "ParametersInCacheKeyAndForwardedToOrigin"
   ],
   "type": "object"
  },
  "CookiesConfig": {
   "additionalProperties": false,
   "properties": {
    "CookieBehavior": {
     "pattern": "^(none|whitelist|allExcept|all)$",
     "type": "string"
    },
    "Cookies": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "required": [
    "CookieBehavior"
   ],
   "type": "object"
  },
  "HeadersConfig": {
   "additionalProperties": false,
   "properties": {
    "HeaderBehavior": {
     "pattern": "^(none|whitelist)$",
     "type": "string"
    },
    "Headers": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "required": [
    "HeaderBehavior"
   ],
   "type": "object"
  },
  "ParametersInCacheKeyAndForwardedToOrigin": {
   "additionalProperties": false,
   "properties": {
    "CookiesConfig": {
     "$ref": "#/definitions/CookiesConfig"
    },
    "EnableAcceptEncodingBrotli": {
     "type": "boolean"
    },
    "EnableAcceptEncodingGzip": {
     "type": "boolean"
    },
    "HeadersConfig": {
     "$ref": "#/definitions/HeadersConfig"
    },
    "QueryStringsConfig": {
     "$ref": "#/definitions/QueryStringsConfig"
    }
   },
   "required": [
    "EnableAcceptEncodingGzip",
    "HeadersConfig",
    "CookiesConfig",
    "QueryStringsConfig"
   ],
   "type": "object"
  },
  "QueryStringsConfig": {
   "additionalProperties": false,
   "properties": {
    "QueryStringBehavior": {
     "pattern": "^(none|whitelist|allExcept|all)$",
     "type": "string"
    },
    "QueryStrings": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "required": [
    "QueryStringBehavior"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Id"
 ],
 "properties": {
  "CachePolicyConfig": {
   "$ref": "#/definitions/CachePolicyConfig"
  },
  "Id": {
   "type": "string"
  },
  "LastModifiedTime": {
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/Id",
  "/properties/LastModifiedTime"
 ],
 "required": [
  "CachePolicyConfig"
 ],
 "typeName": "AWS::CloudFront::CachePolicy"
}
