{
  "additionalProperties" : false,
  "definitions" : {
    "AnycastIpList" : {
      "additionalProperties" : false,
      "properties" : {
        "AnycastIps" : {
          "items" : {
            "type" : "string"
          },
          "type" : "array",
          "description" : "The static IP addresses that are allocated to the Anycast static IP list."
        },
        "Arn" : {
          "type" : "string",
          "description" : "The Amazon Resource Name (ARN) of the Anycast static IP list."
        },
        "Id" : {
          "type" : "string",
          "description" : "The ID of the Anycast static IP list."
        },
        "IpCount" : {
          "type" : "integer",
          "description" : "The number of IP addresses in the Anycast static IP list."
        },
        "IpAddressType" : {
          "$ref" : "#/definitions/IpAddressType",
          "description" : "The IP address type for the Anycast static IP list."
        },
        "IpamCidrConfigResults" : {
          "$ref" : "#/definitions/IpamCidrConfigResults",
          "description" : "The results for the IPAM CIDRs that defines a specific IP address range, IPAM pool, and associated Anycast IP address."
        },
        "LastModifiedTime" : {
          "format" : "date-time",
          "type" : "string",
          "description" : "The last time the Anycast static IP list was modified."
        },
        "Name" : {
          "maxLength" : 64,
          "minLength" : 1,
          "pattern" : "^[a-zA-Z0-9-_]{1,64}$",
          "type" : "string",
          "description" : "The name of the Anycast static IP list."
        },
        "Status" : {
          "type" : "string",
          "description" : "The status of the Anycast static IP list. Valid values: ``Deployed``, ``Deploying``, or ``Failed``."
        }
      },
      "required" : [ "AnycastIps", "Arn", "Id", "IpCount", "LastModifiedTime", "Name", "Status" ],
      "type" : "object",
      "description" : "An Anycast static IP list. For more information, see [Request Anycast static IPs to use for allowlisting](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/request-static-ips.html) in the *Amazon CloudFront Developer Guide*."
    },
    "Tag" : {
      "additionalProperties" : false,
      "properties" : {
        "Key" : {
          "maxLength" : 128,
          "minLength" : 1,
          "pattern" : "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
          "type" : "string",
          "description" : "A string that contains ``Tag`` key.\n The string length should be between 1 and 128 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``."
        },
        "Value" : {
          "maxLength" : 256,
          "minLength" : 0,
          "pattern" : "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
          "type" : "string",
          "description" : "A string that contains an optional ``Tag`` value.\n The string length should be between 0 and 256 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``."
        }
      },
      "required" : [ "Key" ],
      "type" : "object",
      "description" : "A complex type that contains ``Tag`` key and ``Tag`` value."
    },
    "Tags" : {
      "additionalProperties" : false,
      "properties" : {
        "Items" : {
          "items" : {
            "$ref" : "#/definitions/Tag"
          },
          "type" : "array",
          "description" : "A complex type that contains ``Tag`` elements."
        }
      },
      "type" : "object",
      "description" : "A complex type that contains zero or more ``Tag`` elements."
    },
    "IpAddressType" : {
      "enum" : [ "ipv4", "dualstack" ],
      "type" : "string"
    },
    "IpamCidrConfigResult" : {
      "additionalProperties" : false,
      "properties" : {
        "Cidr" : {
          "type" : "string",
          "description" : "The CIDR that specifies the IP address range for this IPAM configuration."
        },
        "IpamPoolArn" : {
          "type" : "string",
          "description" : "The Amazon Resource Name (ARN) of the IPAM pool that the CIDR block is assigned to."
        },
        "AnycastIp" : {
          "type" : "string",
          "description" : "The specified Anycast IP address allocated from the IPAM pool for this CIDR configuration."
        },
        "Status" : {
          "type" : "string",
          "description" : "The current status of the IPAM CIDR configuration."
        }
      },
      "type" : "object",
      "description" : "The result for the IPAM CIDR that defines a specific IP address range, IPAM pool, and associated Anycast IP address."
    },
    "IpamCidrConfigResults" : {
      "additionalProperties" : false,
      "items" : {
        "$ref" : "#/definitions/IpamCidrConfigResult"
      },
      "type" : "array",
      "uniqueItems" : false
    },
    "IpamCidrConfig" : {
      "additionalProperties" : false,
      "properties" : {
        "Cidr" : {
          "type" : "string",
          "description" : "The CIDR that specifies the IP address range for this IPAM configuration."
        },
        "IpamPoolArn" : {
          "type" : "string",
          "description" : "The Amazon Resource Name (ARN) of the IPAM pool that the CIDR block is assigned to."
        }
      },
      "required" : [ "Cidr", "IpamPoolArn" ],
      "type" : "object",
      "description" : "Configuration for an IPAM CIDR that defines a specific IP address range, IPAM pool, and associated Anycast IP address."
    },
    "IpamCidrConfigs" : {
      "additionalProperties" : false,
      "items" : {
        "$ref" : "#/definitions/IpamCidrConfig"
      },
      "type" : "array",
      "uniqueItems" : false
    }
  },
  "description" : "An Anycast static IP list. For more information, see [Request Anycast static IPs to use for allowlisting](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/request-static-ips.html) in the *Amazon CloudFront Developer Guide*.",
  "handlers" : {
    "create" : {
      "permissions" : [ "cloudfront:CreateAnycastIpList", "cloudfront:TagResource" ]
    },
    "delete" : {
      "permissions" : [ "cloudfront:DeleteAnycastIpList", "cloudfront:GetAnycastIpList" ]
    },
    "update" : {
      "permissions" : [ "cloudfront:UpdateAnycastIpList", "cloudfront:GetAnycastIpList", "cloudfront:ListTagsForResource", "cloudfront:TagResource", "cloudfront:UntagResource" ]
    },
    "list" : {
      "permissions" : [ "cloudfront:ListAnycastIpLists" ]
    },
    "read" : {
      "permissions" : [ "cloudfront:GetAnycastIpList", "cloudfront:ListTagsForResource" ]
    }
  },
  "primaryIdentifier" : [ "/properties/Id" ],
  "properties" : {
    "AnycastIpList" : {
      "$ref" : "#/definitions/AnycastIpList",
      "description" : ""
    },
    "ETag" : {
      "type" : "string",
      "description" : ""
    },
    "Id" : {
      "type" : "string",
      "description" : ""
    },
    "IpCount" : {
      "type" : "integer",
      "description" : "The number of IP addresses in the Anycast static IP list."
    },
    "IpAddressType" : {
      "$ref" : "#/definitions/IpAddressType",
      "description" : "The IP address type for the Anycast static IP list."
    },
    "IpamCidrConfigs" : {
      "$ref" : "#/definitions/IpamCidrConfigs",
      "description" : "A list of IPAM CIDR configurations that define the IP address ranges, IPAM pools, and associated Anycast IP addresses."
    },
    "IpamCidrConfigResults" : {
      "$ref" : "#/definitions/IpamCidrConfigResults",
      "description" : ""
    },
    "Name" : {
      "maxLength" : 64,
      "minLength" : 1,
      "pattern" : "^[a-zA-Z0-9-_]{1,64}$",
      "type" : "string",
      "description" : "The name of the Anycast static IP list."
    },
    "Tags" : {
      "$ref" : "#/definitions/Tags",
      "description" : "A complex type that contains zero or more ``Tag`` elements."
    }
  },
  "createOnlyProperties" : [ "/properties/IpCount", "/properties/Name", "/properties/Tags" ],
  "readOnlyProperties" : [ "/properties/AnycastIpList", "/properties/ETag", "/properties/Id", "/properties/IpamCidrConfigResults" ],
  "writeOnlyProperties" : [ "/properties/IpamCidrConfigs" ],
  "required" : [ "IpCount", "Name" ],
  "tagging" : {
    "cloudFormationSystemTags" : false,
    "permissions" : [ "cloudfront:TagResource", "cloudfront:UntagResource", "cloudfront:ListTagsForResource" ],
    "tagOnCreate" : true,
    "tagProperty" : "/properties/Tags",
    "tagUpdatable" : true,
    "taggable" : true
  },
  "typeName" : "AWS::CloudFront::AnycastIpList"
}