{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/VpcId"
 ],
 "definitions": {
  "ResourceExclusions": {
   "additionalProperties": false,
   "properties": {
    "EgressOnlyInternetGateway": {
     "$ref": "#/definitions/VpcEncryptionControlExclusion"
    },
    "ElasticFileSystem": {
     "$ref": "#/definitions/VpcEncryptionControlExclusion"
    },
    "InternetGateway": {
     "$ref": "#/definitions/VpcEncryptionControlExclusion"
    },
    "Lambda": {
     "$ref": "#/definitions/VpcEncryptionControlExclusion"
    },
    "NatGateway": {
     "$ref": "#/definitions/VpcEncryptionControlExclusion"
    },
    "VirtualPrivateGateway": {
     "$ref": "#/definitions/VpcEncryptionControlExclusion"
    },
    "VpcLattice": {
     "$ref": "#/definitions/VpcEncryptionControlExclusion"
    },
    "VpcPeering": {
     "$ref": "#/definitions/VpcEncryptionControlExclusion"
    }
   },
   "type": "object"
  },
  "Tag": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "maxLength": 128,
     "minLength": 1,
     "type": "string"
    },
    "Value": {
     "maxLength": 256,
     "minLength": 0,
     "type": "string"
    }
   },
   "required": [
    "Key",
    "Value"
   ],
   "type": "object"
  },
  "VpcEncryptionControlExclusion": {
   "additionalProperties": false,
   "properties": {
    "State": {
     "type": "string"
    },
    "StateMessage": {
     "type": "string"
    }
   },
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/VpcEncryptionControlId"
 ],
 "properties": {
  "EgressOnlyInternetGatewayExclusionInput": {
   "enum": [
    "enable",
    "disable"
   ],
   "type": "string"
  },
  "ElasticFileSystemExclusionInput": {
   "enum": [
    "enable",
    "disable"
   ],
   "type": "string"
  },
  "InternetGatewayExclusionInput": {
   "enum": [
    "enable",
    "disable"
   ],
   "type": "string"
  },
  "LambdaExclusionInput": {
   "enum": [
    "enable",
    "disable"
   ],
   "type": "string"
  },
  "Mode": {
   "enum": [
    "monitor",
    "enforce"
   ],
   "type": "string"
  },
  "NatGatewayExclusionInput": {
   "enum": [
    "enable",
    "disable"
   ],
   "type": "string"
  },
  "ResourceExclusions": {
   "$ref": "#/definitions/ResourceExclusions"
  },
  "State": {
   "enum": [
    "creating",
    "available",
    "monitor-in-progress",
    "enforce-in-progress",
    "monitor-failed",
    "enforce-failed",
    "deleting",
    "deleted",
    "delete-failed"
   ],
   "type": "string"
  },
  "StateMessage": {
   "type": "string"
  },
  "Tags": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "type": "array",
   "uniqueItems": false
  },
  "VirtualPrivateGatewayExclusionInput": {
   "enum": [
    "enable",
    "disable"
   ],
   "type": "string"
  },
  "VpcEncryptionControlId": {
   "type": "string"
  },
  "VpcId": {
   "format": "AWS::EC2::VPC.Id",
   "type": "string"
  },
  "VpcLatticeExclusionInput": {
   "enum": [
    "enable",
    "disable"
   ],
   "type": "string"
  },
  "VpcPeeringExclusionInput": {
   "enum": [
    "enable",
    "disable"
   ],
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/VpcEncryptionControlId",
  "/properties/State",
  "/properties/StateMessage",
  "/properties/ResourceExclusions",
  "/properties/ResourceExclusions/InternetGateway",
  "/properties/ResourceExclusions/InternetGateway/State",
  "/properties/ResourceExclusions/InternetGateway/StateMessage",
  "/properties/ResourceExclusions/EgressOnlyInternetGateway",
  "/properties/ResourceExclusions/EgressOnlyInternetGateway/State",
  "/properties/ResourceExclusions/EgressOnlyInternetGateway/StateMessage",
  "/properties/ResourceExclusions/NatGateway",
  "/properties/ResourceExclusions/NatGateway/State",
  "/properties/ResourceExclusions/NatGateway/StateMessage",
  "/properties/ResourceExclusions/VirtualPrivateGateway",
  "/properties/ResourceExclusions/VirtualPrivateGateway/State",
  "/properties/ResourceExclusions/VirtualPrivateGateway/StateMessage",
  "/properties/ResourceExclusions/VpcPeering",
  "/properties/ResourceExclusions/VpcPeering/State",
  "/properties/ResourceExclusions/VpcPeering/StateMessage",
  "/properties/ResourceExclusions/VpcLattice",
  "/properties/ResourceExclusions/VpcLattice/State",
  "/properties/ResourceExclusions/VpcLattice/StateMessage",
  "/properties/ResourceExclusions/ElasticFileSystem",
  "/properties/ResourceExclusions/ElasticFileSystem/State",
  "/properties/ResourceExclusions/ElasticFileSystem/StateMessage",
  "/properties/ResourceExclusions/Lambda",
  "/properties/ResourceExclusions/Lambda/State",
  "/properties/ResourceExclusions/Lambda/StateMessage"
 ],
 "required": [],
 "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpcencryptioncontrol.git",
 "tagging": {
  "cloudFormationSystemTags": true,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": true,
  "taggable": true
 },
 "typeName": "AWS::EC2::VPCEncryptionControl",
 "writeOnlyProperties": [
  "/properties/InternetGatewayExclusionInput",
  "/properties/EgressOnlyInternetGatewayExclusionInput",
  "/properties/NatGatewayExclusionInput",
  "/properties/VirtualPrivateGatewayExclusionInput",
  "/properties/VpcPeeringExclusionInput",
  "/properties/VpcLatticeExclusionInput",
  "/properties/ElasticFileSystemExclusionInput",
  "/properties/LambdaExclusionInput"
 ]
}
