{

"AWS::AmazonMQ::Broker": {
  "full_properties": {
    "AutoMinorVersionUpgrade": {
      "description": "Enables automatic upgrades to new minor versions for brokers, as Apache releases the versions. The automatic upgrades occur during the maintenance window of the broker or after a manual broker reboot.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "BrokerName": {
      "description": "The name of the broker. This value must be unique in your AWS account, 1-50 characters long, must contain only letters, numbers, dashes, and underscores, and must not contain white spaces, brackets, wildcard characters, or special characters.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Configuration": {
      "description": "A list of information about the configuration.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DeploymentMode": {
      "description": "The deployment mode of the broker. Available values:",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EncryptionOptions": {
      "description": "Encryption options for the broker.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "EngineType": {
      "description": "The type of broker engine. Note: Currently, Amazon MQ supports only ACTIVEMQ.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineVersion": {
      "description": "The version of the broker engine. For a list of supported engine versions, see https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "HostInstanceType": {
      "description": "The broker's instance type.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Logs": {
      "description": "Enables Amazon CloudWatch logging for brokers.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MaintenanceWindowStartTime": {
      "description": "The scheduled time period relative to UTC during which Amazon MQ begins to apply pending updates or patches to the broker..",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "PubliclyAccessible": {
      "description": "Enables connections from applications outside of the VPC that hosts the broker's subnets.",
      "required": true,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "SecurityGroups": {
      "description": "The list of rules (1 minimum, 125 maximum) that authorize connections to brokers.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SubnetIds": {
      "description": "The list of groups (2 maximum) that define which subnets and IP ranges the broker can use from different Availability Zones. A SINGLE_INSTANCE deployment requires one subnet (for example, the default subnet). An ACTIVE_STANDBY_MULTI_AZ deployment requires two subnets.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An array of key-value pairs. For more information, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Users": {
      "description": "The list of ActiveMQ users (persons or applications) who can access queues and topics. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-amazonmq-broker.html",
  "properties": [
    "AutoMinorVersionUpgrade",
    "BrokerName",
    "Configuration",
    "DeploymentMode",
    "EncryptionOptions",
    "EngineType",
    "EngineVersion",
    "HostInstanceType",
    "Logs",
    "MaintenanceWindowStartTime",
    "PubliclyAccessible",
    "SecurityGroups",
    "SubnetIds",
    "Tags",
    "Users"
  ]
},
"AWS::AmazonMQ::Configuration": {
  "full_properties": {
    "Data": {
      "description": "The base64-encoded XML configuration.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the configuration.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EngineType": {
      "description": "The type of broker engine. Note: Currently, Amazon MQ supports only ACTIVEMQ.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineVersion": {
      "description": "The version of the broker engine. For a list of supported engine versions, see Engine.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the configuration. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 1-150 characters long.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Create tags when creating the configuration.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-amazonmq-configuration.html",
  "properties": [
    "Data",
    "Description",
    "EngineType",
    "EngineVersion",
    "Name",
    "Tags"
  ]
},
"AWS::AmazonMQ::ConfigurationAssociation": {
  "full_properties": {
    "Broker": {
      "description": "The broker to associate with a configuration.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Configuration": {
      "description": "The configuration to associate with a broker.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-amazonmq-configurationassociation.html",
  "properties": [
    "Broker",
    "Configuration"
  ]
},
"AWS::Amplify::App": {
  "full_properties": {
    "AccessToken": {
      "description": "Personal Access token for 3rd party source control system for an Amplify App, used to create webhook and read-only deploy key. Token is not stored.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AutoBranchCreationConfig": {
      "description": "Sets the configuration for your automatic branch creation.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BasicAuthConfig": {
      "description": "Credentials for Basic Authorization for an Amplify App.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BuildSpec": {
      "description": "BuildSpec for an Amplify App",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "CustomRules": {
      "description": "Custom rewrite / redirect rules for an Amplify App.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Description": {
      "description": "Description for an Amplify App",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EnvironmentVariables": {
      "description": "Environment variables map for an Amplify App.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "IAMServiceRole": {
      "description": "IAM service role ARN for the Amplify App.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "Name for the Amplify App",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "OauthToken": {
      "description": "OAuth token for 3rd party source control system for an Amplify App, used to create webhook and read-only deploy key. OAuth token is not stored.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Repository": {
      "description": "Repository for an Amplify App",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Tag for an Amplify App",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-amplify-app.html",
  "properties": [
    "AccessToken",
    "AutoBranchCreationConfig",
    "BasicAuthConfig",
    "BuildSpec",
    "CustomRules",
    "Description",
    "EnvironmentVariables",
    "IAMServiceRole",
    "Name",
    "OauthToken",
    "Repository",
    "Tags"
  ]
},
"AWS::Amplify::Branch": {
  "full_properties": {
    "AppId": {
      "description": "Unique Id for an Amplify App.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "BasicAuthConfig": {
      "description": "Basic Authorization credentials for a branch, part of an Amplify App.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BranchName": {
      "description": "Name for the branch.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "BuildSpec": {
      "description": "BuildSpec for the branch.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "Description for the branch.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EnableAutoBuild": {
      "description": "Enables auto building for the branch.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "EnvironmentVariables": {
      "description": "Environment Variables for the branch.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Stage": {
      "description": "Stage for the branch.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Tag for the branch.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-amplify-branch.html",
  "properties": [
    "AppId",
    "BasicAuthConfig",
    "BranchName",
    "BuildSpec",
    "Description",
    "EnableAutoBuild",
    "EnvironmentVariables",
    "Stage",
    "Tags"
  ]
},
"AWS::Amplify::Domain": {
  "full_properties": {
    "AppId": {
      "description": "Unique Id for an Amplify App.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DomainName": {
      "description": "Domain name for the Domain Association.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubDomainSettings": {
      "description": "Setting structure for the Subdomain.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-amplify-domain.html",
  "properties": [
    "AppId",
    "DomainName",
    "SubDomainSettings"
  ]
},
"AWS::ApiGateway::Account": {
  "full_properties": {
    "CloudWatchRoleArn": {
      "description": "The Amazon Resource Name (ARN) of an IAM role that has write access to CloudWatch Logs in your account.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-account.html",
  "properties": [
    "CloudWatchRoleArn"
  ]
},
"AWS::ApiGateway::ApiKey": {
  "full_properties": {
    "CustomerId": {
      "description": "An AWS Marketplace customer identifier to use when integrating with the AWS SaaS Marketplace.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the purpose of the API key.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Enabled": {
      "description": "Indicates whether the API key can be used by clients.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "GenerateDistinctId": {
      "description": "Specifies whether the key identifier is distinct from the created API key value.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "A name for the API key. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the API key name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "StageKeys": {
      "description": "A list of stages to associate with this API key.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Value": {
      "description": "The value of the API key. Must be at least 20 characters long.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-apigateway-apikey.html",
  "properties": [
    "CustomerId",
    "Description",
    "Enabled",
    "GenerateDistinctId",
    "Name",
    "StageKeys",
    "Value"
  ]
},
"AWS::ApiGateway::Authorizer": {
  "full_properties": {
    "AuthType": {
      "description": "An optional customer-defined field that's used in OpenApi imports and exports without functional impact.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AuthorizerCredentials": {
      "description": "The credentials that are required for the authorizer. To specify an IAM role that API Gateway assumes, specify the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AuthorizerResultTtlInSeconds": {
      "description": "The time-to-live (TTL) period, in seconds, that specifies how long API Gateway caches authorizer results. If you specify a value greater than 0, API Gateway caches the authorizer responses. By default, API Gateway sets this property to 300. The maximum value is 3600, or 1 hour.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "AuthorizerUri": {
      "description": "The authorizer's Uniform Resource Identifier (URI). If you specify TOKEN for the authorizer's Type property, specify a Lambda function URI that has the form arn:aws:apigateway:region:lambda:path/path. The path usually has the form /2015-03-31/functions/LambdaFunctionARN/invocations.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "IdentitySource": {
      "description": "The source of the identity in an incoming request.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "IdentityValidationExpression": {
      "description": "A validation expression for the incoming identity. If you specify TOKEN for the authorizer's Type property, specify a regular expression. API Gateway uses the expression to attempt to match the incoming client token, and proceeds if the token matches. If the token doesn't match, API Gateway responds with a 401 (unauthorized request) error code.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the authorizer.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ProviderARNs": {
      "description": "A list of the Amazon Cognito user pool Amazon Resource Names (ARNs) to associate with this authorizer. For more information, see Use Amazon Cognito User Pools in the API Gateway Developer Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "RestApiId": {
      "description": "The ID of the RestApi resource that API Gateway creates the authorizer in.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Type": {
      "description": "The type of authorizer. Valid values include:",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-authorizer.html",
  "properties": [
    "AuthorizerCredentials",
    "AuthorizerResultTtlInSeconds",
    "AuthorizerUri",
    "AuthType",
    "IdentitySource",
    "IdentityValidationExpression",
    "Name",
    "ProviderARNs",
    "RestApiId",
    "Type"
  ]
},
"AWS::ApiGateway::BasePathMapping": {
  "full_properties": {
    "BasePath": {
      "description": "The base path name that callers of the API must provide in the URL after the domain name. If you specify this property, it can't be an empty string.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DomainName": {
      "description": "The DomainName of an AWS::ApiGateway::DomainName resource.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RestApiId": {
      "description": "The name of the API.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Stage": {
      "description": "The name of the API's stage.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-basepathmapping.html",
  "properties": [
    "BasePath",
    "DomainName",
    "RestApiId",
    "Stage"
  ]
},
"AWS::ApiGateway::ClientCertificate": {
  "full_properties": {
    "Description": {
      "description": "A description of the client certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-clientcertificate.html",
  "properties": [
    "Description"
  ]
},
"AWS::ApiGateway::Deployment": {
  "full_properties": {
    "DeploymentCanarySettings": {
      "description": "Specifies settings for the canary deployment.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "A description of the purpose of the API Gateway deployment.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RestApiId": {
      "description": "The ID of the RestApi resource to deploy.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "StageDescription": {
      "description": "Configures the stage that API Gateway creates with this deployment.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "StageName": {
      "description": "A name for the stage that API Gateway creates with this deployment. Use only alphanumeric characters.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-deployment.html",
  "properties": [
    "DeploymentCanarySettings",
    "Description",
    "RestApiId",
    "StageDescription",
    "StageName"
  ]
},
"AWS::ApiGateway::DocumentationPart": {
  "full_properties": {
    "Location": {
      "description": "The location of the API entity that the documentation applies to.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Properties": {
      "description": "The documentation content map of the targeted API entity.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RestApiId": {
      "description": "The identifier of the targeted API entity.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-apigateway-documentationpart.html",
  "properties": [
    "Location",
    "Properties",
    "RestApiId"
  ]
},
"AWS::ApiGateway::DocumentationVersion": {
  "full_properties": {
    "Description": {
      "description": "The description of the API documentation snapshot.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DocumentationVersion": {
      "description": "The version identifier of the API documentation snapshot.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RestApiId": {
      "description": "The identifier of the API.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-apigateway-documentationversion.html",
  "properties": [
    "Description",
    "DocumentationVersion",
    "RestApiId"
  ]
},
"AWS::ApiGateway::DomainName": {
  "full_properties": {
    "CertificateArn": {
      "description": "The reference to an AWS-managed certificate for use by the edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source. For requirements and additional information about setting up certificates, see Get Certificates Ready in AWS Certificate Manager in the API Gateway Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DomainName": {
      "description": "The custom domain name for your API. Uppercase letters are not supported.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EndpointConfiguration": {
      "description": "A list of the endpoint types of the domain name.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RegionalCertificateArn": {
      "description": "The reference to an AWS-managed certificate for use by the regional endpoint for the domain name. AWS Certificate Manager is the only supported source.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-domainname.html",
  "properties": [
    "CertificateArn",
    "DomainName",
    "EndpointConfiguration",
    "RegionalCertificateArn"
  ]
},
"AWS::ApiGateway::GatewayResponse": {
  "full_properties": {
    "ResponseParameters": {
      "description": "The response parameters (paths, query strings, and headers) for the response. Duplicates not allowed.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ResponseTemplates": {
      "description": "The response templates for the response. Duplicates not allowed.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ResponseType": {
      "description": "The response type. For valid values, see GatewayResponse in the API Gateway API Reference.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RestApiId": {
      "description": "The identifier of the API.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "StatusCode": {
      "description": "The HTTP status code for the response.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-gatewayresponse.html",
  "properties": [
    "ResponseParameters",
    "ResponseTemplates",
    "ResponseType",
    "RestApiId",
    "StatusCode"
  ]
},
"AWS::ApiGateway::Method": {
  "full_properties": {
    "ApiKeyRequired": {
      "description": "Indicates whether the method requires clients to submit a valid API key.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AuthorizationScopes": {
      "description": "A list of authorization scopes configured on the method. The scopes are used with a COGNITO_USER_POOLS authorizer to authorize the method invocation. The authorization works by matching the method scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any method scopes match a claimed scope in the access token. Otherwise, the invocation is not authorized. When the method scope is configured, the client must provide an access token instead of an identity token for authorization purposes.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "AuthorizationType": {
      "description": "The method's authorization type. This parameter is required. For valid values, see Method in the API Gateway API Reference.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AuthorizerId": {
      "description": "The identifier of the authorizer to use on this method. If you specify this property, specify CUSTOM for the AuthorizationType property.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "HttpMethod": {
      "description": "The HTTP method that clients use to call this method.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Integration": {
      "description": "The backend system that the method calls when it receives a request.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MethodResponses": {
      "description": "The responses that can be sent to the client who calls the method.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "OperationName": {
      "description": "A friendly operation name for the method. For example, you can assign the OperationName of ListPets for the GET /pets method.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RequestModels": {
      "description": "The resources that are used for the request's content type. Specify request models as key-value pairs (string-to-string mapping), with a content type as the key and a Model resource name as the value.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RequestParameters": {
      "description": "The request parameters that API Gateway accepts. Specify request parameters as key-value pairs (string-to-Boolean mapping), with a source as the key and a Boolean as the value. The Boolean specifies whether a parameter is required. A source must match the format method.request.location.name, where the location is query string, path, or header, and name is a valid, unique parameter name.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RequestValidatorId": {
      "description": "The ID of the associated request validator.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ResourceId": {
      "description": "The ID of an API Gateway resource. For root resource methods, specify the RestApi root resource ID, such as { \"Fn::GetAtt\": [\"MyRestApi\", \"RootResourceId\"] }.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RestApiId": {
      "description": "The ID of the RestApi resource in which API Gateway creates the method.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-method.html",
  "properties": [
    "ApiKeyRequired",
    "AuthorizationScopes",
    "AuthorizationType",
    "AuthorizerId",
    "HttpMethod",
    "Integration",
    "MethodResponses",
    "OperationName",
    "RequestModels",
    "RequestParameters",
    "RequestValidatorId",
    "ResourceId",
    "RestApiId"
  ]
},
"AWS::ApiGateway::Model": {
  "full_properties": {
    "ContentType": {
      "description": "The content type for the model.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "A description that identifies this model.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "A name for the model. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the model name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "RestApiId": {
      "description": "The ID of a REST API with which to associate this model.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Schema": {
      "description": "The schema to use to transform data to one or more output formats. Specify null ({}) if you don't want to specify a schema.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-model.html",
  "properties": [
    "ContentType",
    "Description",
    "Name",
    "RestApiId",
    "Schema"
  ]
},
"AWS::ApiGateway::RequestValidator": {
  "full_properties": {
    "Name": {
      "description": "The name of this request validator.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RestApiId": {
      "description": "The identifier of the targeted API entity.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ValidateRequestBody": {
      "description": "Indicates whether to validate the request body according to the configured schema for the targeted API and method.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "ValidateRequestParameters": {
      "description": "Indicates whether to validate request parameters.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-requestvalidator.html",
  "properties": [
    "Name",
    "RestApiId",
    "ValidateRequestBody",
    "ValidateRequestParameters"
  ]
},
"AWS::ApiGateway::Resource": {
  "full_properties": {
    "ParentId": {
      "description": "If you want to create a child resource, the ID of the parent resource. For resources without a parent, specify the RestApi root resource ID, such as { \"Fn::GetAtt\": [\"MyRestApi\", \"RootResourceId\"] }.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "PathPart": {
      "description": "A path name for the resource.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RestApiId": {
      "description": "The ID of the RestApi resource in which you want to create this resource.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-apigateway-resource.html",
  "properties": [
    "ParentId",
    "PathPart",
    "RestApiId"
  ]
},
"AWS::ApiGateway::RestApi": {
  "full_properties": {
    "ApiKeySourceType": {
      "description": "The source of the API key for metering requests according to a usage plan. Valid values are:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "BinaryMediaTypes": {
      "description": "The list of binary media types that are supported by the RestApi resource, such as image/png or application/octet-stream. By default, RestApi supports only UTF-8-encoded text payloads. Duplicates are not allowed. Slashes must be escaped with ~1. For example, image/png would be image~1png in the BinaryMediaTypes list. For more information, see Enable Support for Binary Payloads in API Gateway in the API Gateway Developer Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Body": {
      "description": "An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BodyS3Location": {
      "description": "The Amazon Simple Storage Service (Amazon S3) location that points to an OpenAPI file, which defines a set of RESTful APIs in JSON or YAML format.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CloneFrom": {
      "description": "The ID of the RestApi resource that you want to clone.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the RestApi resource.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EndpointConfiguration": {
      "description": "A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the Parameters property.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "FailOnWarnings": {
      "description": "Indicates whether to roll back the resource if a warning occurs while API Gateway is creating the RestApi resource.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "MinimumCompressionSize": {
      "description": "A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Name": {
      "description": "A name for the RestApi resource.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Parameters": {
      "description": "Custom header parameters for the request.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Policy": {
      "description": "A policy document that contains the permissions for the RestApi resource, in JSON format. To set the ARN for the policy, use the !Join intrinsic function with \"\" as delimiter and values of \"execute-api:/\" and \"*\".",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-restapi.html",
  "properties": [
    "ApiKeySourceType",
    "BinaryMediaTypes",
    "Body",
    "BodyS3Location",
    "CloneFrom",
    "Description",
    "EndpointConfiguration",
    "FailOnWarnings",
    "MinimumCompressionSize",
    "Name",
    "Parameters",
    "Policy"
  ]
},
"AWS::ApiGateway::Stage": {
  "full_properties": {
    "AccessLogSetting": {
      "description": "Specifies settings for logging access in this stage.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CacheClusterEnabled": {
      "description": "Indicates whether cache clustering is enabled for the stage.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "CacheClusterSize": {
      "description": "The stage's cache cluster size.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "CanarySetting": {
      "description": "Specifies settings for the canary deployment in this stage.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ClientCertificateId": {
      "description": "The ID of the client certificate that API Gateway uses to call your integration endpoints in the stage.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DeploymentId": {
      "description": "The ID of the deployment that the stage is associated with. This parameter is required.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the stage.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DocumentationVersion": {
      "description": "The version ID of the API documentation snapshot.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MethodSettings": {
      "description": "Settings for all methods in the stage.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "RestApiId": {
      "description": "The ID of the RestApi resource that you're deploying with this stage.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "StageName": {
      "description": "The name of the stage, which API Gateway uses as the first path segment in the invoked Uniform Resource Identifier (URI).",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An array of arbitrary tags (key-value pairs) to associate with the stage.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TracingEnabled": {
      "description": "Specifies whether active X-Ray tracing is enabled for this stage.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Variables": {
      "description": "A map (string-to-string map) that defines the stage variables, where the variable name is the key and the variable value is the value. Variable names are limited to alphanumeric characters. Values must match the following regular expression: [A-Za-z0-9-._~:/?#&=,]+.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-stage.html",
  "properties": [
    "AccessLogSetting",
    "CacheClusterEnabled",
    "CacheClusterSize",
    "CanarySetting",
    "ClientCertificateId",
    "DeploymentId",
    "Description",
    "DocumentationVersion",
    "MethodSettings",
    "RestApiId",
    "StageName",
    "Tags",
    "TracingEnabled",
    "Variables"
  ]
},
"AWS::ApiGateway::UsagePlan": {
  "full_properties": {
    "ApiStages": {
      "description": "The API stages to associate with this usage plan.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the usage plan.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Quota": {
      "description": "Configures the number of requests that users can make within a given interval.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Throttle": {
      "description": "Configures the overall request rate (average requests per second) and burst capacity.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "UsagePlanName": {
      "description": "A name for the usage plan.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigateway-usageplan.html",
  "properties": [
    "ApiStages",
    "Description",
    "Quota",
    "Throttle",
    "UsagePlanName"
  ]
},
"AWS::ApiGateway::UsagePlanKey": {
  "full_properties": {
    "KeyId": {
      "description": "The ID of the usage plan key.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "KeyType": {
      "description": "The type of usage plan key. Currently, the only valid key type is API_KEY.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "UsagePlanId": {
      "description": "The value of the usage plan key.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-apigateway-usageplankey.html",
  "properties": [
    "KeyId",
    "KeyType",
    "UsagePlanId"
  ]
},
"AWS::ApiGateway::VpcLink": {
  "full_properties": {
    "Description": {
      "description": "A description of the VPC link.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "A name for the VPC link.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TargetArns": {
      "description": "The ARNs of network load balancers of the VPC targeted by the VPC link. The network load balancers must be owned by the same AWS account of the API owner.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-apigateway-vpclink.html",
  "properties": [
    "Description",
    "Name",
    "TargetArns"
  ]
},
"AWS::ApiGatewayV2::Api": {
  "full_properties": {
    "ApiKeySelectionExpression": {
      "description": "An API key selection expression. See API Key Selection Expressions.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the API.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DisableSchemaValidation": {
      "description": "Avoid validating models when creating a deployment.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the API.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ProtocolType": {
      "description": "The API protocol: Currently only WEBSOCKET is supported.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RouteSelectionExpression": {
      "description": "The route selection expression for the API.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The collection of tags. Each tag element is associated with a given resource.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Version": {
      "description": "A version identifier for the API.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-api.html",
  "properties": [
    "ApiKeySelectionExpression",
    "Description",
    "DisableSchemaValidation",
    "Name",
    "ProtocolType",
    "RouteSelectionExpression",
    "Tags",
    "Version"
  ]
},
"AWS::ApiGatewayV2::ApiMapping": {
  "full_properties": {
    "ApiId": {
      "description": "The identifier of the API.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ApiMappingKey": {
      "description": "The API mapping key.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DomainName": {
      "description": "The domain name.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Stage": {
      "description": "The API stage.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-apimapping.html",
  "properties": [
    "ApiId",
    "ApiMappingKey",
    "DomainName",
    "Stage"
  ]
},
"AWS::ApiGatewayV2::Authorizer": {
  "full_properties": {
    "ApiId": {
      "description": "The API identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "AuthorizerCredentialsArn": {
      "description": "Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AuthorizerResultTtlInSeconds": {
      "description": "The time to live (TTL), in seconds, of cached authorizer results. If it is zero, authorization caching is disabled. If it is greater than zero, API Gateway will cache authorizer responses. If this field is not set, the default value is 300. The maximum value is 3600, or 1 hour.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "AuthorizerType": {
      "description": "The authorizer type. Currently the only valid value is REQUEST, for a Lambda function using incoming request parameters.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "AuthorizerUri": {
      "description": "The authorizer's Uniform Resource Identifier (URI). For REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations. In general, the URI has this form: arn:aws:apigateway:{region}:lambda:path/{service_api} , where {region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "IdentitySource": {
      "description": "The identity source for which authorization is requested.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "IdentityValidationExpression": {
      "description": "The validation expression does not apply to the REQUEST authorizer.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the authorizer.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-authorizer.html",
  "properties": [
    "ApiId",
    "AuthorizerCredentialsArn",
    "AuthorizerResultTtlInSeconds",
    "AuthorizerType",
    "AuthorizerUri",
    "IdentitySource",
    "IdentityValidationExpression",
    "Name"
  ]
},
"AWS::ApiGatewayV2::Deployment": {
  "full_properties": {
    "ApiId": {
      "description": "The API identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The description for the deployment resource.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "StageName": {
      "description": "The name of the Stage resource for the Deployment resource to create.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-deployment.html",
  "properties": [
    "ApiId",
    "Description",
    "StageName"
  ]
},
"AWS::ApiGatewayV2::DomainName": {
  "full_properties": {
    "DomainName": {
      "description": "The custom domain name for your API in Amazon API Gateway. Uppercase letters are not supported.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DomainNameConfigurations": {
      "description": "The domain name configurations.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The collection of tags associated with a domain name.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-domainname.html",
  "properties": [
    "DomainName",
    "DomainNameConfigurations",
    "Tags"
  ]
},
"AWS::ApiGatewayV2::Integration": {
  "full_properties": {
    "ApiId": {
      "description": "The API identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ConnectionType": {
      "description": "The type of the network connection to the integration endpoint. Currently the only valid value is INTERNET, for connections through the public routable internet.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ContentHandlingStrategy": {
      "description": "Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "CredentialsArn": {
      "description": "Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the integration.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "IntegrationMethod": {
      "description": "Specifies the integration's HTTP method type.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "IntegrationType": {
      "description": "The integration type of an integration. One of the following:",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "IntegrationUri": {
      "description": "For a Lambda proxy integration, this is the URI of the Lambda function.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PassthroughBehavior": {
      "description": "Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RequestParameters": {
      "description": "A key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.{location}.{name} , where {location} is querystring, path, or header; and {name} must be a valid and unique method request parameter name.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RequestTemplates": {
      "description": "Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TemplateSelectionExpression": {
      "description": "The template selection expression for the integration.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TimeoutInMillis": {
      "description": "Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds or 29 seconds.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-integration.html",
  "properties": [
    "ApiId",
    "ConnectionType",
    "ContentHandlingStrategy",
    "CredentialsArn",
    "Description",
    "IntegrationMethod",
    "IntegrationType",
    "IntegrationUri",
    "PassthroughBehavior",
    "RequestParameters",
    "RequestTemplates",
    "TemplateSelectionExpression",
    "TimeoutInMillis"
  ]
},
"AWS::ApiGatewayV2::IntegrationResponse": {
  "full_properties": {
    "ApiId": {
      "description": "The API identifier.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ContentHandlingStrategy": {
      "description": "Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "IntegrationId": {
      "description": "The integration ID.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "IntegrationResponseKey": {
      "description": "The integration response key.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ResponseParameters": {
      "description": "A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.{name} , where name is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.{name} or integration.response.body.{JSON-expression} , where {name} is a valid and unique response header name and {JSON-expression} is a valid JSON expression without the $ prefix.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ResponseTemplates": {
      "description": "The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TemplateSelectionExpression": {
      "description": "The template selection expression for the integration response.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-integrationresponse.html",
  "properties": [
    "ApiId",
    "ContentHandlingStrategy",
    "IntegrationId",
    "IntegrationResponseKey",
    "ResponseParameters",
    "ResponseTemplates",
    "TemplateSelectionExpression"
  ]
},
"AWS::ApiGatewayV2::Model": {
  "full_properties": {
    "ApiId": {
      "description": "The API identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ContentType": {
      "description": "The content-type for the model, for example, \"application/json\".",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the model.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the model.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Schema": {
      "description": "The schema for the model. For application/json models, this should be JSON schema draft 4 model.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-model.html",
  "properties": [
    "ApiId",
    "ContentType",
    "Description",
    "Name",
    "Schema"
  ]
},
"AWS::ApiGatewayV2::Route": {
  "full_properties": {
    "ApiId": {
      "description": "The API identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ApiKeyRequired": {
      "description": "Specifies whether an API key is required for the route.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AuthorizationScopes": {
      "description": "The authorization scopes supported by this route.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "AuthorizationType": {
      "description": "The authorization type for the route. Valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AuthorizerId": {
      "description": "The identifier of the Authorizer resource to be associated with this route, if the authorizationType is CUSTOM . The authorizer identifier is generated by API Gateway when you created the authorizer.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ModelSelectionExpression": {
      "description": "The model selection expression for the route.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "OperationName": {
      "description": "The operation name for the route.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RequestModels": {
      "description": "The request models for the route.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RequestParameters": {
      "description": "The request parameters for the route.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RouteKey": {
      "description": "The route key for the route.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RouteResponseSelectionExpression": {
      "description": "The route response selection expression for the route.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Target": {
      "description": "The target for the route.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-route.html",
  "properties": [
    "ApiId",
    "ApiKeyRequired",
    "AuthorizationScopes",
    "AuthorizationType",
    "AuthorizerId",
    "ModelSelectionExpression",
    "OperationName",
    "RequestModels",
    "RequestParameters",
    "RouteKey",
    "RouteResponseSelectionExpression",
    "Target"
  ]
},
"AWS::ApiGatewayV2::RouteResponse": {
  "full_properties": {
    "ApiId": {
      "description": "The API identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ModelSelectionExpression": {
      "description": "The model selection expression for the route response.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ResponseModels": {
      "description": "The response models for the route response.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ResponseParameters": {
      "description": "The route response parameters.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RouteId": {
      "description": "The route ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RouteResponseKey": {
      "description": "The route response key.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-routeresponse.html",
  "properties": [
    "ApiId",
    "ModelSelectionExpression",
    "ResponseModels",
    "ResponseParameters",
    "RouteId",
    "RouteResponseKey"
  ]
},
"AWS::ApiGatewayV2::Stage": {
  "full_properties": {
    "AccessLogSettings": {
      "description": "Settings for logging access in this stage.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ApiId": {
      "description": "The API identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ClientCertificateId": {
      "description": "The identifier of a client certificate for a Stage.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultRouteSettings": {
      "description": "The default route settings for the stage.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DeploymentId": {
      "description": "The deployment identifier for the API stage.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description for the API stage.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RouteSettings": {
      "description": "Route settings for the stage.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "StageName": {
      "description": "The stage name. Stage names can only contain alphanumeric characters, hyphens, and underscores. Maximum length is 128 characters.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "StageVariables": {
      "description": "A map that defines the stage variables for a Stage. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&=,]+.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The collection of tags. Each tag element is associated with a given resource.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-apigatewayv2-stage.html",
  "properties": [
    "AccessLogSettings",
    "ApiId",
    "ClientCertificateId",
    "DefaultRouteSettings",
    "DeploymentId",
    "Description",
    "RouteSettings",
    "StageName",
    "StageVariables",
    "Tags"
  ]
},
"AWS::AppMesh::Mesh": {
  "full_properties": {
    "MeshName": {
      "description": "The name to use for the service mesh.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Spec": {
      "description": "The service mesh specification to apply.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Optional metadata that you can apply to the service mesh to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appmesh-mesh.html",
  "properties": [
    "MeshName",
    "Spec",
    "Tags"
  ]
},
"AWS::AppMesh::Route": {
  "full_properties": {
    "MeshName": {
      "description": "The name of the service mesh to create the route in.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RouteName": {
      "description": "The name to use for the route.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Spec": {
      "description": "The route specification to apply.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Optional metadata that you can apply to the route to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VirtualRouterName": {
      "description": "The name of the virtual router in which to create the route.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-appmesh-route.html",
  "properties": [
    "MeshName",
    "RouteName",
    "Spec",
    "Tags",
    "VirtualRouterName"
  ]
},
"AWS::AppMesh::VirtualNode": {
  "full_properties": {
    "MeshName": {
      "description": "The name of the service mesh to create the virtual node in.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Spec": {
      "description": "The virtual node specification to apply.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Optional metadata that you can apply to the virtual node to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VirtualNodeName": {
      "description": "The name to use for the virtual node.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-appmesh-virtualnode.html",
  "properties": [
    "MeshName",
    "Spec",
    "Tags",
    "VirtualNodeName"
  ]
},
"AWS::AppMesh::VirtualRouter": {
  "full_properties": {
    "MeshName": {
      "description": "The name of the service mesh to create the virtual router in.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Spec": {
      "description": "The virtual router specification to apply.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Optional metadata that you can apply to the virtual router to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VirtualRouterName": {
      "description": "The name to use for the virtual router.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-appmesh-virtualrouter.html",
  "properties": [
    "MeshName",
    "Spec",
    "Tags",
    "VirtualRouterName"
  ]
},
"AWS::AppMesh::VirtualService": {
  "full_properties": {
    "MeshName": {
      "description": "The name of the service mesh to create the virtual service in.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Spec": {
      "description": "The virtual service specification to apply.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Optional metadata that you can apply to the virtual service to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VirtualServiceName": {
      "description": "The name to use for the virtual service.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-appmesh-virtualservice.html",
  "properties": [
    "MeshName",
    "Spec",
    "Tags",
    "VirtualServiceName"
  ]
},
"AWS::AppStream::DirectoryConfig": {
  "full_properties": {
    "DirectoryName": {
      "description": "The fully qualified name of the directory (for example, corp.example.com).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "OrganizationalUnitDistinguishedNames": {
      "description": "The distinguished names of the organizational units for computer accounts.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "ServiceAccountCredentials": {
      "description": "The credentials for the service account used by the streaming instance to connect to the directory. Do not use this parameter directly. Use ServiceAccountCredentials as an input parameter with noEcho as shown in the Parameters. For best practices information, see Do Not Embed Credentials in Your Templates.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appstream-directoryconfig.html",
  "properties": [
    "DirectoryName",
    "OrganizationalUnitDistinguishedNames",
    "ServiceAccountCredentials"
  ]
},
"AWS::AppStream::Fleet": {
  "full_properties": {
    "ComputeCapacity": {
      "description": "The desired capacity for the fleet.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description to display.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DisconnectTimeoutInSeconds": {
      "description": "The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "DisplayName": {
      "description": "The fleet name to display.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DomainJoinInfo": {
      "description": "The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EnableDefaultInternetAccess": {
      "description": "Enables or disables default internet access for the fleet.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "FleetType": {
      "description": "The fleet type.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "IdleDisconnectTimeoutInSeconds": {
      "description": "The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the DisconnectTimeoutInSeconds time interval begins. Users are notified before they are disconnected due to inactivity. If they try to reconnect to the streaming session before the time interval specified in DisconnectTimeoutInSeconds elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in IdleDisconnectTimeoutInSeconds elapses, they are disconnected.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "ImageArn": {
      "description": "The ARN of the public, private, or shared image to use.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ImageName": {
      "description": "The name of the image used to create the fleet.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InstanceType": {
      "description": "The instance type to use when launching fleet instances. The following instance types are available:",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "MaxUserDurationInSeconds": {
      "description": "The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Name": {
      "description": "A unique name for the fleet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An array of key-value pairs. For more information, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcConfig": {
      "description": "The VPC configuration for the fleet.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appstream-fleet.html",
  "properties": [
    "ComputeCapacity",
    "Description",
    "DisconnectTimeoutInSeconds",
    "DisplayName",
    "DomainJoinInfo",
    "EnableDefaultInternetAccess",
    "FleetType",
    "IdleDisconnectTimeoutInSeconds",
    "ImageArn",
    "ImageName",
    "InstanceType",
    "MaxUserDurationInSeconds",
    "Name",
    "Tags",
    "VpcConfig"
  ]
},
"AWS::AppStream::ImageBuilder": {
  "full_properties": {
    "AppstreamAgentVersion": {
      "description": "The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify [LATEST].",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description to display.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DisplayName": {
      "description": "The image builder name to display.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DomainJoinInfo": {
      "description": "The name of the directory and organizational unit (OU) to use to join the image builder to a Microsoft Active Directory domain.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EnableDefaultInternetAccess": {
      "description": "Enables or disables default internet access for the image builder.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "ImageArn": {
      "description": "The ARN of the public, private, or shared image to use.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ImageName": {
      "description": "The name of the image used to create the image builder.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InstanceType": {
      "description": "The instance type to use when launching the image builder.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "A unique name for the image builder.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An array of key-value pairs. For more information, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcConfig": {
      "description": "The VPC configuration for the image builder. You can specify only one subnet.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appstream-imagebuilder.html",
  "properties": [
    "AppstreamAgentVersion",
    "Description",
    "DisplayName",
    "DomainJoinInfo",
    "EnableDefaultInternetAccess",
    "ImageArn",
    "ImageName",
    "InstanceType",
    "Name",
    "Tags",
    "VpcConfig"
  ]
},
"AWS::AppStream::Stack": {
  "full_properties": {
    "ApplicationSettings": {
      "description": "The persistent application settings for users of the stack. When these settings are enabled, changes that users make to applications and Windows settings are automatically saved after each session and applied to the next session.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "AttributesToDelete": {
      "description": "The stack attributes to delete.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "DeleteStorageConnectors": {
      "description": "This parameter has been deprecated.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description to display.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DisplayName": {
      "description": "The stack name to display.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "FeedbackURL": {
      "description": "The URL that users are redirected to after they click the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the stack.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RedirectURL": {
      "description": "The URL that users are redirected to after their streaming session ends.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "StorageConnectors": {
      "description": "The storage connectors to enable.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An array of key-value pairs. For more information, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "UserSettings": {
      "description": "The actions that are enabled or disabled for users during their streaming sessions. By default, these actions are enabled.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appstream-stack.html",
  "properties": [
    "ApplicationSettings",
    "AttributesToDelete",
    "DeleteStorageConnectors",
    "Description",
    "DisplayName",
    "FeedbackURL",
    "Name",
    "RedirectURL",
    "StorageConnectors",
    "Tags",
    "UserSettings"
  ]
},
"AWS::AppStream::StackFleetAssociation": {
  "full_properties": {
    "FleetName": {
      "description": "The name of the fleet.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "StackName": {
      "description": "The name of the stack.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appstream-stackfleetassociation.html",
  "properties": [
    "FleetName",
    "StackName"
  ]
},
"AWS::AppStream::StackUserAssociation": {
  "full_properties": {
    "AuthenticationType": {
      "description": "The authentication type for the user who is associated with the stack. You must specify USERPOOL.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SendEmailNotification": {
      "description": "Specifies whether a welcome email is sent to a user after the user is created in the user pool.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "StackName": {
      "description": "The name of the stack that is associated with the user.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "UserName": {
      "description": "The email address of the user who is associated with the stack.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-appstream-stackuserassociation.html",
  "properties": [
    "AuthenticationType",
    "SendEmailNotification",
    "StackName",
    "UserName"
  ]
},
"AWS::AppStream::User": {
  "full_properties": {
    "AuthenticationType": {
      "description": "The authentication type for the user. You must specify USERPOOL.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "FirstName": {
      "description": "The first name, or given name, of the user.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LastName": {
      "description": "The last name, or surname, of the user.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "MessageAction": {
      "description": "The action to take for the welcome email that is sent to a user after the user is created in the user pool. If you specify SUPPRESS, no email is sent. If you specify RESEND, do not specify the first name or last name of the user. If the value is null, the email is sent.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "UserName": {
      "description": "The email address of the user.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-appstream-user.html",
  "properties": [
    "AuthenticationType",
    "FirstName",
    "LastName",
    "MessageAction",
    "UserName"
  ]
},
"AWS::AppSync::ApiKey": {
  "full_properties": {
    "ApiId": {
      "description": "Unique AWS AppSync GraphQL API ID for this API key.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "Unique description of your API key.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Expires": {
      "description": "Expiration time of the API key in seconds (using Unix Epoch time), with a minimum of 1 day and a maximum of 365 days. The default value is 7 days.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appsync-apikey.html",
  "properties": [
    "ApiId",
    "Description",
    "Expires"
  ]
},
"AWS::AppSync::DataSource": {
  "full_properties": {
    "ApiId": {
      "description": "Unique AWS AppSync GraphQL API identifier where this data source will be created.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The description of the data source.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DynamoDBConfig": {
      "description": "AwsRegion and TableName for an Amazon DynamoDB table in your account.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ElasticsearchConfig": {
      "description": "AwsRegion and Endpoints for an Amazon Elasticsearch Service domain in your account.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "HttpConfig": {
      "description": "Endpoints for an HTTP data source.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "LambdaConfig": {
      "description": "A valid ARN of a Lambda function in your account.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "Friendly name for you to identify your AppSync data source after creation.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RelationalDatabaseConfig": {
      "description": "Relational Database configuration of the relational database data source.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ServiceRoleArn": {
      "description": "The AWS IAM service role ARN for the data source. The system assumes this role when accessing the data source.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Type": {
      "description": "The type of the data source.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appsync-datasource.html",
  "properties": [
    "ApiId",
    "Description",
    "DynamoDBConfig",
    "ElasticsearchConfig",
    "HttpConfig",
    "LambdaConfig",
    "Name",
    "RelationalDatabaseConfig",
    "ServiceRoleArn",
    "Type"
  ]
},
"AWS::AppSync::FunctionConfiguration": {
  "full_properties": {
    "ApiId": {
      "description": "The AWS AppSync GraphQL API that you want to attach using this function.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DataSourceName": {
      "description": "The name of data source this function will attach.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The Function description.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "FunctionVersion": {
      "description": "The version of the request mapping template. Currently only the 2018-05-29 version of the template is supported.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the function.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RequestMappingTemplate": {
      "description": "The Function request mapping template. Functions support only the 2018-05-29 version of the request mapping template.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RequestMappingTemplateS3Location": {
      "description": "The location of a request mapping template in an Amazon S3 bucket. Use this if you want to provision with a template file in Amazon S3 rather than embedding it in your CloudFormation template.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ResponseMappingTemplate": {
      "description": "The Function response mapping template.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ResponseMappingTemplateS3Location": {
      "description": "The location of a response mapping template in an Amazon S3 bucket. Use this if you want to provision with a template file in Amazon S3 rather than embedding it in your CloudFormation template.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appsync-functionconfiguration.html",
  "properties": [
    "ApiId",
    "DataSourceName",
    "Description",
    "FunctionVersion",
    "Name",
    "RequestMappingTemplate",
    "RequestMappingTemplateS3Location",
    "ResponseMappingTemplate",
    "ResponseMappingTemplateS3Location"
  ]
},
"AWS::AppSync::GraphQLApi": {
  "full_properties": {
    "AdditionalAuthenticationProviders": {
      "description": "A list of additional authentication providers for the GraphqlApi API.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "AuthenticationType": {
      "description": "Security configuration for your GraphQL API. For allowed values (such as API_KEY, AWS_IAM, or AMAZON_COGNITO_USER_POOLS, OPENID_CONNECT), see Security in the AWS AppSync Developer Guide.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "LogConfig": {
      "description": "The Amazon CloudWatch Logs configuration.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The API name.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "OpenIDConnectConfig": {
      "description": "The OpenID Connect configuration.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An arbitrary set of tags (key-value pairs) for this GraphQL API.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "UserPoolConfig": {
      "description": "Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appsync-graphqlapi.html",
  "properties": [
    "AdditionalAuthenticationProviders",
    "AuthenticationType",
    "LogConfig",
    "Name",
    "OpenIDConnectConfig",
    "Tags",
    "UserPoolConfig"
  ]
},
"AWS::AppSync::GraphQLSchema": {
  "full_properties": {
    "ApiId": {
      "description": "The AWS AppSync GraphQL API identifier to which you want to apply this schema.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Definition": {
      "description": "The text representation of a GraphQL schema in SDL format.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefinitionS3Location": {
      "description": "The location of a GraphQL schema file in an Amazon S3 bucket. Use this if you want to provision with the schema living in Amazon S3 rather than embedding it in your CloudFormation template.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-appsync-graphqlschema.html",
  "properties": [
    "ApiId",
    "Definition",
    "DefinitionS3Location"
  ]
},
"AWS::AppSync::Resolver": {
  "full_properties": {
    "ApiId": {
      "description": "The AWS AppSync GraphQL API to which you want to attach this resolver.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DataSourceName": {
      "description": "The resolver data source name.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "FieldName": {
      "description": "The GraphQL field on a type that invokes the resolver.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Kind": {
      "description": "The resolver type.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PipelineConfig": {
      "description": "Functions linked with the pipeline resolver.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RequestMappingTemplate": {
      "description": "The request mapping template.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RequestMappingTemplateS3Location": {
      "description": "The location of a request mapping template in an Amazon S3 bucket. Use this if you want to provision with a template file in Amazon S3 rather than embedding it in your CloudFormation template.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ResponseMappingTemplate": {
      "description": "The response mapping template.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ResponseMappingTemplateS3Location": {
      "description": "The location of a response mapping template in an Amazon S3 bucket. Use this if you want to provision with a template file in Amazon S3 rather than embedding it in your CloudFormation template.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TypeName": {
      "description": "The GraphQL type that invokes this resolver.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-appsync-resolver.html",
  "properties": [
    "ApiId",
    "DataSourceName",
    "FieldName",
    "Kind",
    "PipelineConfig",
    "RequestMappingTemplate",
    "RequestMappingTemplateS3Location",
    "ResponseMappingTemplate",
    "ResponseMappingTemplateS3Location",
    "TypeName"
  ]
},
"AWS::ApplicationAutoScaling::ScalableTarget": {
  "full_properties": {
    "MaxCapacity": {
      "description": "The maximum value to scale to in response to a scale-out event.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "MinCapacity": {
      "description": "The minimum value to scale to in response to a scale-in event.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "ResourceId": {
      "description": "The resource identifier to associate with this scalable target. This string consists of the resource type and unique identifier. For valid values, see the ResourceId parameter for RegisterScalableTarget in the Application Auto Scaling API Reference.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RoleARN": {
      "description": "The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that allows Application Auto Scaling to modify the scalable target on your behalf.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ScalableDimension": {
      "description": "The scalable dimension that is associated with the scalable target. Specify the service namespace, resource type, and scaling property, for example, ecs:service:DesiredCount for the desired task count of an Amazon ECS service. For valid values, see the ScalableDimension parameter for RegisterScalableTarget in the Application Auto Scaling API Reference.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ScheduledActions": {
      "description": "The scheduled actions for the scalable target. Duplicates aren't allowed.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ServiceNamespace": {
      "description": "The namespace of the AWS service that provides the resource or custom-resource for a resource provided by your own application or service. For valid values, see the ServiceNamespace parameter for RegisterScalableTarget in the Application Auto Scaling API Reference.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-applicationautoscaling-scalabletarget.html",
  "properties": [
    "MaxCapacity",
    "MinCapacity",
    "ResourceId",
    "RoleARN",
    "ScalableDimension",
    "ScheduledActions",
    "ServiceNamespace"
  ]
},
"AWS::ApplicationAutoScaling::ScalingPolicy": {
  "full_properties": {
    "PolicyName": {
      "description": "The name of the scaling policy.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "PolicyType": {
      "description": "The Application Auto Scaling policy type. Valid values are StepScaling and TargetTrackingScaling.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ResourceId": {
      "description": "The unique resource identifier for the scalable target that this scaling policy applies to. For valid values, see the ResourceId parameter for PutScalingPolicy in the Application Auto Scaling API Reference.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ScalableDimension": {
      "description": "The scalable dimension of the scalable target that this scaling policy applies to. The scalable dimension contains the service namespace, resource type, and scaling property, such as ecs:service:DesiredCount for the desired task count of an Amazon ECS service. For valid values, see the ScalableDimension parameter for PutScalingPolicy in the Application Auto Scaling API Reference.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ScalingTargetId": {
      "description": "The AWS CloudFormation-generated ID of an Application Auto Scaling scalable target. For more information about the ID, see the Return Value section of the AWS::ApplicationAutoScaling::ScalableTarget resource.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ServiceNamespace": {
      "description": "The namespace of the AWS service that provides the resource or custom-resource for a resource provided by your own application or service. For valid values, see the ServiceNamespace parameter for PutScalingPolicy in the Application Auto Scaling API Reference.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "StepScalingPolicyConfiguration": {
      "description": "A step scaling policy.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TargetTrackingScalingPolicyConfiguration": {
      "description": "A target tracking scaling policy.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-applicationautoscaling-scalingpolicy.html",
  "properties": [
    "PolicyName",
    "PolicyType",
    "ResourceId",
    "ScalableDimension",
    "ScalingTargetId",
    "ServiceNamespace",
    "StepScalingPolicyConfiguration",
    "TargetTrackingScalingPolicyConfiguration"
  ]
},
"AWS::Athena::NamedQuery": {
  "full_properties": {
    "Database": {
      "description": "The database to which the query belongs.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The query description.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The query name.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "QueryString": {
      "description": "The SQL query statements that comprise the query.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-athena-namedquery.html",
  "properties": [
    "Database",
    "Description",
    "Name",
    "QueryString"
  ]
},
"AWS::AutoScaling::AutoScalingGroup": {
  "full_properties": {
    "AutoScalingGroupName": {
      "description": "The name of the Auto Scaling group. This name must be unique per Region per account.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "AvailabilityZones": {
      "description": "A list of Availability Zones for the group. You must specify one of the following properties: VPCZoneIdentifier or AvailabilityZones.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Cooldown": {
      "description": "The amount of time, in seconds, after a scaling activity completes before another scaling activity can start. The default value is 300.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DesiredCapacity": {
      "description": "The number of Amazon EC2 instances that the Auto Scaling group attempts to maintain. The number must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group. If you do not specify a desired capacity, the default is the minimum size of the group.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "HealthCheckGracePeriod": {
      "description": "The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health status of an EC2 instance that has come into service.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "HealthCheckType": {
      "description": "The service to use for the health checks. The valid values are EC2 (default) and ELB. If you configure an Auto Scaling group to use ELB health checks, it considers the instance unhealthy if it fails either the EC2 status checks or the load balancer health checks.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InstanceId": {
      "description": "The ID of the instance used to create a launch configuration for the group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LaunchConfigurationName": {
      "description": "The name of the LaunchConfiguration to use to launch instances.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "LaunchTemplate": {
      "description": "The LaunchTemplate to use to launch instances.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "LifecycleHookSpecificationList": {
      "description": "The lifecycle hooks for the group, which specify actions to perform when Amazon EC2 Auto Scaling launches or terminates instances.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "LoadBalancerNames": {
      "description": "A list of Classic Load Balancers associated with this Auto Scaling group. For Application Load Balancers and Network Load Balancers, specify a list of target groups using the TargetGroupARNs property instead.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "MaxSize": {
      "description": "The maximum number of Amazon EC2 instances in the Auto Scaling group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "MetricsCollection": {
      "description": "Enables the monitoring of group metrics of an Auto Scaling group. By default, these metrics are disabled.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "MinSize": {
      "description": "The minimum number of Amazon EC2 instances in the Auto Scaling group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "MixedInstancesPolicy": {
      "description": "An embedded object that specifies a mixed instances policy.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "NotificationConfigurations": {
      "description": "Configures an Auto Scaling group to send notifications when specified events take place.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "PlacementGroup": {
      "description": "The name of an existing cluster placement group into which you want to launch your instances. A placement group is a logical grouping of instances within a single Availability Zone. You cannot specify multiple Availability Zones and a placement group.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ServiceLinkedRoleARN": {
      "description": "The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to call other AWS services on your behalf. By default, Amazon EC2 Auto Scaling uses a service-linked role named AWSServiceRoleForAutoScaling, which it creates if it does not exist.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags for the group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TargetGroupARNs": {
      "description": "A list of Amazon Resource Names (ARN) of target groups to associate with the Auto Scaling group. Instances are registered as targets in a target group, and traffic is routed to the target group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TerminationPolicies": {
      "description": "A policy or a list of policies that are used to select the instances to terminate. The policies are executed in the order that you list them. The termination policies supported by Amazon EC2 Auto Scaling: OldestInstance, OldestLaunchConfiguration, NewestInstance, ClosestToNextInstanceHour, Default, OldestLaunchTemplate, and AllocationStrategy.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VPCZoneIdentifier": {
      "description": "A list of subnet IDs for a virtual private cloud (VPC). You must specify one of the following properties: VPCZoneIdentifier or AvailabilityZones. If you specify VPCZoneIdentifier with AvailabilityZones, the subnets that you specify for this property must reside in those Availability Zones.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-as-group.html",
  "properties": [
    "AutoScalingGroupName",
    "AvailabilityZones",
    "Cooldown",
    "DesiredCapacity",
    "HealthCheckGracePeriod",
    "HealthCheckType",
    "InstanceId",
    "LaunchConfigurationName",
    "LaunchTemplate",
    "LifecycleHookSpecificationList",
    "LoadBalancerNames",
    "MaxSize",
    "MetricsCollection",
    "MinSize",
    "MixedInstancesPolicy",
    "NotificationConfigurations",
    "PlacementGroup",
    "ServiceLinkedRoleARN",
    "Tags",
    "TargetGroupARNs",
    "TerminationPolicies",
    "VPCZoneIdentifier"
  ]
},
"AWS::AutoScaling::LaunchConfiguration": {
  "full_properties": {
    "AssociatePublicIpAddress": {
      "description": "Used for groups that launch instances into a virtual private cloud (VPC). Specifies whether to assign a public IP address to each instance. If you specify true, each instance in the Auto Scaling group receives a unique public IP address.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "BlockDeviceMappings": {
      "description": "Specifies how block devices are exposed to the instance. You can specify virtual devices and EBS volumes.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "ClassicLinkVPCId": {
      "description": "The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ClassicLinkVPCSecurityGroups": {
      "description": "The IDs of one or more security groups for the VPC that you specified in the ClassicLinkVPCId property.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "EbsOptimized": {
      "description": "Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false). This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. Additional fees are incurred when you enable EBS optimization for an instance type that is not EBS-optimized by default. For more information, see EBS-Optimized Instances in the Amazon EC2 User Guide for Linux Instances.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "IamInstanceProfile": {
      "description": "Provides the name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. The instance profile contains the IAM role.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ImageId": {
      "description": "Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration. For more information, see Finding an AMI in the Amazon EC2 User Guide for Linux Instances.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceId": {
      "description": "The ID of the Amazon EC2 instance you want to use to create the launch configuration. Use this property if you want the launch configuration to use settings from an existing Amazon EC2 instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceMonitoring": {
      "description": "Controls whether instances in this group are launched with detailed (true) or basic (false) monitoring. The default value is true (enabled).",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "InstanceType": {
      "description": "Specifies the instance type of the EC2 instance. For information about available instance types, see Available Instance Types in the Amazon EC2 User Guide for Linux Instances.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "KernelId": {
      "description": "Provides the ID of the kernel associated with the EC2 AMI.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "KeyName": {
      "description": "Provides the name of the EC2 key pair.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LaunchConfigurationName": {
      "description": "The name of the launch configuration. This name must be unique per Region per account.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PlacementTenancy": {
      "description": "The tenancy of the instance, either default or dedicated. An instance with dedicated tenancy runs in an isolated, single-tenant hardware and can only be launched into a VPC. You must set the value of this property to dedicated if want to launch dedicated instances in a shared tenancy VPC (a VPC with the instance placement tenancy attribute set to default).",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RamDiskId": {
      "description": "The ID of the RAM disk to select.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SecurityGroups": {
      "description": "A list that contains the security groups to assign to the instances in the Auto Scaling group. The list can contain both the IDs of existing security groups and references to SecurityGroup resources created in the template.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SpotPrice": {
      "description": "The maximum hourly price to be paid for any Spot Instance launched to fulfill the request. Spot Instances are launched when the price you specify exceeds the current Spot market price. For more information, see Launching Spot Instances in your Auto Scaling Group in the Amazon EC2 Auto Scaling User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "UserData": {
      "description": "The Base64-encoded user data to make available to the launched EC2 instances.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-properties-as-launchconfig.html",
  "properties": [
    "AssociatePublicIpAddress",
    "BlockDeviceMappings",
    "ClassicLinkVPCId",
    "ClassicLinkVPCSecurityGroups",
    "EbsOptimized",
    "IamInstanceProfile",
    "ImageId",
    "InstanceId",
    "InstanceMonitoring",
    "InstanceType",
    "KernelId",
    "KeyName",
    "LaunchConfigurationName",
    "PlacementTenancy",
    "RamDiskId",
    "SecurityGroups",
    "SpotPrice",
    "UserData"
  ]
},
"AWS::AutoScaling::LifecycleHook": {
  "full_properties": {
    "AutoScalingGroupName": {
      "description": "The name of the Auto Scaling group for the lifecycle hook.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DefaultResult": {
      "description": "The action the Auto Scaling group takes when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are CONTINUE and ABANDON (default).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "HeartbeatTimeout": {
      "description": "The amount of time, in seconds, that can elapse before the lifecycle hook times out. If the lifecycle hook times out, Amazon EC2 Auto Scaling performs the action that you specified in the DefaultResult property.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "LifecycleHookName": {
      "description": "The name of the lifecycle hook.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LifecycleTransition": {
      "description": "The instance state to which you want to attach the lifecycle hook. The valid values are:",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "NotificationMetadata": {
      "description": "Additional information that is included any time Amazon EC2 Auto Scaling sends a message to the notification target.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NotificationTargetARN": {
      "description": "The Amazon Resource Name (ARN) of the notification target that Amazon EC2 Auto Scaling uses to notify you when an instance is in the transition state for the lifecycle hook. You can specify an Amazon SQS queue or an Amazon SNS topic. The notification message includes the following information: lifecycle action token, user account ID, Auto Scaling group name, lifecycle hook name, instance ID, lifecycle transition, and notification metadata.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RoleARN": {
      "description": "The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target, for example, an Amazon SNS topic or an Amazon SQS queue. For information about creating this role, see Preparing for Notifications in the Amazon EC2 Auto Scaling User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-as-lifecyclehook.html",
  "properties": [
    "AutoScalingGroupName",
    "DefaultResult",
    "HeartbeatTimeout",
    "LifecycleHookName",
    "LifecycleTransition",
    "NotificationMetadata",
    "NotificationTargetARN",
    "RoleARN"
  ]
},
"AWS::AutoScaling::ScalingPolicy": {
  "full_properties": {
    "AdjustmentType": {
      "description": "Specifies whether the ScalingAdjustment property is an absolute number or a percentage of the current capacity. The valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "AutoScalingGroupName": {
      "description": "The name or Amazon Resource Name (ARN) of the Auto Scaling group that you want to attach the policy to.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Cooldown": {
      "description": "The amount of time, in seconds, after a scaling activity completes before any further dynamic scaling activities can start. If this property is not specified, the default cooldown period for the group applies.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EstimatedInstanceWarmup": {
      "description": "The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. The default is to use the value specified for the default cooldown period for the group.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "MetricAggregationType": {
      "description": "The aggregation type for the CloudWatch metrics. The valid values are Minimum, Maximum, and Average. By default, AWS CloudFormation specifies Average.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MinAdjustmentMagnitude": {
      "description": "The minimum number of instances to scale. If the value of AdjustmentType is PercentChangeInCapacity, the scaling policy changes the DesiredCapacity of the Auto Scaling group by at least this many instances. This property replaces the MinAdjustmentStep property.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "PolicyType": {
      "description": "The policy type. The valid values are SimpleScaling, StepScaling, and TargetTrackingScaling. By default, AWS CloudFormation specifies SimpleScaling.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ScalingAdjustment": {
      "description": "The amount by which a simple scaling policy scales the Auto Scaling group in response to an alarm breach. The adjustment is based on the value that you specified in the AdjustmentType property (either an absolute number or a percentage). A positive value adds to the current capacity and a negative value subtracts from the current capacity. For exact capacity, you must specify a positive value.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "StepAdjustments": {
      "description": "A set of adjustments that enable you to scale based on the size of the alarm breach.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TargetTrackingConfiguration": {
      "description": "Configures a target tracking scaling policy.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-as-policy.html",
  "properties": [
    "AdjustmentType",
    "AutoScalingGroupName",
    "Cooldown",
    "EstimatedInstanceWarmup",
    "MetricAggregationType",
    "MinAdjustmentMagnitude",
    "PolicyType",
    "ScalingAdjustment",
    "StepAdjustments",
    "TargetTrackingConfiguration"
  ]
},
"AWS::AutoScaling::ScheduledAction": {
  "full_properties": {
    "AutoScalingGroupName": {
      "description": "The name or Amazon Resource Name (ARN) of the Auto Scaling group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DesiredCapacity": {
      "description": "The number of Amazon EC2 instances that should be running in the Auto Scaling group.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "EndTime": {
      "description": "The date and time in UTC for the recurring schedule to end. For example, \"2019-06-01T00:00:00Z\".",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MaxSize": {
      "description": "The maximum number of Amazon EC2 instances in the Auto Scaling group.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "MinSize": {
      "description": "The minimum number of Amazon EC2 instances in the Auto Scaling group.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Recurrence": {
      "description": "The recurring schedule for this action, in Unix cron syntax format. For more information about cron syntax, see Crontab.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "StartTime": {
      "description": "The date and time in UTC for this action to start. For example, \"2019-06-01T00:00:00Z\".",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-as-scheduledaction.html",
  "properties": [
    "AutoScalingGroupName",
    "DesiredCapacity",
    "EndTime",
    "MaxSize",
    "MinSize",
    "Recurrence",
    "StartTime"
  ]
},
"AWS::AutoScalingPlans::ScalingPlan": {
  "full_properties": {
    "ApplicationSource": {
      "description": "A CloudFormation stack or a set of tags. You can create one scaling plan per application source.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ScalingInstructions": {
      "description": "The scaling instructions.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-autoscalingplans-scalingplan.html",
  "properties": [
    "ApplicationSource",
    "ScalingInstructions"
  ]
},
"AWS::Backup::BackupPlan": {
  "full_properties": {
    "BackupPlan": {
      "description": "Uniquely identifies the backup plan to be associated with the selection of resources.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BackupPlanTags": {
      "description": "To help organize your resources, you can assign your own metadata to the resources that you create. Each tag is a key-value pair. The specified tags are assigned to all backups created with this plan.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-backup-backupplan.html",
  "properties": [
    "BackupPlan",
    "BackupPlanTags"
  ]
},
"AWS::Backup::BackupSelection": {
  "full_properties": {
    "BackupPlanId": {
      "description": "Uniquely identifies a backup plan.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "BackupSelection": {
      "description": "Specifies the body of a request to assign a set of resources to a backup plan.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-backup-backupselection.html",
  "properties": [
    "BackupPlanId",
    "BackupSelection"
  ]
},
"AWS::Backup::BackupVault": {
  "full_properties": {
    "AccessPolicy": {
      "description": "A resource-based policy that is used to manage access permissions on the target backup vault.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BackupVaultName": {
      "description": "The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "BackupVaultTags": {
      "description": "Metadata that you can assign to help organize the resources that you create. Each tag is a key-value pair.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EncryptionKeyArn": {
      "description": "The server-side encryption key that is used to protect your backups; for example, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Notifications": {
      "description": "The SNS event notifications for the specified backup vault.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-backup-backupvault.html",
  "properties": [
    "AccessPolicy",
    "BackupVaultName",
    "BackupVaultTags",
    "EncryptionKeyArn",
    "Notifications"
  ]
},
"AWS::Batch::ComputeEnvironment": {
  "full_properties": {
    "ComputeEnvironmentName": {
      "description": "The name for your compute environment. Up to 128 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ComputeResources": {
      "description": "The ComputeResources property type specifies details of the compute resources managed by the compute environment. This parameter is required for managed compute environments. For more information, see Compute Environments in the AWS Batch User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ServiceRole": {
      "description": "The full Amazon Resource Name (ARN) of the IAM role that allows AWS Batch to make calls to other AWS services on your behalf.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "State": {
      "description": "The state of the compute environment. If the state is ENABLED, then the compute environment accepts jobs from a queue and can scale out automatically based on queues.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Type": {
      "description": "The type of the compute environment. For more information, see Compute Environments in the AWS Batch User Guide.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-batch-computeenvironment.html",
  "properties": [
    "ComputeEnvironmentName",
    "ComputeResources",
    "ServiceRole",
    "State",
    "Type"
  ]
},
"AWS::Batch::JobDefinition": {
  "full_properties": {
    "ContainerProperties": {
      "description": "An object with various properties specific to container-based jobs.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "JobDefinitionName": {
      "description": "The name of the job definition.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "NodeProperties": {
      "description": "An object with various properties specific to multi-node parallel jobs.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Parameters": {
      "description": "Default parameters or parameter substitution placeholders that are set in the job definition. Parameters are specified as a key-value pair mapping. Parameters in a SubmitJob request override any corresponding parameter defaults from the job definition. For more information about specifying parameters, see Job Definition Parameters in the AWS Batch User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RetryStrategy": {
      "description": "The retry strategy to use for failed jobs that are submitted with this job definition.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Timeout": {
      "description": "The timeout configuration for jobs that are submitted with this job definition. You can specify a timeout duration after which AWS Batch terminates your jobs if they have not finished.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Type": {
      "description": "The type of job definition.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-batch-jobdefinition.html",
  "properties": [
    "ContainerProperties",
    "JobDefinitionName",
    "NodeProperties",
    "Parameters",
    "RetryStrategy",
    "Timeout",
    "Type"
  ]
},
"AWS::Batch::JobQueue": {
  "full_properties": {
    "ComputeEnvironmentOrder": {
      "description": "The set of compute environments mapped to a job queue and their order relative to each other. The job scheduler uses this parameter to determine which compute environment should execute a given job. Compute environments must be in the VALID state before you can associate them with a job queue. You can associate up to three compute environments with a job queue.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "JobQueueName": {
      "description": "The name of the job queue.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Priority": {
      "description": "The priority of the job queue. Job queues with a higher priority (or a higher integer value for the priority parameter) are evaluated first when associated with the same compute environment. Priority is determined in descending order, for example, a job queue with a priority value of 10 is given scheduling preference over a job queue with a priority value of 1.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "State": {
      "description": "The state of the job queue. If the job queue state is ENABLED, it is able to accept jobs.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-batch-jobqueue.html",
  "properties": [
    "ComputeEnvironmentOrder",
    "JobQueueName",
    "Priority",
    "State"
  ]
},
"AWS::Budgets::Budget": {
  "full_properties": {
    "Budget": {
      "description": "The budget object that you want to create.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "NotificationsWithSubscribers": {
      "description": "A notification that you want to associate with a budget. A budget can have up to five notifications, and each notification can have one SNS subscriber and up to 10 email subscribers. If you include notifications and subscribers in your CreateBudget call, AWS creates the notifications and subscribers for you.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-budgets-budget.html",
  "properties": [
    "Budget",
    "NotificationsWithSubscribers"
  ]
},
"AWS::CertificateManager::Certificate": {
  "full_properties": {
    "DomainName": {
      "description": "The fully qualified domain name (FQDN), such as www.example.com, with which you want to secure an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DomainValidationOptions": {
      "description": "Domain information that domain name registrars use to verify your identity.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SubjectAlternativeNames": {
      "description": "Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, you can add www.example.net to a certificate for which the DomainName field is www.example.com if users can reach your site by using either name.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Key-value pairs that can identity the certificate.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ValidationMethod": {
      "description": "The method you want to use to validate that you own or control the domain associated with a public certificate. You can validate with DNS or validate with email. We recommend that you use DNS validation.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-certificatemanager-certificate.html",
  "properties": [
    "DomainName",
    "DomainValidationOptions",
    "SubjectAlternativeNames",
    "Tags",
    "ValidationMethod"
  ]
},
"AWS::Cloud9::EnvironmentEC2": {
  "full_properties": {
    "AutomaticStopTimeMinutes": {
      "description": "The number of minutes until the running instance is shut down after the environment was last used.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The description of the environment to create.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceType": {
      "description": "The type of instance to connect to the environment (for example, t2.micro).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the environment.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "OwnerArn": {
      "description": "The Amazon Resource Name (ARN) of the environment owner. This ARN can be the ARN of any AWS Identity and Access Management (IAM) principal. If this value is not specified, the ARN defaults to this environment's creator.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Repositories": {
      "description": "Any AWS CodeCommit source code repositories to be cloned into the development environment.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SubnetId": {
      "description": "The ID of the subnet in Amazon Virtual Private Cloud (Amazon VPC) that AWS Cloud9 will use to communicate with the Amazon Elastic Compute Cloud (Amazon EC2) instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-cloud9-environmentec2.html",
  "properties": [
    "AutomaticStopTimeMinutes",
    "Description",
    "InstanceType",
    "Name",
    "OwnerArn",
    "Repositories",
    "SubnetId"
  ]
},
"AWS::CloudFormation::CustomResource": {
  "full_properties": {
    "ServiceToken": {
      "description": "Note",
      "required": true,
      "type": "String",
      "update_causes": [
        "unavailable",
        "replacement"
      ]
    }
  },
  "path": "aws-resource-cfn-customresource.html",
  "properties": [
    "ServiceToken"
  ]
},
"AWS::CloudFormation::Macro": {
  "full_properties": {
    "Description": {
      "description": "A description of the macro.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "FunctionName": {
      "description": "The Amazon Resource Name (ARN) of the underlying AWS Lambda function that you want AWS CloudFormation to invoke when the macro is run.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "LogGroupName": {
      "description": "The Amazon CloudWatch log group to which AWS CloudFormation sends error logging information when invoking the macro's underlying AWS Lambda function.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "LogRoleARN": {
      "description": "The ARN of the role AWS CloudFormation should assume when sending log entries to CloudWatch logs.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the macro. The name of the macro must be unique across all macros in the account.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-cloudformation-macro.html",
  "properties": [
    "Description",
    "FunctionName",
    "LogGroupName",
    "LogRoleARN",
    "Name"
  ]
},
"AWS::CloudFormation::Stack": {
  "full_properties": {
    "NotificationARNs": {
      "description": "The Simple Notification Service (SNS) topic ARNs to publish stack related events. You can find your SNS topic ARNs using the SNS console or your Command Line Interface (CLI).",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Parameters": {
      "description": "The set value pairs that represent the parameters passed to CloudFormation when this nested stack is created. Each parameter has a name corresponding to a parameter defined in the embedded template and a value representing the value that you want to set for the parameter.",
      "required": false,
      "type": "Unknown",
      "update_causes": [
        "interrupt",
        "none"
      ]
    },
    "Tags": {
      "description": "Key-value pairs to associate with this stack. AWS CloudFormation also propagates these tags to the resources created in the stack. A maximum number of 50 tags can be specified.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TemplateURL": {
      "description": "Location of file containing the template body. The URL must point to a template (max size: 460,800 bytes) that is located in an Amazon S3 bucket. For more information, see Template Anatomy.",
      "required": true,
      "type": "String",
      "update_causes": [
        "interrupt",
        "none"
      ]
    },
    "TimeoutInMinutes": {
      "description": "The length of time, in minutes, that CloudFormation waits for the nested stack to reach the CREATE_COMPLETE state. The default is no timeout. When CloudFormation detects that the nested stack has reached the CREATE_COMPLETE state, it marks the nested stack resource as CREATE_COMPLETE in the parent stack and resumes creating the parent stack. If the timeout period expires before the nested stack reaches CREATE_COMPLETE, CloudFormation marks the nested stack as failed and rolls back both the nested stack and parent stack.",
      "required": false,
      "type": "Number",
      "update_causes": [
        "unavailable",
        "none"
      ]
    }
  },
  "path": "aws-properties-stack.html",
  "properties": [
    "NotificationARNs",
    "Parameters",
    "Tags",
    "TemplateURL",
    "TimeoutInMinutes"
  ]
},
"AWS::CloudFormation::WaitCondition": {
  "full_properties": {
    "Count": {
      "description": "The number of success signals that CloudFormation must receive before it continues the stack creation process. When the wait condition receives the requisite number of success signals, CloudFormation resumes the creation of the stack. If the wait condition does not receive the specified number of success signals before the Timeout period expires, CloudFormation assumes that the wait condition has failed and rolls the stack back.",
      "required": false,
      "type": "Number",
      "update_causes": [
        "unavailable",
        "none"
      ]
    },
    "Handle": {
      "description": "A reference to the wait condition handle used to signal this wait condition. Use the Ref intrinsic function to specify an AWS::CloudFormation::WaitConditionHandle resource.",
      "required": false,
      "type": "String",
      "update_causes": [
        "unavailable",
        "none"
      ]
    },
    "Timeout": {
      "description": "The length of time (in seconds) to wait for the number of signals that the Count property specifies. Timeout is a minimum-bound property, meaning the timeout occurs no sooner than the time you specify, but can occur shortly thereafter. The maximum time that can be specified for this property is 12 hours (43200 seconds).",
      "required": false,
      "type": "String",
      "update_causes": [
        "unavailable",
        "none"
      ]
    }
  },
  "path": "aws-properties-waitcondition.html",
  "properties": [
    "Count",
    "Handle",
    "Timeout"
  ]
},
"AWS::CloudFormation::WaitConditionHandle": {
  "full_properties": {
  },
  "path": "aws-properties-waitconditionhandle.html",
  "properties": [

  ]
},
"AWS::CloudFront::CloudFrontOriginAccessIdentity": {
  "full_properties": {
    "CloudFrontOriginAccessIdentityConfig": {
      "description": "The current configuration information for the identity.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-cloudfront-cloudfrontoriginaccessidentity.html",
  "properties": [
    "CloudFrontOriginAccessIdentityConfig"
  ]
},
"AWS::CloudFront::Distribution": {
  "full_properties": {
    "DistributionConfig": {
      "description": "The current configuration information for the distribution. Send a GET request to the /CloudFront API version/distribution ID/config resource.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "A complex type that contains zero or more Tag elements.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-cloudfront-distribution.html",
  "properties": [
    "DistributionConfig",
    "Tags"
  ]
},
"AWS::CloudFront::StreamingDistribution": {
  "full_properties": {
    "StreamingDistributionConfig": {
      "description": "The current configuration information for the RTMP distribution.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "A complex type that contains zero or more Tag elements.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-cloudfront-streamingdistribution.html",
  "properties": [
    "StreamingDistributionConfig",
    "Tags"
  ]
},
"AWS::CloudTrail::Trail": {
  "full_properties": {
    "CloudWatchLogsLogGroupArn": {
      "description": "Specifies a log group name using an Amazon Resource Name (ARN), a unique identifier that represents the log group to which CloudTrail logs will be delivered. Not required unless you specify CloudWatchLogsRoleArn.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "CloudWatchLogsRoleArn": {
      "description": "Specifies the role for the CloudWatch Logs endpoint to assume to write to a user's log group.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EnableLogFileValidation": {
      "description": "Specifies whether log file validation is enabled. The default is false.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "EventSelectors": {
      "description": "Use event selectors to further specify the management and data event settings for your trail. By default, trails created without specific event selectors will be configured to log all read and write management events, and no data events. When an event occurs in your account, CloudTrail evaluates the event selector for all trails. For each trail, if the event matches any event selector, the trail processes and logs the event. If the event doesn't match any event selector, the trail doesn't log the event.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "IncludeGlobalServiceEvents": {
      "description": "Specifies whether the trail is publishing events from global services such as IAM to the log files.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "IsLogging": {
      "description": "Whether the CloudTrail is currently logging AWS API calls.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "IsMultiRegionTrail": {
      "description": "Specifies whether the trail applies only to the current region or to all regions. The default is false. If the trail exists only in the current region and this value is set to true, shadow trails (replications of the trail) will be created in the other regions. If the trail exists in all regions and this value is set to false, the trail will remain in the region where it was created, and its shadow trails in other regions will be deleted. As a best practice, consider using trails that log events in all regions.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "KMSKeyId": {
      "description": "Specifies the KMS key ID to use to encrypt the logs delivered by CloudTrail. The value can be an alias name prefixed by \"alias/\", a fully specified ARN to an alias, a fully specified ARN to a key, or a globally unique identifier.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "S3BucketName": {
      "description": "Specifies the name of the Amazon S3 bucket designated for publishing log files. See Amazon S3 Bucket Naming Requirements.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "S3KeyPrefix": {
      "description": "Specifies the Amazon S3 key prefix that comes after the name of the bucket you have designated for log file delivery. For more information, see Finding Your CloudTrail Log Files. The maximum length is 200 characters.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SnsTopicName": {
      "description": "Specifies the name of the Amazon SNS topic defined for notification of log file delivery. The maximum length is 256 characters.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An arbitrary set of tags (key–value pairs) for this trail.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TrailName": {
      "description": "Specifies the name of the trail or trail ARN. If Name is a trail name, the string must meet the following requirements:",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-cloudtrail-trail.html",
  "properties": [
    "CloudWatchLogsLogGroupArn",
    "CloudWatchLogsRoleArn",
    "EnableLogFileValidation",
    "EventSelectors",
    "IncludeGlobalServiceEvents",
    "IsLogging",
    "IsMultiRegionTrail",
    "KMSKeyId",
    "S3BucketName",
    "S3KeyPrefix",
    "SnsTopicName",
    "Tags",
    "TrailName"
  ]
},
"AWS::CloudWatch::Alarm": {
  "full_properties": {
    "ActionsEnabled": {
      "description": "Indicates whether actions should be executed during any changes to the alarm state.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AlarmActions": {
      "description": "The list of actions to execute when this alarm transitions into an ALARM state from any other state.  Specify each action as an Amazon Resource Name (ARN). For more information about creating alarms and the actions that you can specify, see PutMetricAlarm in the Amazon CloudWatch API Reference.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "AlarmDescription": {
      "description": "The description of the alarm.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AlarmName": {
      "description": "The name of the alarm. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the alarm name.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ComparisonOperator": {
      "description": "The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic value is used as the first operand.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DatapointsToAlarm": {
      "description": "The number of datapoints that must be breaching to trigger the alarm. This is used only if you are setting an \"M out of N\" alarm. In that case, this value is the M. For more information, see Evaluating an Alarm in the Amazon CloudWatch User Guide.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Dimensions": {
      "description": "The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify Dimensions. Instead, you use Metrics.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "EvaluateLowSampleCountPercentile": {
      "description": "Used only for alarms based on percentiles. If ignore, the alarm state does not change during periods with too few data points to be statistically significant. If evaluate or this parameter is not used, the alarm is always evaluated and possibly changes state no matter how many data points are available.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EvaluationPeriods": {
      "description": "The number of periods over which data is compared to the specified threshold.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "ExtendedStatistic": {
      "description": "The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InsufficientDataActions": {
      "description": "The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN).",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "MetricName": {
      "description": "The name of the metric associated with the alarm. This is required for an alarm based on a metric. For an alarm based on a math expression, you use Metrics instead and you can't specify MetricName.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Metrics": {
      "description": "An array that enables you to create an alarm based on the result of a metric math expression. Each item in the array either retrieves a metric or performs a math expression.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Namespace": {
      "description": "The namespace of the metric associated with the alarm. This is required for an alarm based on a metric. For an alarm based on a math expression, you can't specify Namespace and you use Metrics instead.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "OKActions": {
      "description": "The actions to execute when this alarm transitions to the OK state from any other state. Each action is specified as an Amazon Resource Name (ARN).",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Period": {
      "description": "The period, in seconds, over which the statistic is applied. This is required for an alarm based on a metric. For an alarm based on a math expression, you can't specify Period, and instead you use the Metrics parameter.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Statistic": {
      "description": "The statistic for the metric associated with the alarm, other than percentile. For percentile statistics, use ExtendedStatistic.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Threshold": {
      "description": "The value to compare with the specified statistic.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TreatMissingData": {
      "description": "Sets how this alarm is to handle missing data points. Valid values are breaching, notBreaching, ignore, and missing. For more information, see Configuring How CloudWatch Alarms Treat Missing Data in the Amazon CloudWatch User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Unit": {
      "description": "The unit of the metric associated with the alarm. You can specify the following values: Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, or None.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-cw-alarm.html",
  "properties": [
    "ActionsEnabled",
    "AlarmActions",
    "AlarmDescription",
    "AlarmName",
    "ComparisonOperator",
    "DatapointsToAlarm",
    "Dimensions",
    "EvaluateLowSampleCountPercentile",
    "EvaluationPeriods",
    "ExtendedStatistic",
    "InsufficientDataActions",
    "MetricName",
    "Metrics",
    "Namespace",
    "OKActions",
    "Period",
    "Statistic",
    "Threshold",
    "TreatMissingData",
    "Unit"
  ]
},
"AWS::CloudWatch::AnomalyDetector": {
  "full_properties": {
    "Configuration": {
      "description": "Specifies details about how the anomaly detection model is to be trained, including time ranges to exclude when training and updating the model. The configuration can also include the time zone to use for the metric.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Dimensions": {
      "description": "The dimensions of the metric associated with the anomaly detection band.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "MetricName": {
      "description": "The name of the metric associated with the anomaly detection band.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Namespace": {
      "description": "The namespace of the metric associated with the anomaly detection band.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Stat": {
      "description": "The statistic of the metric associated with the anomaly detection band.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-cloudwatch-anomalydetector.html",
  "properties": [
    "Configuration",
    "Dimensions",
    "MetricName",
    "Namespace",
    "Stat"
  ]
},
"AWS::CloudWatch::Dashboard": {
  "full_properties": {
    "DashboardBody": {
      "description": "The detailed information about the dashboard in JSON format, including the widgets to include and their location on the dashboard.  This parameter is required.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DashboardName": {
      "description": "The name of the dashboard. The name must be between 1 and 255 characters. If you do not specify a name, one will be generated automatically.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-cloudwatch-dashboard.html",
  "properties": [
    "DashboardBody",
    "DashboardName"
  ]
},
"AWS::CodeBuild::Project": {
  "full_properties": {
    "Artifacts": {
      "description": "Artifacts is a property of the AWS::CodeBuild::Project resource that specifies output settings for artifacts generated by an AWS CodeBuild build.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BadgeEnabled": {
      "description": "Indicates whether AWS CodeBuild generates a publicly accessible URL for your project's build badge. For more information, see Build Badges Sample in the AWS CodeBuild User Guide.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Cache": {
      "description": "Settings that AWS CodeBuild uses to store and reuse build dependencies.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description that makes the build project easy to identify.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EncryptionKey": {
      "description": "The alias or Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS)  customer master key (CMK) that CodeBuild uses to encrypt the build output. If you don't specify a value, CodeBuild uses the AWS-managed CMK for Amazon Simple Storage Service (Amazon S3).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Environment": {
      "description": "The build environment settings for the project, such as the environment type or the  environment variables to use for the build environment.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "LogsConfig": {
      "description": "Information about logs for the build project. A project can create logs in Amazon CloudWatch Logs, an S3 bucket, or both.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the build project. The name must be unique across all of the projects in your AWS account.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "QueuedTimeoutInMinutes": {
      "description": "The number of minutes a build is allowed to be queued before it times out.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "SecondaryArtifacts": {
      "description": "A list of Artifacts objects. Each artifacts object specifies output settings that the project generates during a build.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SecondarySourceVersions": {
      "description": "An array of ProjectSourceVersion objects. If secondarySourceVersions is specified at the build level, then they take over these secondarySourceVersions (at the project level).",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SecondarySources": {
      "description": "An array of ProjectSource objects.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ServiceRole": {
      "description": "The ARN of the AWS Identity and Access Management (IAM) role that enables AWS CodeBuild to interact with dependent AWS services on behalf of the AWS account.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Source": {
      "description": "The source code settings for the project, such as the source code's repository type and location.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SourceVersion": {
      "description": "A version of the build input to be built for this project. If not specified, the latest version is used. If specified, it must be one of:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An arbitrary set of tags (key-value pairs) for the AWS CodeBuild project.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TimeoutInMinutes": {
      "description": "How long, in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait before timing out any related build that did not get marked as completed. The default is 60 minutes.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Triggers": {
      "description": "For an existing AWS CodeBuild build project that has its source code stored in a GitHub repository, enables AWS CodeBuild to begin automatically rebuilding the source code every time a code change is pushed to the repository.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "VpcConfig": {
      "description": "VpcConfig specifies settings that enable AWS CodeBuild to access resources in an Amazon VPC. For more information, see Use AWS CodeBuild with Amazon Virtual Private Cloud in the AWS CodeBuild User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-codebuild-project.html",
  "properties": [
    "Artifacts",
    "BadgeEnabled",
    "Cache",
    "Description",
    "EncryptionKey",
    "Environment",
    "LogsConfig",
    "Name",
    "QueuedTimeoutInMinutes",
    "SecondaryArtifacts",
    "SecondarySources",
    "SecondarySourceVersions",
    "ServiceRole",
    "Source",
    "SourceVersion",
    "Tags",
    "TimeoutInMinutes",
    "Triggers",
    "VpcConfig"
  ]
},
"AWS::CodeCommit::Repository": {
  "full_properties": {
    "Code": {
      "description": "Information about code to be committed to a repository after it is created in an AWS CloudFormation stack.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RepositoryDescription": {
      "description": "A comment or description about the new repository.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RepositoryName": {
      "description": "The name of the new repository to be created.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "One or more tag key-value pairs to use when tagging this repository.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Triggers": {
      "description": "The JSON block of configuration information for each trigger.",
      "required": false,
      "type": "Array",
      "update_causes": "unknown"
    }
  },
  "path": "aws-resource-codecommit-repository.html",
  "properties": [
    "Code",
    "RepositoryDescription",
    "RepositoryName",
    "Tags",
    "Triggers"
  ]
},
"AWS::CodeDeploy::Application": {
  "full_properties": {
    "ApplicationName": {
      "description": "A name for the application. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the application name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "ComputePlatform": {
      "description": "The compute platform that CodeDeploy deploys the application to.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-codedeploy-application.html",
  "properties": [
    "ApplicationName",
    "ComputePlatform"
  ]
},
"AWS::CodeDeploy::DeploymentConfig": {
  "full_properties": {
    "DeploymentConfigName": {
      "description": "A name for the deployment configuration. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the deployment configuration name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "MinimumHealthyHosts": {
      "description": "The minimum number of healthy instances that should be available at any time during the deployment. There are two parameters expected in the input: type and value.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-codedeploy-deploymentconfig.html",
  "properties": [
    "DeploymentConfigName",
    "MinimumHealthyHosts"
  ]
},
"AWS::CodeDeploy::DeploymentGroup": {
  "full_properties": {
    "AlarmConfiguration": {
      "description": "Information about the Amazon CloudWatch alarms that are associated with the deployment group.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ApplicationName": {
      "description": "The name of an existing CodeDeploy application to associate this deployment group with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "AutoRollbackConfiguration": {
      "description": "Information about the automatic rollback configuration that is associated with the deployment group. If you specify this property, don't specify the Deployment property.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "AutoScalingGroups": {
      "description": "A list of associated Auto Scaling groups that CodeDeploy automatically deploys revisions to when new instances are created. Duplicates are not allowed.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Deployment": {
      "description": "The application revision to deploy to this deployment group. If you specify this property,  your target application revision is deployed as soon as the provisioning process is complete. If you specify this property, don't specify the AutoRollbackConfiguration property.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DeploymentConfigName": {
      "description": "A deployment configuration name or a predefined configuration name. With predefined configurations, you can deploy application revisions to one instance at a time, half of the instances at a time, or all the instances at once. For more information and valid values, see Working with Deployment Configurations in the AWS CodeDeploy User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DeploymentGroupName": {
      "description": "A name for the deployment group. If you don't specify a name, AWS CloudFormation generates  a unique physical ID and uses that ID for the deployment group name. For more information,  see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "DeploymentStyle": {
      "description": "Attributes that determine the type of deployment to run and whether to route deployment traffic behind a load balancer.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Ec2TagFilters": {
      "description": "The EC2 tags that are already applied to EC2 instances that you want to include in the deployment group. CodeDeploy includes all EC2 instances identified by any of the tags you specify in this deployment group. Duplicates are not allowed.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Ec2TagSet": {
      "description": "Information about groups of tags applied to EC2 instances. The deployment group includes only EC2 instances identified by all the tag groups. Cannot be used in the same call as ec2TagFilter.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "LoadBalancerInfo": {
      "description": "Information about the load balancer to use in a deployment. For more information, see  Integrating CodeDeploy with Elastic Load Balancing in the AWS CodeDeploy User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "OnPremisesInstanceTagFilters": {
      "description": "The on-premises instance tags already applied to on-premises instances that you want to include in the deployment group. CodeDeploy includes all on-premises instances identified by any of the tags you specify in this deployment group. To register on-premises instances with CodeDeploy, see Working with On-Premises Instances for CodeDeploy in the AWS CodeDeploy User Guide. Duplicates are not allowed.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "OnPremisesTagSet": {
      "description": "Information about groups of tags applied to on-premises instances. The deployment group includes only on-premises instances identified by all the tag groups.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ServiceRoleArn": {
      "description": "A service role Amazon Resource Name (ARN) that grants CodeDeploy permission to make calls to AWS services on your behalf. For more information, see Create a Service Role for AWS CodeDeploy in the AWS CodeDeploy User Guide.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TriggerConfigurations": {
      "description": "Information about triggers associated with the deployment group. Duplicates are not allowed",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-codedeploy-deploymentgroup.html",
  "properties": [
    "AlarmConfiguration",
    "ApplicationName",
    "AutoRollbackConfiguration",
    "AutoScalingGroups",
    "Deployment",
    "DeploymentConfigName",
    "DeploymentGroupName",
    "DeploymentStyle",
    "Ec2TagFilters",
    "Ec2TagSet",
    "LoadBalancerInfo",
    "OnPremisesInstanceTagFilters",
    "OnPremisesTagSet",
    "ServiceRoleArn",
    "TriggerConfigurations"
  ]
},
"AWS::CodePipeline::CustomActionType": {
  "full_properties": {
    "Category": {
      "description": "The category of the custom action, such as a build action or a test action.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ConfigurationProperties": {
      "description": "The configuration properties for the custom action.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "InputArtifactDetails": {
      "description": "The details of the input artifact for the action, such as its commit ID.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "OutputArtifactDetails": {
      "description": "The details of the output artifact of the action, such as its commit ID.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Provider": {
      "description": "The provider of the service used in the custom action, such as AWS CodeDeploy.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Settings": {
      "description": "URLs that provide users information about this custom action.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Version": {
      "description": "The version identifier of the custom action.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-codepipeline-customactiontype.html",
  "properties": [
    "Category",
    "ConfigurationProperties",
    "InputArtifactDetails",
    "OutputArtifactDetails",
    "Provider",
    "Settings",
    "Version"
  ]
},
"AWS::CodePipeline::Pipeline": {
  "full_properties": {
    "ArtifactStore": {
      "description": "The Amazon S3 bucket where artifacts are stored for the pipeline.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ArtifactStores": {
      "description": "A mapping of artifactStore objects and their corresponding regions. There must be an artifact store for the pipeline region and for each cross-region action within the pipeline.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "DisableInboundStageTransitions": {
      "description": "Represents the input of a DisableStageTransition action.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the pipeline.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RestartExecutionOnUpdate": {
      "description": "Indicates whether to rerun the CodePipeline pipeline after you update it.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The Amazon Resource Name (ARN) for AWS CodePipeline to use to either perform actions with no actionRoleArn, or to use to assume roles for actions with an actionRoleArn.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Stages": {
      "description": "Represents information about a stage and its definition.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-codepipeline-pipeline.html",
  "properties": [
    "ArtifactStore",
    "ArtifactStores",
    "DisableInboundStageTransitions",
    "Name",
    "RestartExecutionOnUpdate",
    "RoleArn",
    "Stages"
  ]
},
"AWS::CodePipeline::Webhook": {
  "full_properties": {
    "Authentication": {
      "description": "Supported options are GITHUB_HMAC, IP and UNAUTHENTICATED.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "AuthenticationConfiguration": {
      "description": "Properties that configure the authentication applied to incoming webhook trigger requests. The required properties depend on the authentication type. For GITHUB_HMAC, only the SecretToken property must be set. For IP, only the AllowedIPRange property must be set to a valid CIDR range. For UNAUTHENTICATED, no properties can be set.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Filters": {
      "description": "A list of rules applied to the body/payload sent in the POST request to a webhook URL. All defined rules must pass for the request to be accepted and the pipeline started.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the webhook.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RegisterWithThirdParty": {
      "description": "Configures a connection between the webhook that was created and the external tool with events to be detected.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "TargetAction": {
      "description": "The name of the action in a pipeline you want to connect to the webhook. The action must be from the source (first) stage of the pipeline.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TargetPipeline": {
      "description": "The name of the pipeline you want to connect to the webhook.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TargetPipelineVersion": {
      "description": "The version number of the pipeline to be connected to the trigger request.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-codepipeline-webhook.html",
  "properties": [
    "Authentication",
    "AuthenticationConfiguration",
    "Filters",
    "Name",
    "RegisterWithThirdParty",
    "TargetAction",
    "TargetPipeline",
    "TargetPipelineVersion"
  ]
},
"AWS::CodeStar::GitHubRepository": {
  "full_properties": {
    "Code": {
      "description": "Information about code to be committed to a repository after it is created in an AWS CloudFormation stack.",
      "required": false,
      "type": "Unknown",
      "update_causes": "unavailable"
    },
    "EnableIssues": {
      "description": "Indicates whether to enable issues for the GitHub repository. You can use GitHub issues to track information and bugs for your repository.",
      "required": false,
      "type": "Boolean",
      "update_causes": "unavailable"
    },
    "IsPrivate": {
      "description": "Indicates whether the GitHub repository is a private repository. If so, you choose who can see and commit to this repository.",
      "required": false,
      "type": "Boolean",
      "update_causes": "unavailable"
    },
    "RepositoryAccessToken": {
      "description": "The GitHub user's personal access token for the GitHub repository.",
      "required": true,
      "type": "String",
      "update_causes": "unavailable"
    },
    "RepositoryDescription": {
      "description": "A comment or description about the new repository. This description is displayed in GitHub after the repository is created.",
      "required": false,
      "type": "String",
      "update_causes": "unavailable"
    },
    "RepositoryName": {
      "description": "The name of the repository you want to create in GitHub with AWS CloudFormation stack creation.",
      "required": true,
      "type": "String",
      "update_causes": "unavailable"
    },
    "RepositoryOwner": {
      "description": "The GitHub user name for the owner of the GitHub repository to be created. If this repository should be owned by a GitHub organization, provide its name.",
      "required": true,
      "type": "String",
      "update_causes": "unavailable"
    }
  },
  "path": "aws-resource-codestar-githubrepository.html",
  "properties": [
    "Code",
    "EnableIssues",
    "IsPrivate",
    "RepositoryAccessToken",
    "RepositoryDescription",
    "RepositoryName",
    "RepositoryOwner"
  ]
},
"AWS::Cognito::IdentityPool": {
  "full_properties": {
    "AllowUnauthenticatedIdentities": {
      "description": "Specifies whether the identity pool supports unauthenticated logins.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "CognitoEvents": {
      "description": "The events to configure.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CognitoIdentityProviders": {
      "description": "An array of Amazon Cognito user pools and their client IDs.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "CognitoStreams": {
      "description": "Configuration options for configuring Amazon Cognito streams.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DeveloperProviderName": {
      "description": "The \"domain\" by which Amazon Cognito will refer to your users. This name acts as a placeholder that allows your backend and the Amazon Cognito service to communicate about the developer provider. For the DeveloperProviderName, you can use letters and periods (.), underscores (_), and dashes (-).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "IdentityPoolName": {
      "description": "The name of your Amazon Cognito identity pool.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "OpenIdConnectProviderARNs": {
      "description": "A list of ARNs for the OpendID Connect provider.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "PushSync": {
      "description": "Configuration options to be applied to the identity pool.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SamlProviderARNs": {
      "description": "A list of Amazon Resource Names (ARNs) of Security Assertion Markup Language (SAML) providers.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SupportedLoginProviders": {
      "description": "Key-value pairs that map provider names to provider app IDs.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-cognito-identitypool.html",
  "properties": [
    "AllowUnauthenticatedIdentities",
    "CognitoEvents",
    "CognitoIdentityProviders",
    "CognitoStreams",
    "DeveloperProviderName",
    "IdentityPoolName",
    "OpenIdConnectProviderARNs",
    "PushSync",
    "SamlProviderARNs",
    "SupportedLoginProviders"
  ]
},
"AWS::Cognito::IdentityPoolRoleAttachment": {
  "full_properties": {
    "IdentityPoolId": {
      "description": "An identity pool ID in the format REGION:GUID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RoleMappings": {
      "description": "How users for a specific identity provider are mapped to roles. This is a string to RoleMapping object map. The string identifies the identity provider, for example, \"graph.facebook.com\" or \"cognito-idp-east-1.amazonaws.com/us-east-1_abcdefghi:app_client_id\"",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Roles": {
      "description": "The map of roles associated with this pool. For a given role, the key will be either \"authenticated\" or \"unauthenticated\" and the value will be the Role ARN.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-cognito-identitypoolroleattachment.html",
  "properties": [
    "IdentityPoolId",
    "RoleMappings",
    "Roles"
  ]
},
"AWS::Cognito::UserPool": {
  "full_properties": {
    "AdminCreateUserConfig": {
      "description": "The type of configuration for creating a new user profile.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "AliasAttributes": {
      "description": "Attributes supported as an alias for this user pool. Possible values: phone_number, email, or preferred_username.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "AutoVerifiedAttributes": {
      "description": "The attributes to be auto-verified. Possible values: email, phone_number.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "DeviceConfiguration": {
      "description": "The type of configuration for the user pool's device tracking.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EmailConfiguration": {
      "description": "The email configuration.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EmailVerificationMessage": {
      "description": "A string representing the email verification message.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EmailVerificationSubject": {
      "description": "A string representing the email verification subject.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "LambdaConfig": {
      "description": "The Lambda trigger configuration information for the new user pool.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MfaConfiguration": {
      "description": "Specifies multi-factor authentication (MFA) configuration details. Can be one of the following values:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Policies": {
      "description": "The policy associated with a user pool.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Schema": {
      "description": "An array of schema attributes for the new user pool. These attributes can be standard or custom attributes.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SmsAuthenticationMessage": {
      "description": "A string representing the SMS authentication message.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SmsConfiguration": {
      "description": "The SMS configuration.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SmsVerificationMessage": {
      "description": "A string representing the SMS verification message.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "UserPoolAddOns": {
      "description": "Used to enable advanced security risk detection. Set the key AdvancedSecurityMode to the value \"AUDIT\".",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "UserPoolName": {
      "description": "A string used to name the user pool.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "UserPoolTags": {
      "description": "The tag keys and values to assign to the user pool. A tag is a label that you can use to categorize and manage user pools in different ways, such as by purpose, owner, environment, or other criteria.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "UsernameAttributes": {
      "description": "Specifies whether email addresses or phone numbers can be specified as user names when a user signs up. Possible values: phone_number or email.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "VerificationMessageTemplate": {
      "description": "The template for the verification message that the user sees when the app requests permission to access the user's information.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-cognito-userpool.html",
  "properties": [
    "AdminCreateUserConfig",
    "AliasAttributes",
    "AutoVerifiedAttributes",
    "DeviceConfiguration",
    "EmailConfiguration",
    "EmailVerificationMessage",
    "EmailVerificationSubject",
    "LambdaConfig",
    "MfaConfiguration",
    "Policies",
    "Schema",
    "SmsAuthenticationMessage",
    "SmsConfiguration",
    "SmsVerificationMessage",
    "UsernameAttributes",
    "UserPoolAddOns",
    "UserPoolName",
    "UserPoolTags",
    "VerificationMessageTemplate"
  ]
},
"AWS::Cognito::UserPoolClient": {
  "full_properties": {
    "AllowedOAuthFlows": {
      "description": "Set to code to initiate a code grant flow, which provides an authorization code as the response. This code can be exchanged for access tokens with the token endpoint.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "AllowedOAuthFlowsUserPoolClient": {
      "description": "Set to True if the client is allowed to follow the OAuth protocol when interacting with Cognito user pools.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "AllowedOAuthScopes": {
      "description": "A list of allowed OAuth scopes. Currently supported values are \"phone\", \"email\", \"openid\", and \"Cognito\".",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "AnalyticsConfiguration": {
      "description": "The Amazon Pinpoint analytics configuration for collecting metrics for this user pool.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CallbackURLs": {
      "description": "A list of allowed redirect (callback) URLs for the identity providers.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ClientName": {
      "description": "The client name for the user pool client you would like to create.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultRedirectURI": {
      "description": "The default redirect URI. Must be in the CallbackURLs list.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ExplicitAuthFlows": {
      "description": "The explicit authentication flows, which can be one of the following: ADMIN_NO_SRP_AUTH, CUSTOM_AUTH_FLOW_ONLY, or USER_PASSWORD_AUTH.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "GenerateSecret": {
      "description": "Boolean to specify whether you want to generate a secret for the user pool client being created.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "LogoutURLs": {
      "description": "A list of allowed logout URLs for the identity providers.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ReadAttributes": {
      "description": "The read attributes.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "RefreshTokenValidity": {
      "description": "The time limit, in days, after which the refresh token is no longer valid and cannot be used.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SupportedIdentityProviders": {
      "description": "A list of provider names for the identity providers that are supported on this client. The following are supported: COGNITO, Facebook, Google and LoginWithAmazon.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "UserPoolId": {
      "description": "The user pool ID for the user pool where you want to create a user pool client.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "WriteAttributes": {
      "description": "The user pool attributes that the app client can write to.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-cognito-userpoolclient.html",
  "properties": [
    "AllowedOAuthFlows",
    "AllowedOAuthFlowsUserPoolClient",
    "AllowedOAuthScopes",
    "AnalyticsConfiguration",
    "CallbackURLs",
    "ClientName",
    "DefaultRedirectURI",
    "ExplicitAuthFlows",
    "GenerateSecret",
    "LogoutURLs",
    "ReadAttributes",
    "RefreshTokenValidity",
    "SupportedIdentityProviders",
    "UserPoolId",
    "WriteAttributes"
  ]
},
"AWS::Cognito::UserPoolGroup": {
  "full_properties": {
    "Description": {
      "description": "A string containing the description of the group.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "GroupName": {
      "description": "The name of the group. Must be unique.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Precedence": {
      "description": "A nonnegative integer value that specifies the precedence of this group relative to the other groups that a user can belong to in the user pool. Zero is the highest precedence value. Groups with lower Precedence values take precedence over groups with higher or null Precedence values. If a user belongs to two or more groups, it is the group with the lowest precedence value whose role ARN will be used in the cognito:roles and cognito:preferred_role claims in the user's tokens.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The role ARN for the group.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "UserPoolId": {
      "description": "The user pool ID for the user pool.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-cognito-userpoolgroup.html",
  "properties": [
    "Description",
    "GroupName",
    "Precedence",
    "RoleArn",
    "UserPoolId"
  ]
},
"AWS::Cognito::UserPoolUser": {
  "full_properties": {
    "DesiredDeliveryMediums": {
      "description": "Specify \"EMAIL\" if email will be used to send the welcome message. Specify \"SMS\" if the phone number will be used. The default value is \"SMS\". More than one value can be specified.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "ForceAliasCreation": {
      "description": "This parameter is only used if the phone_number_verified or email_verified attribute is set to True. Otherwise, it is ignored.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "MessageAction": {
      "description": "Set to \"RESEND\" to resend the invitation message to a user that already exists and reset the expiration limit on the user's account. Set to \"SUPPRESS\" to suppress sending the message. Only one value can be specified.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "UserAttributes": {
      "description": "An array of name-value pairs that contain user attributes and attribute values to be set for the user to be created. You can create a user without specifying any attributes other than Username. However, any attributes that you specify as required (in https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html or in the Attributes tab of the console) must be supplied either by you (in your call to AdminCreateUser) or by the user (when he or she signs up in response to your welcome message).",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "UserPoolId": {
      "description": "The user pool ID for the user pool where the user will be created.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Username": {
      "description": "The username for the user. Must be unique within the user pool. Must be a UTF-8 string between 1 and 128 characters. After the user is created, the username cannot be changed.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ValidationData": {
      "description": "The user's validation data. This is an array of name-value pairs that contain user attributes and attribute values that you can use for custom validation, such as restricting the types of user accounts that can be registered. For example, you might choose to allow or disallow user sign-up based on the user's domain.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-cognito-userpooluser.html",
  "properties": [
    "DesiredDeliveryMediums",
    "ForceAliasCreation",
    "MessageAction",
    "UserAttributes",
    "Username",
    "UserPoolId",
    "ValidationData"
  ]
},
"AWS::Cognito::UserPoolUserToGroupAttachment": {
  "full_properties": {
    "GroupName": {
      "description": "The group name.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "UserPoolId": {
      "description": "The user pool ID for the user pool.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Username": {
      "description": "The username for the user.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-cognito-userpoolusertogroupattachment.html",
  "properties": [
    "GroupName",
    "Username",
    "UserPoolId"
  ]
},
"AWS::Config::AggregationAuthorization": {
  "full_properties": {
    "AuthorizedAccountId": {
      "description": "The 12-digit account ID of the account authorized to aggregate data.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "AuthorizedAwsRegion": {
      "description": "The region authorized to collect aggregated data.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-config-aggregationauthorization.html",
  "properties": [
    "AuthorizedAccountId",
    "AuthorizedAwsRegion"
  ]
},
"AWS::Config::ConfigRule": {
  "full_properties": {
    "ConfigRuleName": {
      "description": "A name for the AWS Config rule. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the rule name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The description that you provide for the AWS Config rule.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InputParameters": {
      "description": "A string, in JSON format, that is passed to the AWS Config rule Lambda function.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MaximumExecutionFrequency": {
      "description": "The maximum frequency with which AWS Config runs evaluations for a rule. You can specify a value for MaximumExecutionFrequency when:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Scope": {
      "description": "Defines which resources can trigger an evaluation for the rule. The scope can include one or more resource types, a combination of one resource type and one resource ID, or a combination of a tag key and value. Specify a scope to constrain the resources that can trigger an evaluation for the rule. If you do not specify a scope, evaluations are triggered when any resource in the recording group changes.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Source": {
      "description": "Provides the rule owner (AWS or customer), the rule identifier, and the notifications that cause the function to evaluate your AWS resources.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-config-configrule.html",
  "properties": [
    "ConfigRuleName",
    "Description",
    "InputParameters",
    "MaximumExecutionFrequency",
    "Scope",
    "Source"
  ]
},
"AWS::Config::ConfigurationAggregator": {
  "full_properties": {
    "AccountAggregationSources": {
      "description": "Provides a list of source accounts and regions to be aggregated.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ConfigurationAggregatorName": {
      "description": "The name of the aggregator.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "OrganizationAggregationSource": {
      "description": "Provides an organization and list of regions to be aggregated.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-config-configurationaggregator.html",
  "properties": [
    "AccountAggregationSources",
    "ConfigurationAggregatorName",
    "OrganizationAggregationSource"
  ]
},
"AWS::Config::ConfigurationRecorder": {
  "full_properties": {
    "Name": {
      "description": "A name for the configuration recorder. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the configuration recorder name.  For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": [
        "unavailable",
        "replacement"
      ]
    },
    "RecordingGroup": {
      "description": "Indicates whether to record configurations for all supported resources or for a list of resource types. The resource types that you list must be supported by AWS Config.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RoleARN": {
      "description": "The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role that is used to make read or write requests to the delivery channel that you specify and to get configuration details for supported AWS resources. For more information, see Permissions for the IAM Role Assigned to AWS Config in the AWS Config Developer Guide.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-config-configurationrecorder.html",
  "properties": [
    "Name",
    "RecordingGroup",
    "RoleARN"
  ]
},
"AWS::Config::DeliveryChannel": {
  "full_properties": {
    "ConfigSnapshotDeliveryProperties": {
      "description": "The options for how often AWS Config delivers configuration snapshots to the Amazon S3 bucket.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "A name for the delivery channel. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the delivery channel name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": [
        "unavailable",
        "replacement"
      ]
    },
    "S3BucketName": {
      "description": "The name of the Amazon S3 bucket to which AWS Config delivers configuration snapshots and configuration history files.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "S3KeyPrefix": {
      "description": "The prefix for the specified Amazon S3 bucket.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SnsTopicARN": {
      "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic to which AWS Config sends notifications about configuration changes.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-config-deliverychannel.html",
  "properties": [
    "ConfigSnapshotDeliveryProperties",
    "Name",
    "S3BucketName",
    "S3KeyPrefix",
    "SnsTopicARN"
  ]
},
"AWS::Config::RemediationConfiguration": {
  "full_properties": {
    "ConfigRuleName": {
      "description": "The name of the AWS Config rule.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Parameters": {
      "description": "An object of the RemediationParameterValue.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ResourceType": {
      "description": "The type of a resource.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TargetId": {
      "description": "Target ID is the name of the public document.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TargetType": {
      "description": "The type of the target. Target executes remediation. For example, SSM document.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TargetVersion": {
      "description": "Version of the target. For example, version of the SSM document.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-config-remediationconfiguration.html",
  "properties": [
    "ConfigRuleName",
    "Parameters",
    "ResourceType",
    "TargetId",
    "TargetType",
    "TargetVersion"
  ]
},
"AWS::DAX::Cluster": {
  "full_properties": {
    "AvailabilityZones": {
      "description": "The Availability Zones (AZs) in which the cluster nodes will reside after the cluster has been created or updated. If provided, the length of this list must equal the ReplicationFactor parameter. If you omit this parameter, DAX will spread the nodes across Availability Zones for the highest availability.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ClusterName": {
      "description": "The name of the DAX cluster.",
      "required": false,
      "type": "String",
      "update_causes": "unavailable"
    },
    "Description": {
      "description": "The description of the cluster.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "IAMRoleARN": {
      "description": "A valid Amazon Resource Name (ARN) that identifies an IAM role. At runtime, DAX will assume this role and use the role's permissions to access DynamoDB on your behalf.",
      "required": true,
      "type": "String",
      "update_causes": "unavailable"
    },
    "NodeType": {
      "description": "The node type for the nodes in the cluster. (All nodes in a DAX cluster are of the same type.)",
      "required": true,
      "type": "String",
      "update_causes": "unavailable"
    },
    "NotificationTopicARN": {
      "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications will be sent.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ParameterGroupName": {
      "description": "The parameter group to be associated with the DAX cluster.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PreferredMaintenanceWindow": {
      "description": "A range of time when maintenance of DAX cluster software will be performed. For example: sun:01:00-sun:09:00. Cluster maintenance normally takes less than 30 minutes, and is performed automatically within the maintenance window.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ReplicationFactor": {
      "description": "The number of nodes in the DAX cluster. A replication factor of 1 will create a single-node cluster, without any read replicas. For additional fault tolerance, you can create a multiple node cluster with one or more read replicas. To do this, set ReplicationFactor to a number between 3 (one primary and two read replicas) and 10 (one primary and nine read replicas). If the AvailabilityZones parameter is provided, its length must equal the ReplicationFactor.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "SSESpecification": {
      "description": "Represents the settings used to enable server-side encryption on the cluster.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "SecurityGroupIds": {
      "description": "A list of security group IDs to be assigned to each node in the DAX cluster. (Each of the security group ID is system-generated.)",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SubnetGroupName": {
      "description": "The name of the subnet group to be used for the replication group.",
      "required": false,
      "type": "String",
      "update_causes": "unavailable"
    },
    "Tags": {
      "description": "A set of tags to associate with the DAX cluster.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-dax-cluster.html",
  "properties": [
    "AvailabilityZones",
    "ClusterName",
    "Description",
    "IAMRoleARN",
    "NodeType",
    "NotificationTopicARN",
    "ParameterGroupName",
    "PreferredMaintenanceWindow",
    "ReplicationFactor",
    "SecurityGroupIds",
    "SSESpecification",
    "SubnetGroupName",
    "Tags"
  ]
},
"AWS::DAX::ParameterGroup": {
  "full_properties": {
    "Description": {
      "description": "A description of the parameter group.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ParameterGroupName": {
      "description": "The name of the parameter group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ParameterNameValues": {
      "description": "An array of name-value pairs for the parameters in the group. Each element in the array represents a single parameter.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-dax-parametergroup.html",
  "properties": [
    "Description",
    "ParameterGroupName",
    "ParameterNameValues"
  ]
},
"AWS::DAX::SubnetGroup": {
  "full_properties": {
    "Description": {
      "description": "The description of the subnet group.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SubnetGroupName": {
      "description": "The name of the subnet group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetIds": {
      "description": "A list of VPC subnet IDs for the subnet group.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-dax-subnetgroup.html",
  "properties": [
    "Description",
    "SubnetGroupName",
    "SubnetIds"
  ]
},
"AWS::DLM::LifecyclePolicy": {
  "full_properties": {
    "Description": {
      "description": "A description of the lifecycle policy. The characters ^[0-9A-Za-z _-]+$ are supported.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ExecutionRoleArn": {
      "description": "The Amazon Resource Name (ARN) of the IAM role used to run the operations specified by the lifecycle policy.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PolicyDetails": {
      "description": "The configuration details of the lifecycle policy.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "State": {
      "description": "The activation state of the lifecycle policy.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-dlm-lifecyclepolicy.html",
  "properties": [
    "Description",
    "ExecutionRoleArn",
    "PolicyDetails",
    "State"
  ]
},
"AWS::DMS::Certificate": {
  "full_properties": {
    "CertificateIdentifier": {
      "description": "A customer-assigned name for the certificate. Identifiers must begin with a letter; must contain only ASCII letters, digits, and hyphens; and must not end with a hyphen or contain two consecutive hyphens.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "CertificatePem": {
      "description": "The contents of a .pem file, which contains an X.509 certificate.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "CertificateWallet": {
      "description": "The location of an imported Oracle Wallet certificate for use with SSL.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-dms-certificate.html",
  "properties": [
    "CertificateIdentifier",
    "CertificatePem",
    "CertificateWallet"
  ]
},
"AWS::DMS::Endpoint": {
  "full_properties": {
    "CertificateArn": {
      "description": "The Amazon Resource Name (ARN) for the certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DatabaseName": {
      "description": "The name of the endpoint database.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DynamoDbSettings": {
      "description": "Settings in JSON format for the target Amazon DynamoDB endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to DynamoDB in the AWS Database Migration Service User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ElasticsearchSettings": {
      "description": "Settings in JSON format for the target Elasticsearch endpoint. For more information about the available settings, see Extra Connection Attributes When Using Elasticsearch as a Target for AWS DMS in the AWS Database Migration User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EndpointIdentifier": {
      "description": "The database endpoint identifier. Identifiers must begin with a letter; must contain only ASCII letters, digits, and hyphens; and must not end with a hyphen or contain two consecutive hyphens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EndpointType": {
      "description": "The type of endpoint.  Valid values are source and target.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "EngineName": {
      "description": "The type of engine for the endpoint. Valid values, depending on the EndpointType value, include mysql, oracle, postgres, mariadb, aurora, aurora-postgresql, redshift, s3, db2, azuredb, sybase, dynamodb, mongodb, and sqlserver.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ExtraConnectionAttributes": {
      "description": "Additional attributes associated with the connection. Each attribute is specified as a name-value pair associated by an equal sign (=). Multiple attributes are separated by a semicolon (;) with no additional white space. For information on the attributes available for connecting your source or target endpoint, see Working with AWS DMS Endpoints in the AWS Database Migration Service User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "KinesisSettings": {
      "description": "Settings in JSON format for the target Amazon Kinesis Data Streams endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to a Kinesis Data Stream in the AWS Database Migration User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "KmsKeyId": {
      "description": "An AWS KMS key identifier that is used to encrypt the connection parameters for the endpoint.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "MongoDbSettings": {
      "description": "Settings in JSON format for the source MongoDB endpoint. For more information about the available settings, see the configuration properties section in  Using MongoDB as a Target for AWS Database Migration Service in the AWS Database Migration Service User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Password": {
      "description": "The password to be used to log in to the endpoint database.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Port": {
      "description": "The port used by the endpoint database.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "S3Settings": {
      "description": "Settings in JSON format for the target Amazon S3 endpoint. For more information about the available settings, see Extra Connection Attributes When Using Amazon S3 as a Target for AWS DMS in the AWS Database Migration Service User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ServerName": {
      "description": "The name of the server where the endpoint database resides.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SslMode": {
      "description": "The Secure Sockets Layer (SSL) mode to use for the SSL connection. The default is none",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "One or more tags to be assigned to the endpoint.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Username": {
      "description": "The user name to be used to log in to the endpoint database.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-dms-endpoint.html",
  "properties": [
    "CertificateArn",
    "DatabaseName",
    "DynamoDbSettings",
    "ElasticsearchSettings",
    "EndpointIdentifier",
    "EndpointType",
    "EngineName",
    "ExtraConnectionAttributes",
    "KinesisSettings",
    "KmsKeyId",
    "MongoDbSettings",
    "Password",
    "Port",
    "S3Settings",
    "ServerName",
    "SslMode",
    "Tags",
    "Username"
  ]
},
"AWS::DMS::EventSubscription": {
  "full_properties": {
    "Enabled": {
      "description": "Indicates whether to activate the subscription. If you don't specify this property, AWS CloudFormation activates the subscription.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "EventCategories": {
      "description": "A list of event categories for a source type that you want to subscribe to. If you don't specify this property, you are notified about all event categories. For more information, see Working with Events and Notifications in the AWS Database Migration Service User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SnsTopicArn": {
      "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "SourceIds": {
      "description": "A list of identifiers for which AWS DMS provides notification events.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SourceType": {
      "description": "The type of AWS DMS resource that generates the events. For example, if you want to be notified of events generated by a replication instance, you set this parameter to replication-instance. If this value is not specified, all events are returned.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SubscriptionName": {
      "description": "The name of the AWS DMS event notification subscription. This name must be less than 255 characters.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "One or more tags to be assigned to the event subscription.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-dms-eventsubscription.html",
  "properties": [
    "Enabled",
    "EventCategories",
    "SnsTopicArn",
    "SourceIds",
    "SourceType",
    "SubscriptionName",
    "Tags"
  ]
},
"AWS::DMS::ReplicationInstance": {
  "full_properties": {
    "AllocatedStorage": {
      "description": "The amount of storage (in gigabytes) to be initially allocated for the replication instance.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "AllowMajorVersionUpgrade": {
      "description": "Indicates that major version upgrades are allowed. Changing this parameter does not result in an outage, and the change is asynchronously applied as soon as possible.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AutoMinorVersionUpgrade": {
      "description": "Indicates whether minor engine upgrades will be applied automatically to the replication instance during the maintenance window. This parameter defaults to true.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AvailabilityZone": {
      "description": "The Availability Zone that the replication instance will be created in.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineVersion": {
      "description": "The engine version number of the replication instance.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "KmsKeyId": {
      "description": "An AWS KMS key identifier that is used to encrypt the data on the replication instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "MultiAZ": {
      "description": "Specifies whether the replication instance is a Multi-AZ deployment. You cannot set the AvailabilityZone parameter if the Multi-AZ parameter is set to true.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "PreferredMaintenanceWindow": {
      "description": "The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PubliclyAccessible": {
      "description": "Specifies the accessibility options for the replication instance. A value of true represents an instance with a public IP address. A value of false represents an instance with a private IP address. The default value is true.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "ReplicationInstanceClass": {
      "description": "The compute and memory capacity of the replication instance as specified by the replication instance class.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ReplicationInstanceIdentifier": {
      "description": "The replication instance identifier. This parameter is stored as a lowercase string.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ReplicationSubnetGroupIdentifier": {
      "description": "A subnet group to associate with the replication instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "One or more tags to be assigned to the replication instance.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "VpcSecurityGroupIds": {
      "description": "Specifies the VPC security group to be used with the replication instance. The VPC security group must work with the VPC containing the replication instance.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-dms-replicationinstance.html",
  "properties": [
    "AllocatedStorage",
    "AllowMajorVersionUpgrade",
    "AutoMinorVersionUpgrade",
    "AvailabilityZone",
    "EngineVersion",
    "KmsKeyId",
    "MultiAZ",
    "PreferredMaintenanceWindow",
    "PubliclyAccessible",
    "ReplicationInstanceClass",
    "ReplicationInstanceIdentifier",
    "ReplicationSubnetGroupIdentifier",
    "Tags",
    "VpcSecurityGroupIds"
  ]
},
"AWS::DMS::ReplicationSubnetGroup": {
  "full_properties": {
    "ReplicationSubnetGroupDescription": {
      "description": "The description for the subnet group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ReplicationSubnetGroupIdentifier": {
      "description": "The identifier for the replication subnet group. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the identifier.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetIds": {
      "description": "One or more subnet IDs to be assigned to the subnet group.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "One or more tags to be assigned to the subnet group.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-dms-replicationsubnetgroup.html",
  "properties": [
    "ReplicationSubnetGroupDescription",
    "ReplicationSubnetGroupIdentifier",
    "SubnetIds",
    "Tags"
  ]
},
"AWS::DMS::ReplicationTask": {
  "full_properties": {
    "CdcStartTime": {
      "description": "Indicates the start time for a change data capture (CDC) operation.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MigrationType": {
      "description": "The migration type. Valid values: full-load | cdc | full-load-and-cdc",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ReplicationInstanceArn": {
      "description": "The Amazon Resource Name (ARN) of a replication instance.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ReplicationTaskIdentifier": {
      "description": "An identifier for the replication task.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ReplicationTaskSettings": {
      "description": "Overall settings for the task, in JSON format. For more information, see Task Settings in the AWS Database Migration User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SourceEndpointArn": {
      "description": "An Amazon Resource Name (ARN) that uniquely identifies the source endpoint.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TableMappings": {
      "description": "The table mappings for the task, in JSON format. For more information, see Table Mapping in the AWS Database Migration User Guide.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "One or more tags to be assigned to the replication task.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "TargetEndpointArn": {
      "description": "An Amazon Resource Name (ARN) that uniquely identifies the target endpoint.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-dms-replicationtask.html",
  "properties": [
    "CdcStartTime",
    "MigrationType",
    "ReplicationInstanceArn",
    "ReplicationTaskIdentifier",
    "ReplicationTaskSettings",
    "SourceEndpointArn",
    "TableMappings",
    "Tags",
    "TargetEndpointArn"
  ]
},
"AWS::DataPipeline::Pipeline": {
  "full_properties": {
    "Activate": {
      "description": "Indicates whether to validate and start the pipeline or stop an active pipeline. By default, the value is set to true.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the pipeline.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the pipeline.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ParameterObjects": {
      "description": "The parameter objects used with the pipeline.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "ParameterValues": {
      "description": "The parameter values used with the pipeline.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "PipelineObjects": {
      "description": "The objects that define the pipeline. These objects overwrite the existing pipeline definition. Not all objects, fields, and values can be updated. For information about restrictions, see Editing Your Pipeline in the AWS Data Pipeline Developer Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "PipelineTags": {
      "description": "A list of arbitrary tags (key-value pairs) to associate with the pipeline, which you can use to control permissions. For more information, see Controlling Access to Pipelines and Resources in the AWS Data Pipeline Developer Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-datapipeline-pipeline.html",
  "properties": [
    "Activate",
    "Description",
    "Name",
    "ParameterObjects",
    "ParameterValues",
    "PipelineObjects",
    "PipelineTags"
  ]
},
"AWS::DirectoryService::MicrosoftAD": {
  "full_properties": {
    "CreateAlias": {
      "description": "Specifies an alias for a directory and assigns the alias to the directory. The alias is used to construct the access URL for the directory, such as http://<alias>.awsapps.com. By default, AWS CloudFormation does not create an alias.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "Edition": {
      "description": "AWS Managed Microsoft AD is available in two editions: Standard and Enterprise. Enterprise is the default.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EnableSso": {
      "description": "Whether to enable single sign-on for a Microsoft Active Directory in AWS. Single sign-on allows users in your directory to access certain AWS services from a computer joined to the directory without having to enter their credentials separately. If you don't specify a value, AWS CloudFormation disables single sign-on by default.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Name": {
      "description": "The fully qualified domain name for the AWS Managed Microsoft AD directory, such as corp.example.com. This name will resolve inside your VPC only. It does not need to be publicly resolvable.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Password": {
      "description": "The password for the default administrative user named Admin.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ShortName": {
      "description": "The NetBIOS name for your domain, such as CORP. If you don't specify a NetBIOS name, it will default to the first part of your directory DNS. For example, CORP for the directory DNS corp.example.com.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "VpcSettings": {
      "description": "Specifies the VPC settings of the Microsoft AD directory server in AWS.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-directoryservice-microsoftad.html",
  "properties": [
    "CreateAlias",
    "Edition",
    "EnableSso",
    "Name",
    "Password",
    "ShortName",
    "VpcSettings"
  ]
},
"AWS::DirectoryService::SimpleAD": {
  "full_properties": {
    "CreateAlias": {
      "description": "If set to true, specifies an alias for a directory and assigns the alias to the directory. The alias is used to construct the access URL for the directory, such as http://<alias>.awsapps.com. By default, this property is set to false.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "A description for the directory.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EnableSso": {
      "description": "Whether to enable single sign-on for a directory. If you don't specify a value, AWS CloudFormation disables single sign-on by default.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Name": {
      "description": "The fully qualified name for the directory, such as corp.example.com.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Password": {
      "description": "The password for the directory administrator. The directory creation process creates a directory administrator account with the user name Administrator and this password.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ShortName": {
      "description": "The NetBIOS name of the directory, such as CORP.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Size": {
      "description": "The size of the directory. For valid values, see CreateDirectory in the AWS Directory Service API Reference.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "VpcSettings": {
      "description": "A DirectoryVpcSettings object that contains additional information for the operation.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-directoryservice-simplead.html",
  "properties": [
    "CreateAlias",
    "Description",
    "EnableSso",
    "Name",
    "Password",
    "ShortName",
    "Size",
    "VpcSettings"
  ]
},
"AWS::DocDB::DBCluster": {
  "full_properties": {
    "AvailabilityZones": {
      "description": "A list of Amazon EC2 Availability Zones that instances in the DB cluster can be created in.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "BackupRetentionPeriod": {
      "description": "The number of days for which automated backups are retained. You must specify a minimum value of 1.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "DBClusterIdentifier": {
      "description": "The DB cluster identifier. This parameter is stored as a lowercase string.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBClusterParameterGroupName": {
      "description": "The name of the DB cluster parameter group to associate with this DB cluster.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DBSubnetGroupName": {
      "description": "A DB subnet group to associate with this DB cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineVersion": {
      "description": "The version number of the database engine to use.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "KmsKeyId": {
      "description": "The AWS KMS key identifier for an encrypted DB cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "MasterUserPassword": {
      "description": "The password for the master database user. This password can contain any printable ASCII character except forward slash (/), double quote (\"), or the \"at\" symbol (@).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MasterUsername": {
      "description": "The name of the master user for the DB cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Port": {
      "description": "Specifies the port that the database engine is listening on.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "PreferredBackupWindow": {
      "description": "The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PreferredMaintenanceWindow": {
      "description": "The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SnapshotIdentifier": {
      "description": "The identifier for the DB snapshot or DB cluster snapshot to restore from.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "StorageEncrypted": {
      "description": "Specifies whether the DB cluster is encrypted.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The tags to be assigned to the DB cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcSecurityGroupIds": {
      "description": "A list of EC2 VPC security groups to associate with this DB cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-docdb-dbcluster.html",
  "properties": [
    "AvailabilityZones",
    "BackupRetentionPeriod",
    "DBClusterIdentifier",
    "DBClusterParameterGroupName",
    "DBSubnetGroupName",
    "EngineVersion",
    "KmsKeyId",
    "MasterUsername",
    "MasterUserPassword",
    "Port",
    "PreferredBackupWindow",
    "PreferredMaintenanceWindow",
    "SnapshotIdentifier",
    "StorageEncrypted",
    "Tags",
    "VpcSecurityGroupIds"
  ]
},
"AWS::DocDB::DBClusterParameterGroup": {
  "full_properties": {
    "Description": {
      "description": "The description for the DB cluster parameter group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Family": {
      "description": "The DB cluster parameter group family name.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the DB cluster parameter group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Parameters": {
      "description": "Provides a list of parameters for the DB cluster parameter group.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags to be assigned to the DB cluster parameter group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-docdb-dbclusterparametergroup.html",
  "properties": [
    "Description",
    "Family",
    "Name",
    "Parameters",
    "Tags"
  ]
},
"AWS::DocDB::DBInstance": {
  "full_properties": {
    "AutoMinorVersionUpgrade": {
      "description": "Indicates that minor engine upgrades are applied automatically to the DB instance during the maintenance window.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AvailabilityZone": {
      "description": "The Amazon EC2 Availability Zone that the DB instance is created in.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBClusterIdentifier": {
      "description": "The identifier of the DB cluster that the instance will belong to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBInstanceClass": {
      "description": "The compute and memory capacity of the DB instance; for example, db.m4.large. If you change the class of an instance there can be some interruption in the cluster's service.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DBInstanceIdentifier": {
      "description": "The DB instance identifier. This parameter is stored as a lowercase string.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PreferredMaintenanceWindow": {
      "description": "The time range each week during which system maintenance can occur, in Universal Coordinated Time (UTC).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags to be assigned to the DB instance.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-docdb-dbinstance.html",
  "properties": [
    "AutoMinorVersionUpgrade",
    "AvailabilityZone",
    "DBClusterIdentifier",
    "DBInstanceClass",
    "DBInstanceIdentifier",
    "PreferredMaintenanceWindow",
    "Tags"
  ]
},
"AWS::DocDB::DBSubnetGroup": {
  "full_properties": {
    "DBSubnetGroupDescription": {
      "description": "The description for the DB subnet group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DBSubnetGroupName": {
      "description": "The name for the DB subnet group. This value is stored as a lowercase string.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetIds": {
      "description": "The Amazon EC2 subnet IDs for the DB subnet group.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags to be assigned to the DB subnet group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-docdb-dbsubnetgroup.html",
  "properties": [
    "DBSubnetGroupDescription",
    "DBSubnetGroupName",
    "SubnetIds",
    "Tags"
  ]
},
"AWS::DynamoDB::Table": {
  "full_properties": {
    "AttributeDefinitions": {
      "description": "A list of attributes that describe the key schema for the table and indexes. Duplicates are allowed.",
      "required": false,
      "type": "Array",
      "update_causes": "interrupt"
    },
    "BillingMode": {
      "description": "Specify how you are charged for read and write throughput and how you manage capacity.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "GlobalSecondaryIndexes": {
      "description": "Global secondary indexes to be created on the table. You can create up to 20 global secondary indexes.",
      "required": false,
      "type": "Array",
      "update_causes": [
        "unavailable",
        "none"
      ]
    },
    "KeySchema": {
      "description": "Specifies the attributes that make up the primary key for the table. The attributes in the KeySchema property must also be defined in the AttributeDefinitions property.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    },
    "LocalSecondaryIndexes": {
      "description": "Local secondary indexes to be created on the table. You can create up to 5 local secondary indexes. Each index is scoped to a given hash key value. The size of each hash key can be up to 10 gigabytes.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "PointInTimeRecoverySpecification": {
      "description": "The settings used to enable point in time recover.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ProvisionedThroughput": {
      "description": "Throughput for the specified table, which consists of values for ReadCapacityUnits and WriteCapacityUnits. For more information about the contents of a provisioned throughput structure, see Amazon DynamoDB Table ProvisionedThroughput.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SSESpecification": {
      "description": "Specifies the settings to enable server-side encryption.",
      "required": false,
      "type": "Unknown",
      "update_causes": "interrupt"
    },
    "StreamSpecification": {
      "description": "The settings for the DynamoDB table stream, which capture changes to items stored in the table.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TableName": {
      "description": "A name for the table. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the table name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TimeToLiveSpecification": {
      "description": "Specifies the Time to Live (TTL) settings for the table.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-dynamodb-table.html",
  "properties": [
    "AttributeDefinitions",
    "BillingMode",
    "GlobalSecondaryIndexes",
    "KeySchema",
    "LocalSecondaryIndexes",
    "PointInTimeRecoverySpecification",
    "ProvisionedThroughput",
    "SSESpecification",
    "StreamSpecification",
    "TableName",
    "Tags",
    "TimeToLiveSpecification"
  ]
},
"AWS::EC2::CapacityReservation": {
  "full_properties": {
    "AvailabilityZone": {
      "description": "The Availability Zone in which to create the Capacity Reservation.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EbsOptimized": {
      "description": "Indicates whether the Capacity Reservation supports EBS-optimized instances. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS- optimized instance.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "EndDate": {
      "description": "The date and time at which the Capacity Reservation expires. When a Capacity Reservation expires, the reserved capacity is released and you can no longer launch instances into it. The Capacity Reservation's state changes to expired when it reaches its end date and time.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EndDateType": {
      "description": "Indicates the way in which the Capacity Reservation ends. A Capacity Reservation can have one of the following end types:",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EphemeralStorage": {
      "description": "Indicates whether the Capacity Reservation supports instances with temporary, block-level storage.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "InstanceCount": {
      "description": "The number of instances for which to reserve capacity.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "InstanceMatchCriteria": {
      "description": "Indicates the type of instance launches that the Capacity Reservation accepts. The options include:",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstancePlatform": {
      "description": "The type of operating system for which to reserve capacity.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceType": {
      "description": "The instance type for which to reserve capacity. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "TagSpecifications": {
      "description": "The tags to apply to the Capacity Reservation during launch.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tenancy": {
      "description": "Indicates the tenancy of the Capacity Reservation. A Capacity Reservation can have one of the following tenancy settings:",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-capacityreservation.html",
  "properties": [
    "AvailabilityZone",
    "EbsOptimized",
    "EndDate",
    "EndDateType",
    "EphemeralStorage",
    "InstanceCount",
    "InstanceMatchCriteria",
    "InstancePlatform",
    "InstanceType",
    "TagSpecifications",
    "Tenancy"
  ]
},
"AWS::EC2::ClientVpnAuthorizationRule": {
  "full_properties": {
    "AccessGroupId": {
      "description": "The ID of the Active Directory group to grant access.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "AuthorizeAllGroups": {
      "description": "Indicates whether to grant access to all clients. Use true to grant all clients who successfully establish a VPN connection access to the network.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "ClientVpnEndpointId": {
      "description": "The ID of the Client VPN endpoint.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "A brief description of the authorization rule.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "TargetNetworkCidr": {
      "description": "The IPv4 address range, in CIDR notation, of the network for which access is being authorized.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-clientvpnauthorizationrule.html",
  "properties": [
    "AccessGroupId",
    "AuthorizeAllGroups",
    "ClientVpnEndpointId",
    "Description",
    "TargetNetworkCidr"
  ]
},
"AWS::EC2::ClientVpnEndpoint": {
  "full_properties": {
    "AuthenticationOptions": {
      "description": "Information about the authentication method to be used to authenticate clients.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    },
    "ClientCidrBlock": {
      "description": "The IPv4 address range, in CIDR notation, from which to assign client IP addresses. The address range cannot overlap with the local CIDR of the VPC in which the associated subnet is located, or the routes that you add manually. The address range cannot be changed after the Client VPN endpoint has been created. The CIDR block should be /22 or greater.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ConnectionLogOptions": {
      "description": "Information about the client connection logging options.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Description": {
      "description": "A brief description of the Client VPN endpoint.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DnsServers": {
      "description": "Information about the DNS servers to be used for DNS resolution. A Client VPN endpoint can have up to two DNS servers. If no DNS server is specified, the DNS address of the VPC that is to be associated with Client VPN endpoint is used as the DNS server.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ServerCertificateArn": {
      "description": "The ARN of the server certificate. For more information, see the AWS Certificate Manager User Guide.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TagSpecifications": {
      "description": "The tags to apply to the Client VPN endpoint during creation.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "TransportProtocol": {
      "description": "The transport protocol to be used by the VPN session.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-clientvpnendpoint.html",
  "properties": [
    "AuthenticationOptions",
    "ClientCidrBlock",
    "ConnectionLogOptions",
    "Description",
    "DnsServers",
    "ServerCertificateArn",
    "TagSpecifications",
    "TransportProtocol"
  ]
},
"AWS::EC2::ClientVpnRoute": {
  "full_properties": {
    "ClientVpnEndpointId": {
      "description": "The ID of the Client VPN endpoint to which to add the route.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "A brief description of the route.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DestinationCidrBlock": {
      "description": "The IPv4 address range, in CIDR notation, of the route destination. For example:",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TargetVpcSubnetId": {
      "description": "The ID of the subnet through which you want to route traffic. The specified subnet must be an existing target network of the Client VPN endpoint.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-clientvpnroute.html",
  "properties": [
    "ClientVpnEndpointId",
    "Description",
    "DestinationCidrBlock",
    "TargetVpcSubnetId"
  ]
},
"AWS::EC2::ClientVpnTargetNetworkAssociation": {
  "full_properties": {
    "ClientVpnEndpointId": {
      "description": "The ID of the Client VPN endpoint.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetId": {
      "description": "The ID of the subnet to associate with the Client VPN endpoint.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-clientvpntargetnetworkassociation.html",
  "properties": [
    "ClientVpnEndpointId",
    "SubnetId"
  ]
},
"AWS::EC2::CustomerGateway": {
  "full_properties": {
    "BgpAsn": {
      "description": "For devices that support BGP, the customer gateway's BGP ASN.",
      "required": true,
      "type": "Number",
      "update_causes": "replacement"
    },
    "IpAddress": {
      "description": "The Internet-routable IP address for the customer gateway's outside interface. The address must be static.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "One or more tags for the customer gateway.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Type": {
      "description": "The type of VPN connection that this customer gateway supports (ipsec.1).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-customer-gateway.html",
  "properties": [
    "BgpAsn",
    "IpAddress",
    "Tags",
    "Type"
  ]
},
"AWS::EC2::DHCPOptions": {
  "full_properties": {
    "DomainName": {
      "description": "This value is used to complete unqualified DNS hostnames. If you're using AmazonProvidedDNS in us-east-1, specify ec2.internal. If you're using AmazonProvidedDNS in another Region, specify region.compute.internal (for example, ap-northeast-1.compute.internal). Otherwise, specify a domain name (for example, MyCompany.com).",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DomainNameServers": {
      "description": "The IPv4 addresses of up to four domain name servers, or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. If specifying more than one domain name server, specify the IP addresses in a single parameter, separated by commas. To have your instance to receive a custom DNS hostname as specified in DomainName, you must set this to a custom DNS server.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "NetbiosNameServers": {
      "description": "The IPv4 addresses of up to four NetBIOS name servers.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "NetbiosNodeType": {
      "description": "The NetBIOS node type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast are not currently supported).",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "NtpServers": {
      "description": "The IPv4 addresses of up to four Network Time Protocol (NTP) servers.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Any tags assigned to the DHCP options set.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-dhcp-options.html",
  "properties": [
    "DomainName",
    "DomainNameServers",
    "NetbiosNameServers",
    "NetbiosNodeType",
    "NtpServers",
    "Tags"
  ]
},
"AWS::EC2::EC2Fleet": {
  "full_properties": {
    "ExcessCapacityTerminationPolicy": {
      "description": "Indicates whether running instances should be terminated if the total target capacity of the EC2 Fleet is decreased below the current size of the EC2 Fleet.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "LaunchTemplateConfigs": {
      "description": "The configuration for the EC2 Fleet.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    },
    "OnDemandOptions": {
      "description": "Describes the configuration of On-Demand Instances in an EC2 Fleet.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "ReplaceUnhealthyInstances": {
      "description": "Indicates whether EC2 Fleet should replace unhealthy instances.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "SpotOptions": {
      "description": "Describes the configuration of Spot Instances in an EC2 Fleet.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "TagSpecifications": {
      "description": "The key-value pair for tagging the EC2 Fleet request on creation. The value for ResourceType must be fleet, otherwise the fleet request fails. To tag instances at launch, specify the tags in the launch template. For information about tagging after launch, see Tagging Your Resources.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "TargetCapacitySpecification": {
      "description": "The number of units to request.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TerminateInstancesWithExpiration": {
      "description": "Indicates whether running instances should be terminated when the EC2 Fleet expires.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "Type": {
      "description": "The type of the request. By default, the EC2 Fleet places an asynchronous request for your desired capacity, and maintains it by replenishing interrupted Spot Instances (maintain). A value of instant places a synchronous one-time request, and returns errors for any instances that could not be launched. A value of request places an asynchronous one-time request without maintaining capacity or submitting requests in alternative capacity pools if capacity is unavailable. For more information, see EC2 Fleet Request Types in the Amazon Elastic Compute Cloud User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "ValidFrom": {
      "description": "The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). The default is to start fulfilling the request immediately.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ValidUntil": {
      "description": "The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). At this point, no new EC2 Fleet requests are placed or able to fulfill the request. If no value is specified, the request remains until you cancel it.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-ec2fleet.html",
  "properties": [
    "ExcessCapacityTerminationPolicy",
    "LaunchTemplateConfigs",
    "OnDemandOptions",
    "ReplaceUnhealthyInstances",
    "SpotOptions",
    "TagSpecifications",
    "TargetCapacitySpecification",
    "TerminateInstancesWithExpiration",
    "Type",
    "ValidFrom",
    "ValidUntil"
  ]
},
"AWS::EC2::EIP": {
  "full_properties": {
    "Domain": {
      "description": "Set to vpc to allocate the address for use with instances in a VPC.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceId": {
      "description": "The ID of the instance.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PublicIpv4Pool": {
      "description": "The ID of an address pool that you own. Use this parameter to let Amazon EC2 select an address from the address pool.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-ec2-eip.html",
  "properties": [
    "Domain",
    "InstanceId",
    "PublicIpv4Pool"
  ]
},
"AWS::EC2::EIPAssociation": {
  "full_properties": {
    "AllocationId": {
      "description": "[EC2-VPC] The allocation ID. This is required for EC2-VPC.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "EIP": {
      "description": "The Elastic IP address to associate with the instance. This is required for EC2-Classic.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "InstanceId": {
      "description": "The ID of the instance. This is required for EC2-Classic. For EC2-VPC, you can specify either the instance ID or the network interface ID, but not both. The operation fails if you specify an instance ID unless exactly one network interface is attached.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "NetworkInterfaceId": {
      "description": "[EC2-VPC] The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "PrivateIpAddress": {
      "description": "[EC2-VPC] The primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-ec2-eip-association.html",
  "properties": [
    "AllocationId",
    "EIP",
    "InstanceId",
    "NetworkInterfaceId",
    "PrivateIpAddress"
  ]
},
"AWS::EC2::EgressOnlyInternetGateway": {
  "full_properties": {
    "VpcId": {
      "description": "The ID of the VPC for which to create the egress-only internet gateway.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-egressonlyinternetgateway.html",
  "properties": [
    "VpcId"
  ]
},
"AWS::EC2::FlowLog": {
  "full_properties": {
    "DeliverLogsPermissionArn": {
      "description": "The ARN for the IAM role that permits Amazon EC2 to publish flow logs to a CloudWatch Logs log group in your account.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "LogDestination": {
      "description": "Specifies the destination to which the flow log data is to be published. Flow log data can be published to a CloudWatch Logs log group or an Amazon S3 bucket. The value specified for this parameter depends on the value specified for LogDestinationType.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "LogDestinationType": {
      "description": "Specifies the type of destination to which the flow log data is to be published. Flow log data can be published to CloudWatch Logs or Amazon S3. To publish flow log data to CloudWatch Logs, specify cloud-watch-logs. To publish flow log data to Amazon S3, specify s3.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "LogGroupName": {
      "description": "The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "ResourceId": {
      "description": "The ID of the subnet, network interface, or VPC for which you want to create a flow log.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ResourceType": {
      "description": "The type of resource for which to create the flow log. For example, if you specified a VPC ID for the ResourceId property, specify VPC for this property.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TrafficType": {
      "description": "The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-flowlog.html",
  "properties": [
    "DeliverLogsPermissionArn",
    "LogDestination",
    "LogDestinationType",
    "LogGroupName",
    "ResourceId",
    "ResourceType",
    "TrafficType"
  ]
},
"AWS::EC2::Host": {
  "full_properties": {
    "AutoPlacement": {
      "description": "Indicates whether the host accepts any untargeted instance launches that match its instance type configuration, or if it only accepts Host tenancy instance launches that specify its unique host ID. For more information, see Understanding Instance Placement and Host Affinity in the Amazon EC2 User Guide for Linux Instances.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AvailabilityZone": {
      "description": "The Availability Zone in which to allocate the Dedicated Host.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "HostRecovery": {
      "description": "Indicates whether to enable or disable host recovery for the Dedicated Host. Host recovery is disabled by default. For more information, see  Host Recovery in the Amazon Elastic Compute Cloud User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InstanceType": {
      "description": "Specifies the instance type for which to configure your Dedicated Hosts. When you specify the instance type, that is the only instance type that you can launch onto that host.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-host.html",
  "properties": [
    "AutoPlacement",
    "AvailabilityZone",
    "HostRecovery",
    "InstanceType"
  ]
},
"AWS::EC2::Instance": {
  "full_properties": {
    "AdditionalInfo": {
      "description": "Reserved.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "Affinity": {
      "description": "Indicates whether the instance is associated with a dedicated host. If you want the instance to always restart on the same host on which it was launched, specify host. If you want the instance to restart on any available host, but try to launch onto the last host it ran on (on a best-effort basis), specify default.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "AvailabilityZone": {
      "description": "The Availability Zone of the instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "BlockDeviceMappings": {
      "description": "The block device mapping entries that defines the block devices to attach to the instance at launch.",
      "required": false,
      "type": "Array",
      "update_causes": "unknown"
    },
    "CreditSpecification": {
      "description": "The credit option for CPU usage of the T2 or T3 instance. Valid values are standard and unlimited. To change this attribute after launch, use ModifyInstanceCreditSpecification. For more information, see Burstable Performance Instances in the Amazon Elastic Compute Cloud User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DisableApiTermination": {
      "description": "If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can. To change this attribute after launch, use ModifyInstanceAttribute. Alternatively, if you set InstanceInitiatedShutdownBehavior to terminate, you can terminate the instance by running the shutdown command from the instance.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "EbsOptimized": {
      "description": "Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.",
      "required": false,
      "type": "Boolean",
      "update_causes": "unknown"
    },
    "ElasticGpuSpecifications": {
      "description": "An elastic GPU to associate with the instance. An Elastic GPU is a GPU resource that you can attach to your Windows instance to accelerate the graphics performance of your applications. For more information, see  Amazon EC2 Elastic GPUs in the Amazon Elastic Compute Cloud User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "ElasticInferenceAccelerators": {
      "description": "An elastic inference accelerator to associate with the instance. Elastic inference accelerators are a resource you can attach to your Amazon EC2 instances to accelerate your Deep Learning (DL) inference workloads.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "HostId": {
      "description": "If you specify host for the Affinity property, the ID of a dedicated host that the instance is associated with. If you don't specify an ID, Amazon EC2 launches the instance onto any available, compatible dedicated host in your account. This type of launch is called an untargeted launch. Note that for untargeted launches, you must have a compatible, dedicated host available to successfully launch instances.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "IamInstanceProfile": {
      "description": "The IAM instance profile.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ImageId": {
      "description": "The ID of the AMI. An AMI ID is required to launch an instance and must be specified here or in a launch template.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceInitiatedShutdownBehavior": {
      "description": "Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InstanceType": {
      "description": "The instance type. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "unknown"
    },
    "Ipv6AddressCount": {
      "description": "[EC2-VPC] The number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "Ipv6Addresses": {
      "description": "[EC2-VPC] The IPv6 addresses from the range of the subnet to associate with the primary network interface. You cannot specify this option and the option to assign a number of IPv6 addresses in the same request. You cannot specify this option if you've specified a minimum number of instances to launch.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "KernelId": {
      "description": "The ID of the kernel.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "KeyName": {
      "description": "The name of the key pair. You can create a key pair using CreateKeyPair or ImportKeyPair.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LaunchTemplate": {
      "description": "The launch template to use to launch the instances. Any parameters that you specify in the AWS CloudFormation template override the same parameters in the launch template. You can specify either the name or ID of a launch template, but not both.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "LicenseSpecifications": {
      "description": "The license configurations.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Monitoring": {
      "description": "Specifies whether detailed monitoring is enabled for the instance.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "NetworkInterfaces": {
      "description": "The network interfaces to associate with the instance.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "PlacementGroupName": {
      "description": "The name of an existing placement group that you want to launch the instance into (for cluster instances).",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PrivateIpAddress": {
      "description": "[EC2-VPC] The primary IPv4 address. You must specify a value from the IPv4 address range of the subnet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RamdiskId": {
      "description": "The ID of the RAM disk to select. Some kernels require additional drivers at launch. Check the kernel requirements for information about whether you need to specify a RAM disk. To find kernel requirements, go to the AWS Resource Center and search for the kernel ID.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "SecurityGroupIds": {
      "description": "The IDs of the security groups. You can create a security group using CreateSecurityGroup.",
      "required": false,
      "type": "Array",
      "update_causes": "unknown"
    },
    "SecurityGroups": {
      "description": "[EC2-Classic, default VPC] The names of the security groups. For a nondefault VPC, you must use security group IDs instead.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SourceDestCheck": {
      "description": "Specifies whether to enable an instance launched in a VPC to perform NAT. This controls whether source/destination checking is enabled on the instance. A value of true means that checking is enabled, and false means that checking is disabled. The value must be false for the instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "SsmAssociations": {
      "description": "The SSM document and parameter values in AWS Systems Manager to associate with this instance. To use this property, you must specify an IAM instance profile role for the instance. For more information, see  Create an Instance Profile for Systems Manager in the AWS Systems Manager User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SubnetId": {
      "description": "[EC2-VPC] The ID of the subnet to launch the instance into.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The tags to apply to the resources during launch. You can only tag instances and volumes on launch. The specified tags are applied to all instances or volumes that are created during launch. To tag a resource after it has been created, see CreateTags.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tenancy": {
      "description": "The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "UserData": {
      "description": "The user data to make available to the instance. For more information, see Running Commands on Your Linux Instance at Launch (Linux) and Adding User Data (Windows). If you are using a command line tool, base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide base64-encoded text. User data is limited to 16 KB.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "Volumes": {
      "description": "The volumes to attach to the instance.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-ec2-instance.html",
  "properties": [
    "AdditionalInfo",
    "Affinity",
    "AvailabilityZone",
    "BlockDeviceMappings",
    "CreditSpecification",
    "DisableApiTermination",
    "EbsOptimized",
    "ElasticGpuSpecifications",
    "ElasticInferenceAccelerators",
    "HostId",
    "IamInstanceProfile",
    "ImageId",
    "InstanceInitiatedShutdownBehavior",
    "InstanceType",
    "Ipv6AddressCount",
    "Ipv6Addresses",
    "KernelId",
    "KeyName",
    "LaunchTemplate",
    "LicenseSpecifications",
    "Monitoring",
    "NetworkInterfaces",
    "PlacementGroupName",
    "PrivateIpAddress",
    "RamdiskId",
    "SecurityGroupIds",
    "SecurityGroups",
    "SourceDestCheck",
    "SsmAssociations",
    "SubnetId",
    "Tags",
    "Tenancy",
    "UserData",
    "Volumes"
  ]
},
"AWS::EC2::InternetGateway": {
  "full_properties": {
    "Tags": {
      "description": "Any tags to assign to the internet gateway.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-internetgateway.html",
  "properties": [
    "Tags"
  ]
},
"AWS::EC2::LaunchTemplate": {
  "full_properties": {
    "LaunchTemplateData": {
      "description": "The information for the launch template.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "LaunchTemplateName": {
      "description": "A name for the launch template.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-launchtemplate.html",
  "properties": [
    "LaunchTemplateData",
    "LaunchTemplateName"
  ]
},
"AWS::EC2::NatGateway": {
  "full_properties": {
    "AllocationId": {
      "description": "The allocation ID of an Elastic IP address to associate with the NAT gateway. If the Elastic IP address is associated with another resource, you must first disassociate it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetId": {
      "description": "The public subnet in which to create the NAT gateway.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The tags (key–value pairs) to associate with this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-natgateway.html",
  "properties": [
    "AllocationId",
    "SubnetId",
    "Tags"
  ]
},
"AWS::EC2::NetworkAcl": {
  "full_properties": {
    "Tags": {
      "description": "An arbitrary set of tags (key–value pairs) for this ACL.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcId": {
      "description": "The ID of the VPC for the network ACL.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-network-acl.html",
  "properties": [
    "Tags",
    "VpcId"
  ]
},
"AWS::EC2::NetworkAclEntry": {
  "full_properties": {
    "CidrBlock": {
      "description": "The IPv4 CIDR range to allow or deny, in CIDR notation (for example, 172.16.0.0/24).  Requirement is conditional: You must specify the CidrBlock or Ipv6CidrBlock property.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Egress": {
      "description": "Whether this rule applies to egress traffic from the subnet (true) or ingress traffic to the subnet (false). By default, AWS CloudFormation specifies false.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "Icmp": {
      "description": "The Internet Control Message Protocol (ICMP) code and type. Requirement is conditional:  Required if specifying 1 (ICMP) for the protocol parameter.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Ipv6CidrBlock": {
      "description": "The IPv6 network range to allow or deny, in CIDR notation. Requirement is conditional: You must specify the CidrBlock or Ipv6CidrBlock property.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NetworkAclId": {
      "description": "The ID of the ACL for the entry.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "PortRange": {
      "description": "The range of port numbers for the UDP/TCP protocol. Conditional required if specifying 6 (TCP) or 17 (UDP) for the protocol parameter.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Protocol": {
      "description": "The IP protocol that the rule applies to. You must specify -1 or a protocol number. You can specify -1 for all protocols.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "RuleAction": {
      "description": "Whether to allow or deny traffic that matches the rule; valid values are \"allow\" or \"deny\".",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RuleNumber": {
      "description": "Rule number to assign to the entry, such as 100. ACL entries are processed in ascending order by rule number. Entries can't use the same rule number unless one is an egress rule and the other is an ingress rule.",
      "required": true,
      "type": "Number",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-network-acl-entry.html",
  "properties": [
    "CidrBlock",
    "Egress",
    "Icmp",
    "Ipv6CidrBlock",
    "NetworkAclId",
    "PortRange",
    "Protocol",
    "RuleAction",
    "RuleNumber"
  ]
},
"AWS::EC2::NetworkInterface": {
  "full_properties": {
    "Description": {
      "description": "A description for the network interface.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "GroupSet": {
      "description": "A list of security group IDs associated with this network interface.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "InterfaceType": {
      "description": "Indicates the type of network interface. To create an Elastic Fabric Adapter (EFA), specify efa. For more information, see Elastic Fabric Adapter in the Amazon Elastic Compute Cloud User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Ipv6AddressCount": {
      "description": "The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range.  To specify specific IPv6 addresses, use the Ipv6Addresses property and don't specify this property.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Ipv6Addresses": {
      "description": "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet to associate with the network interface. If you're specifying a number of IPv6 addresses, use the Ipv6AddressCount property and don't specify this property.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "PrivateIpAddress": {
      "description": "Assigns a single private IP address to the network interface, which is used as the primary private IP address. If you want to specify multiple private IP address, use the PrivateIpAddresses property.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PrivateIpAddresses": {
      "description": "Assigns a list of private IP addresses to the network interface. You can specify a primary private IP address by setting the value of the Primary property to true in the PrivateIpAddressSpecification property. If you want EC2 to automatically assign private IP addresses, use the SecondaryPrivateIpAddressCount property and do not specify this property.",
      "required": false,
      "type": "Array",
      "update_causes": "unknown"
    },
    "SecondaryPrivateIpAddressCount": {
      "description": "The number of secondary private IPv4 addresses to assign to a network interface. When you specify a number of secondary IPv4 addresses, Amazon EC2 selects these IP addresses within the subnet's IPv4 CIDR range. You can't specify this option and specify more than one private IP address using privateIpAddresses.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SourceDestCheck": {
      "description": "Indicates whether traffic to or from the instance is validated.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "SubnetId": {
      "description": "The ID of the subnet to associate with the network interface.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An arbitrary set of tags (key–value pairs) for this network interface.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-network-interface.html",
  "properties": [
    "Description",
    "GroupSet",
    "InterfaceType",
    "Ipv6AddressCount",
    "Ipv6Addresses",
    "PrivateIpAddress",
    "PrivateIpAddresses",
    "SecondaryPrivateIpAddressCount",
    "SourceDestCheck",
    "SubnetId",
    "Tags"
  ]
},
"AWS::EC2::NetworkInterfaceAttachment": {
  "full_properties": {
    "DeleteOnTermination": {
      "description": "Whether to delete the network interface when the instance terminates. By default, this value is set to true.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "DeviceIndex": {
      "description": "The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "InstanceId": {
      "description": "The ID of the instance to which you will attach the ENI.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "NetworkInterfaceId": {
      "description": "The ID of the ENI that you want to attach.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-network-interface-attachment.html",
  "properties": [
    "DeleteOnTermination",
    "DeviceIndex",
    "InstanceId",
    "NetworkInterfaceId"
  ]
},
"AWS::EC2::NetworkInterfacePermission": {
  "full_properties": {
    "AwsAccountId": {
      "description": "The AWS account ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "NetworkInterfaceId": {
      "description": "The ID of the network interface.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Permission": {
      "description": "The type of permission to grant: INSTANCE-ATTACH or EIP-ASSOCIATE.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-networkinterfacepermission.html",
  "properties": [
    "AwsAccountId",
    "NetworkInterfaceId",
    "Permission"
  ]
},
"AWS::EC2::PlacementGroup": {
  "full_properties": {
    "Strategy": {
      "description": "The placement strategy.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-placementgroup.html",
  "properties": [
    "Strategy"
  ]
},
"AWS::EC2::Route": {
  "full_properties": {
    "DestinationCidrBlock": {
      "description": "The IPv4 CIDR block used for the destination match.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DestinationIpv6CidrBlock": {
      "description": "The IPv6 CIDR block used for the destination match.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EgressOnlyInternetGatewayId": {
      "description": "The ID of the egress-only internet gateway.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "GatewayId": {
      "description": "The ID of a gateway attached to your VPC.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InstanceId": {
      "description": "The ID of a NAT instance in your VPC.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NatGatewayId": {
      "description": "The ID of a NAT gateway.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NetworkInterfaceId": {
      "description": "The ID of the network interface.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RouteTableId": {
      "description": "The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TransitGatewayId": {
      "description": "The ID of a transit gateway.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "VpcPeeringConnectionId": {
      "description": "The ID of a VPC peering connection.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-route.html",
  "properties": [
    "DestinationCidrBlock",
    "DestinationIpv6CidrBlock",
    "EgressOnlyInternetGatewayId",
    "GatewayId",
    "InstanceId",
    "NatGatewayId",
    "NetworkInterfaceId",
    "RouteTableId",
    "TransitGatewayId",
    "VpcPeeringConnectionId"
  ]
},
"AWS::EC2::RouteTable": {
  "full_properties": {
    "Tags": {
      "description": "Any tags assigned to the route table.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcId": {
      "description": "The ID of the VPC.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-route-table.html",
  "properties": [
    "Tags",
    "VpcId"
  ]
},
"AWS::EC2::SecurityGroup": {
  "full_properties": {
    "GroupDescription": {
      "description": "A description for the security group. This is informational only.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "GroupName": {
      "description": "The name of the security group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SecurityGroupEgress": {
      "description": "[VPC only] The outbound rules associated with the security group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SecurityGroupIngress": {
      "description": "The inbound rules associated with the security group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Any tags assigned to the security group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcId": {
      "description": "[VPC only] The ID of the VPC for the security group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-properties-ec2-security-group.html",
  "properties": [
    "GroupDescription",
    "GroupName",
    "SecurityGroupEgress",
    "SecurityGroupIngress",
    "Tags",
    "VpcId"
  ]
},
"AWS::EC2::SecurityGroupEgress": {
  "full_properties": {
    "CidrIp": {
      "description": "The IPv4 ranges.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "CidrIpv6": {
      "description": "The IPv6 ranges.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The description of an egress (outbound) security group rule.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DestinationPrefixListId": {
      "description": "[EC2-VPC only] The prefix list IDs for an AWS service. This is the AWS service that you want to access through a VPC endpoint from instances associated with the security group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DestinationSecurityGroupId": {
      "description": "The ID of the security group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "FromPort": {
      "description": "The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 type number. A value of -1 indicates all ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all codes.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "GroupId": {
      "description": "The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "IpProtocol": {
      "description": "The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ToPort": {
      "description": "The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. A value of -1 indicates all ICMP/ICMPv6 codes. If you specify all ICMP/ICMPv6 types, you must specify all codes.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-security-group-egress.html",
  "properties": [
    "CidrIp",
    "CidrIpv6",
    "Description",
    "DestinationPrefixListId",
    "DestinationSecurityGroupId",
    "FromPort",
    "GroupId",
    "IpProtocol",
    "ToPort"
  ]
},
"AWS::EC2::SecurityGroupIngress": {
  "full_properties": {
    "CidrIp": {
      "description": "The IPv4 ranges.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "CidrIpv6": {
      "description": "[VPC only] The IPv6 ranges.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "Updates the description of an ingress (inbound) security group rule. You can replace an existing description, or add a description to a rule that did not have one previously.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "FromPort": {
      "description": "The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 type number. A value of -1 indicates all ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all codes.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "GroupId": {
      "description": "The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "GroupName": {
      "description": "The name of the security group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "IpProtocol": {
      "description": "The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourcePrefixListId": {
      "description": "[EC2-VPC only] The prefix list IDs for an AWS service. This is the AWS service that you want to access through a VPC endpoint from instances associated with the security group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceSecurityGroupId": {
      "description": "The ID of the security group. You must specify either the security group ID or the security group name. For security groups in a nondefault VPC, you must specify the security group ID.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceSecurityGroupName": {
      "description": "[EC2-Classic, default VPC] The name of the source security group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceSecurityGroupOwnerId": {
      "description": "[nondefault VPC] The AWS account ID for the source security group, if the source security group is in a different account. You can't specify this parameter in combination with the following parameters: the CIDR IP address range, the IP protocol, the start of the port range, and the end of the port range. Creates rules that grant full ICMP, UDP, and TCP access.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ToPort": {
      "description": "The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. A value of -1 indicates all ICMP/ICMPv6 codes for the specified ICMP type. If you specify all ICMP/ICMPv6 types, you must specify all codes.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    }
  },
  "path": "aws-properties-ec2-security-group-ingress.html",
  "properties": [
    "CidrIp",
    "CidrIpv6",
    "Description",
    "FromPort",
    "GroupId",
    "GroupName",
    "IpProtocol",
    "SourcePrefixListId",
    "SourceSecurityGroupId",
    "SourceSecurityGroupName",
    "SourceSecurityGroupOwnerId",
    "ToPort"
  ]
},
"AWS::EC2::SpotFleet": {
  "full_properties": {
    "SpotFleetRequestConfigData": {
      "description": "Describes the configuration of a Spot Fleet request.",
      "required": true,
      "type": "Unknown",
      "update_causes": "unknown"
    }
  },
  "path": "aws-resource-ec2-spotfleet.html",
  "properties": [
    "SpotFleetRequestConfigData"
  ]
},
"AWS::EC2::Subnet": {
  "full_properties": {
    "AssignIpv6AddressOnCreation": {
      "description": "Indicates whether a network interface created in this subnet receives an IPv6 address. The default value is false.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AvailabilityZone": {
      "description": "The Availability Zone of the subnet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "CidrBlock": {
      "description": "The IPv4 CIDR block assigned to the subnet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Ipv6CidrBlock": {
      "description": "The IPv6 CIDR block.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MapPublicIpOnLaunch": {
      "description": "Indicates whether instances launched in this subnet receive a public IPv4 address.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Any tags assigned to the subnet.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcId": {
      "description": "The ID of the VPC the subnet is in.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-subnet.html",
  "properties": [
    "AssignIpv6AddressOnCreation",
    "AvailabilityZone",
    "CidrBlock",
    "Ipv6CidrBlock",
    "MapPublicIpOnLaunch",
    "Tags",
    "VpcId"
  ]
},
"AWS::EC2::SubnetCidrBlock": {
  "full_properties": {
    "Ipv6CidrBlock": {
      "description": "The IPv6 network range for the subnet, in CIDR notation. The subnet size must use a /64 prefix length.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetId": {
      "description": "The ID of the subnet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-subnetcidrblock.html",
  "properties": [
    "Ipv6CidrBlock",
    "SubnetId"
  ]
},
"AWS::EC2::SubnetNetworkAclAssociation": {
  "full_properties": {
    "NetworkAclId": {
      "description": "The ID of the network ACL.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetId": {
      "description": "The ID of the subnet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-subnet-network-acl-assoc.html",
  "properties": [
    "NetworkAclId",
    "SubnetId"
  ]
},
"AWS::EC2::SubnetRouteTableAssociation": {
  "full_properties": {
    "RouteTableId": {
      "description": "The ID of the route table.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "SubnetId": {
      "description": "The ID of the subnet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-subnet-route-table-assoc.html",
  "properties": [
    "RouteTableId",
    "SubnetId"
  ]
},
"AWS::EC2::TransitGateway": {
  "full_properties": {
    "AmazonSideAsn": {
      "description": "A private Autonomous System Number (ASN) for the Amazon side of a BGP session. The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to 4294967294 for 32-bit ASNs.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "AutoAcceptSharedAttachments": {
      "description": "Indicates whether attachment requests are automatically accepted.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DefaultRouteTableAssociation": {
      "description": "Indicates whether resource attachments are automatically associated with the default association route table.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DefaultRouteTablePropagation": {
      "description": "Indicates whether resource attachments automatically propagate routes to the default propagation route table.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The description of the transit gateway.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DnsSupport": {
      "description": "Indicates whether DNS support is enabled.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The tags for the transit gateway.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "VpnEcmpSupport": {
      "description": "Indicates whether Equal Cost Multipath Protocol support is enabled.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-transitgateway.html",
  "properties": [
    "AmazonSideAsn",
    "AutoAcceptSharedAttachments",
    "DefaultRouteTableAssociation",
    "DefaultRouteTablePropagation",
    "Description",
    "DnsSupport",
    "Tags",
    "VpnEcmpSupport"
  ]
},
"AWS::EC2::TransitGatewayAttachment": {
  "full_properties": {
    "SubnetIds": {
      "description": "The IDs of one or more subnets. You can specify only one subnet per Availability Zone.  You must specify at least one subnet, but we recommend that you specify two subnets for better availability. The transit gateway uses one IP address from each specified subnet.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The tags for the attachment.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "TransitGatewayId": {
      "description": "The ID of the transit gateway.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "VpcId": {
      "description": "The ID of the VPC.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-transitgatewayattachment.html",
  "properties": [
    "SubnetIds",
    "Tags",
    "TransitGatewayId",
    "VpcId"
  ]
},
"AWS::EC2::TransitGatewayRoute": {
  "full_properties": {
    "Blackhole": {
      "description": "Indicates whether to drop traffic that matches this route.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "DestinationCidrBlock": {
      "description": "The CIDR block used for destination matches.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "TransitGatewayAttachmentId": {
      "description": "The ID of the attachment.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "TransitGatewayRouteTableId": {
      "description": "The ID of the transit gateway route table.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-transitgatewayroute.html",
  "properties": [
    "Blackhole",
    "DestinationCidrBlock",
    "TransitGatewayAttachmentId",
    "TransitGatewayRouteTableId"
  ]
},
"AWS::EC2::TransitGatewayRouteTable": {
  "full_properties": {
    "Tags": {
      "description": "Any tags assigned to the route table.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "TransitGatewayId": {
      "description": "The ID of the transit gateway.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-transitgatewayroutetable.html",
  "properties": [
    "Tags",
    "TransitGatewayId"
  ]
},
"AWS::EC2::TransitGatewayRouteTableAssociation": {
  "full_properties": {
    "TransitGatewayAttachmentId": {
      "description": "The ID of the attachment.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TransitGatewayRouteTableId": {
      "description": "The ID of the route table for the transit gateway.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-transitgatewayroutetableassociation.html",
  "properties": [
    "TransitGatewayAttachmentId",
    "TransitGatewayRouteTableId"
  ]
},
"AWS::EC2::TransitGatewayRouteTablePropagation": {
  "full_properties": {
    "TransitGatewayAttachmentId": {
      "description": "The ID of the attachment.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TransitGatewayRouteTableId": {
      "description": "The ID of the propagation route table.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-transitgatewayroutetablepropagation.html",
  "properties": [
    "TransitGatewayAttachmentId",
    "TransitGatewayRouteTableId"
  ]
},
"AWS::EC2::VPC": {
  "full_properties": {
    "CidrBlock": {
      "description": "The primary IPv4 CIDR block for the VPC.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EnableDnsHostnames": {
      "description": "Indicates whether the instances launched in the VPC get DNS hostnames. If enabled, instances in the VPC get DNS hostnames; otherwise, they do not.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "EnableDnsSupport": {
      "description": "Indicates whether the DNS resolution is supported for the VPC. If enabled, queries to the Amazon provided DNS server at the 169.254.169.253 IP address, or the reserved IP address at the base of the VPC network range \"plus two\" succeed. If disabled, the Amazon provided DNS service in the VPC that resolves public DNS hostnames to IP addresses is not enabled.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "InstanceTenancy": {
      "description": "The allowed tenancy of instances launched into the VPC.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags for the VPC.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-vpc.html",
  "properties": [
    "CidrBlock",
    "EnableDnsHostnames",
    "EnableDnsSupport",
    "InstanceTenancy",
    "Tags"
  ]
},
"AWS::EC2::VPCCidrBlock": {
  "full_properties": {
    "AmazonProvidedIpv6CidrBlock": {
      "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "CidrBlock": {
      "description": "An IPv4 CIDR block to associate with the VPC.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "VpcId": {
      "description": "The ID of the VPC.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-vpccidrblock.html",
  "properties": [
    "AmazonProvidedIpv6CidrBlock",
    "CidrBlock",
    "VpcId"
  ]
},
"AWS::EC2::VPCDHCPOptionsAssociation": {
  "full_properties": {
    "DhcpOptionsId": {
      "description": "The ID of the DHCP options set, or default to associate no DHCP options with the VPC.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "VpcId": {
      "description": "The ID of the VPC.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-vpc-dhcp-options-assoc.html",
  "properties": [
    "DhcpOptionsId",
    "VpcId"
  ]
},
"AWS::EC2::VPCEndpoint": {
  "full_properties": {
    "PolicyDocument": {
      "description": "A policy to attach to the endpoint that controls access to the service. The policy must be in valid JSON format. If this parameter is not specified, we attach a default policy that allows full access to the service.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "PrivateDnsEnabled": {
      "description": "(Interface endpoint) Indicate whether to associate a private hosted zone with the specified VPC. The private hosted zone contains a record set for the default public DNS name for the service for the Region (for example, kinesis.us-east-1.amazonaws.com) which resolves to the private IP addresses of the endpoint network interfaces in the VPC. This enables you to make requests to the default public DNS name for the service instead of the public DNS names that are automatically generated by the VPC endpoint service.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "RouteTableIds": {
      "description": "(Gateway endpoint) One or more route table IDs.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SecurityGroupIds": {
      "description": "(Interface endpoint) The ID of one or more security groups to associate with the endpoint network interface.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ServiceName": {
      "description": "The service name. To get a list of available services, use the DescribeVpcEndpointServices request, or get the name from the service provider.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetIds": {
      "description": "(Interface endpoint) The ID of one or more subnets in which to create an endpoint network interface.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcEndpointType": {
      "description": "The type of endpoint.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "VpcId": {
      "description": "The ID of the VPC in which the endpoint will be used.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-vpcendpoint.html",
  "properties": [
    "PolicyDocument",
    "PrivateDnsEnabled",
    "RouteTableIds",
    "SecurityGroupIds",
    "ServiceName",
    "SubnetIds",
    "VpcEndpointType",
    "VpcId"
  ]
},
"AWS::EC2::VPCEndpointConnectionNotification": {
  "full_properties": {
    "ConnectionEvents": {
      "description": "One or more endpoint events for which to receive notifications. Valid values are Accept, Connect, Delete, and Reject.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "ConnectionNotificationArn": {
      "description": "The ARN of the SNS topic for the notifications.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ServiceId": {
      "description": "The ID of the endpoint service.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "VPCEndpointId": {
      "description": "The ID of the endpoint.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-vpcendpointconnectionnotification.html",
  "properties": [
    "ConnectionEvents",
    "ConnectionNotificationArn",
    "ServiceId",
    "VPCEndpointId"
  ]
},
"AWS::EC2::VPCEndpointService": {
  "full_properties": {
    "AcceptanceRequired": {
      "description": "Indicates whether requests from service consumers to create an endpoint to your service must be accepted.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "NetworkLoadBalancerArns": {
      "description": "The Amazon Resource Names (ARNs) of one or more Network Load Balancers for your service.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-vpcendpointservice.html",
  "properties": [
    "AcceptanceRequired",
    "NetworkLoadBalancerArns"
  ]
},
"AWS::EC2::VPCEndpointServicePermissions": {
  "full_properties": {
    "AllowedPrincipals": {
      "description": "The Amazon Resource Names (ARN) of one or more principals (IAM users, IAM roles, and AWS accounts). Permissions are granted to the principals in this list. To grant permissions to all principals, specify an asterisk (*). Permissions are revoked for principals not in this list. If the list is empty, then all permissions are revoked.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ServiceId": {
      "description": "The ID of the service.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-vpcendpointservicepermissions.html",
  "properties": [
    "AllowedPrincipals",
    "ServiceId"
  ]
},
"AWS::EC2::VPCGatewayAttachment": {
  "full_properties": {
    "InternetGatewayId": {
      "description": "The ID of the internet gateway.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "VpcId": {
      "description": "The ID of the VPC.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "VpnGatewayId": {
      "description": "The ID of the virtual private gateway.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-vpc-gateway-attachment.html",
  "properties": [
    "InternetGatewayId",
    "VpcId",
    "VpnGatewayId"
  ]
},
"AWS::EC2::VPCPeeringConnection": {
  "full_properties": {
    "PeerOwnerId": {
      "description": "The AWS account ID of the owner of the accepter VPC.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PeerRegion": {
      "description": "The Region code for the accepter VPC, if the accepter VPC is located in a Region other than the Region in which you make the request.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PeerRoleArn": {
      "description": "The Amazon Resource Name (ARN) of the VPC peer role for the peering connection in another AWS account.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PeerVpcId": {
      "description": "The ID of the VPC with which you are creating the VPC peering connection. You must specify this parameter in the request.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Any tags assigned to the resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcId": {
      "description": "The ID of the VPC.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-vpcpeeringconnection.html",
  "properties": [
    "PeerOwnerId",
    "PeerRegion",
    "PeerRoleArn",
    "PeerVpcId",
    "Tags",
    "VpcId"
  ]
},
"AWS::EC2::VPNConnection": {
  "full_properties": {
    "CustomerGatewayId": {
      "description": "The ID of the customer gateway at your end of the VPN connection.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "StaticRoutesOnly": {
      "description": "Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Any tags assigned to the VPN connection.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TransitGatewayId": {
      "description": "The ID of the transit gateway associated with the VPN connection.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Type": {
      "description": "The type of VPN connection.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "VpnGatewayId": {
      "description": "The ID of the virtual private gateway at the AWS side of the VPN connection.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "VpnTunnelOptionsSpecifications": {
      "description": "The tunnel options for a VPN connection.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-vpn-connection.html",
  "properties": [
    "CustomerGatewayId",
    "StaticRoutesOnly",
    "Tags",
    "TransitGatewayId",
    "Type",
    "VpnGatewayId",
    "VpnTunnelOptionsSpecifications"
  ]
},
"AWS::EC2::VPNConnectionRoute": {
  "full_properties": {
    "DestinationCidrBlock": {
      "description": "The CIDR block associated with the local subnet of the customer network.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "VpnConnectionId": {
      "description": "The ID of the VPN connection.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-vpn-connection-route.html",
  "properties": [
    "DestinationCidrBlock",
    "VpnConnectionId"
  ]
},
"AWS::EC2::VPNGateway": {
  "full_properties": {
    "AmazonSideAsn": {
      "description": "The private Autonomous System Number (ASN) for the Amazon side of a BGP session.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Any tags assigned to the virtual private gateway.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Type": {
      "description": "The type of VPN connection the virtual private gateway supports.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ec2-vpn-gateway.html",
  "properties": [
    "AmazonSideAsn",
    "Tags",
    "Type"
  ]
},
"AWS::EC2::VPNGatewayRoutePropagation": {
  "full_properties": {
    "RouteTableIds": {
      "description": "The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "VpnGatewayId": {
      "description": "The ID of the virtual private gateway that is attached to a VPC. The virtual private gateway must be attached to the same VPC that the routing tables are associated with.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ec2-vpn-gatewayrouteprop.html",
  "properties": [
    "RouteTableIds",
    "VpnGatewayId"
  ]
},
"AWS::EC2::Volume": {
  "full_properties": {
    "AutoEnableIO": {
      "description": "Indicates whether the volume is auto-enabled for I/O operations. By default, Amazon EBS disables I/O to the volume from attached EC2 instances when it determines  that a volume's data is potentially inconsistent. If the consistency of the volume is not a concern, and you prefer that the volume be made available immediately if it's  impaired, you can configure the volume to automatically enable I/O.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AvailabilityZone": {
      "description": "The Availability Zone in which to create the volume.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Encrypted": {
      "description": "Specifies whether the volume should be encrypted. The effect of setting the encryption state to true depends on the volume origin (new or from a snapshot), starting encryption state, ownership, and whether encryption by default is enabled. For more information, see Encryption by Default in the Amazon Elastic Compute Cloud User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Iops": {
      "description": "The number of I/O operations per second (IOPS) to provision for the volume, with a maximum ratio of 50 IOPS/GiB. Range is 100 to 64,000 IOPS for volumes in most Regions. Maximum IOPS of 64,000 is guaranteed only on Nitro-based instances. Other instance families guarantee performance up to 32,000 IOPS. For more information, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "KmsKeyId": {
      "description": "The identifier of the AWS Key Management Service (AWS KMS) customer master key (CMK) to use for Amazon EBS encryption. If this parameter is not specified, your AWS managed CMK for EBS is used. If KmsKeyId is specified, the encrypted state must be true.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Size": {
      "description": "The size of the volume, in GiBs.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "SnapshotId": {
      "description": "The snapshot from which to create the volume.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags to apply to the volume during creation.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VolumeType": {
      "description": "The volume type. This can be gp2 for General Purpose SSD, io1 for Provisioned IOPS SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or standard for Magnetic volumes.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-ec2-ebs-volume.html",
  "properties": [
    "AutoEnableIO",
    "AvailabilityZone",
    "Encrypted",
    "Iops",
    "KmsKeyId",
    "Size",
    "SnapshotId",
    "Tags",
    "VolumeType"
  ]
},
"AWS::EC2::VolumeAttachment": {
  "full_properties": {
    "Device": {
      "description": "The device name (for example, /dev/sdh or xvdh).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceId": {
      "description": "The ID of the instance to which the volume attaches. This value can be a reference to an AWS::EC2::Instance resource, or it can be the physical ID of an existing EC2 instance.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "VolumeId": {
      "description": "The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone. This value can be a reference to an AWS::EC2::Volume resource, or it can be the volume ID of an existing Amazon EBS volume.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-properties-ec2-ebs-volumeattachment.html",
  "properties": [
    "Device",
    "InstanceId",
    "VolumeId"
  ]
},
"AWS::ECR::Repository": {
  "full_properties": {
    "LifecyclePolicy": {
      "description": "Creates or updates a lifecycle policy. For information about lifecycle policy syntax, see Lifecycle Policy Template.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RepositoryName": {
      "description": "The name to use for the repository. The repository name may be specified on its own (such as nginx-web-app) or it can be prepended with a namespace to group the repository into a category (such as project-a/nginx-web-app). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the repository name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "RepositoryPolicyText": {
      "description": "The JSON repository policy text to apply to the repository. For more information, see Amazon ECR Repository Policy Examples in the Amazon Elastic Container Registry User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ecr-repository.html",
  "properties": [
    "LifecyclePolicy",
    "RepositoryName",
    "RepositoryPolicyText",
    "Tags"
  ]
},
"AWS::ECS::Cluster": {
  "full_properties": {
    "ClusterName": {
      "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, AWS CloudFormation generates a unique physical ID for the name.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ecs-cluster.html",
  "properties": [
    "ClusterName",
    "Tags"
  ]
},
"AWS::ECS::Service": {
  "full_properties": {
    "Cluster": {
      "description": "The short name or full Amazon Resource Name (ARN) of the cluster on which to run your service. If you do not specify a cluster, the default cluster is assumed.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DeploymentConfiguration": {
      "description": "Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DesiredCount": {
      "description": "The number of instantiations of the specified task definition to place and keep running on your cluster.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "EnableECSManagedTags": {
      "description": "Specifies whether to enable Amazon ECS managed tags for the tasks within the service. For more information, see Tagging Your Amazon ECS Resources in the Amazon Elastic Container Service Developer Guide.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "HealthCheckGracePeriodSeconds": {
      "description": "The period of time, in seconds, that the Amazon ECS service scheduler should ignore unhealthy Elastic Load Balancing target health checks after a task has first started. This is only valid if your service is configured to use a load balancer. If your service's tasks take a while to start and respond to Elastic Load Balancing health checks, you can specify a health check grace period of up to 2,147,483,647 seconds. During that time, the ECS service scheduler ignores health check status. This grace period can prevent the ECS service scheduler from marking tasks as unhealthy and stopping them before they have time to come up.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "LaunchType": {
      "description": "The launch type on which to run your service. For more information, see Amazon ECS Launch Types in the Amazon Elastic Container Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "LoadBalancers": {
      "description": "A list of load balancer objects to associate with the cluster. If you specify the Role property, LoadBalancers must be specified as well. For information about the number of load balancers that you can specify per service, see Service Load Balancing in the Amazon Elastic Container Service Developer Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "NetworkConfiguration": {
      "description": "The network configuration for the service. This parameter is required for task definitions that use the awsvpc network mode to receive their own elastic network interface, and it is not supported for other network modes. For more information, see Task Networking in the Amazon Elastic Container Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "PlacementConstraints": {
      "description": "An array of placement constraint objects to use for tasks in your service. You can specify a maximum of 10 constraints per task (this limit includes constraints in the task definition and those specified at runtime).",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "PlacementStrategies": {
      "description": "The placement strategy objects to use for tasks in your service. You can specify a maximum of five strategy rules per service. For more information, see Task Placement Strategies in the Amazon Elastic Container Service Developer Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "PlatformVersion": {
      "description": "The platform version that your tasks in the service are running on. A platform version is specified only for tasks using the Fargate launch type. If one isn't specified, the LATEST platform version is used by default. For more information, see AWS Fargate Platform Versions in the Amazon Elastic Container Service Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PropagateTags": {
      "description": "Specifies whether to propagate the tags from the task definition or the service to the tasks in the service. If no value is specified, the tags are not propagated. Tags can only be propagated to the tasks within the service during service creation. To add tags to a task after service creation, use the TagResource API action.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Role": {
      "description": "The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is only permitted if you are using a load balancer with your service and your task definition does not use the awsvpc network mode. If you specify the role parameter, you must also specify a load balancer object with the loadBalancers parameter.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SchedulingStrategy": {
      "description": "The scheduling strategy to use for the service. For more information, see Services.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ServiceName": {
      "description": "The name of your service. Up to 255 letters (uppercase and lowercase), numbers, and hyphens are allowed. Service names must be unique within a cluster, but you can have similarly named services in multiple clusters within a Region or across multiple Regions.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ServiceRegistries": {
      "description": "The details of the service discovery registries to assign to this service. For more information, see Service Discovery.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The metadata that you apply to the service to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define. When a service is deleted, the tags are deleted as well.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TaskDefinition": {
      "description": "The family and revision (family:revision) or full ARN of the task definition to run in your service. The revision is required in order for the resource to stabilize.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ecs-service.html",
  "properties": [
    "Cluster",
    "DeploymentConfiguration",
    "DesiredCount",
    "EnableECSManagedTags",
    "HealthCheckGracePeriodSeconds",
    "LaunchType",
    "LoadBalancers",
    "NetworkConfiguration",
    "PlacementConstraints",
    "PlacementStrategies",
    "PlatformVersion",
    "PropagateTags",
    "Role",
    "SchedulingStrategy",
    "ServiceName",
    "ServiceRegistries",
    "Tags",
    "TaskDefinition"
  ]
},
"AWS::ECS::TaskDefinition": {
  "full_properties": {
    "ContainerDefinitions": {
      "description": "A list of container definitions in JSON format that describe the different containers that make up your task. For more information about container definition parameters and defaults, see Amazon ECS Task Definitions in the Amazon Elastic Container Service Developer Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Cpu": {
      "description": "The number of cpu units used by the task. If you are using the EC2 launch type, this field is optional and any value can be used. If you are using the Fargate launch type, this field is required and you must use one of the following values, which determines your range of valid values for the memory parameter:",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ExecutionRoleArn": {
      "description": "The Amazon Resource Name (ARN) of the task execution role that containers in this task can assume. All containers in this task are granted the permissions that are specified in this role.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Family": {
      "description": "The name of a family that this task definition is registered to. A family groups multiple versions of a task definition. Amazon ECS gives the first task definition that you registered to a family a revision number of 1. Amazon ECS gives sequential revision numbers to each task definition that you add.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Memory": {
      "description": "The amount (in MiB) of memory used by the task. If using the EC2 launch type, this field is optional and any value can be used. If using the Fargate launch type, this field is required and you must use one of the following values, which determines your range of valid values for the cpu parameter:",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "NetworkMode": {
      "description": "The Docker networking mode to use for the containers in the task. The valid values are none, bridge, awsvpc, and host. The default Docker network mode is bridge. If you are using the Fargate launch type, the awsvpc network mode is required. If you are using the EC2 launch type, any network mode can be used. If the network mode is set to none, you cannot specify port mappings in your container definitions, and the tasks containers do not have external connectivity. The host and awsvpc network modes offer the highest networking performance for containers because they use the EC2 network stack instead of the virtualized network stack provided by the bridge mode.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PlacementConstraints": {
      "description": "An array of placement constraint objects to use for tasks. This field is not valid if you are using the Fargate launch type for your task.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "ProxyConfiguration": {
      "description": "The ProxyConfiguration property specifies the configuration details for the App Mesh proxy.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "RequiresCompatibilities": {
      "description": "The launch type the task requires. If no value is specified, it will default to EC2. Valid values include EC2 and FARGATE.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The metadata that you apply to the task definition to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TaskRoleArn": {
      "description": "The short name or full Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role that grants containers in the task permission to call AWS APIs on your behalf. For more information, see Amazon ECS Task Role in the Amazon Elastic Container Service Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Volumes": {
      "description": "The list of volume definitions for the task.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ecs-taskdefinition.html",
  "properties": [
    "ContainerDefinitions",
    "Cpu",
    "ExecutionRoleArn",
    "Family",
    "Memory",
    "NetworkMode",
    "PlacementConstraints",
    "ProxyConfiguration",
    "RequiresCompatibilities",
    "Tags",
    "TaskRoleArn",
    "Volumes"
  ]
},
"AWS::EFS::FileSystem": {
  "full_properties": {
    "Encrypted": {
      "description": "A Boolean value that, if true, creates an encrypted file system. When creating an encrypted file system, you have the option of specifying a KmsKeyId for an existing AWS Key Management Service (AWS KMS) customer master key (CMK). If you don't specify a CMK, then the default CMK for Amazon EFS, /aws/elasticfilesystem, is used to protect the encrypted file system.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "FileSystemTags": {
      "description": "A value that specifies to create one or more tags associated with the file system. Each tag is a user-defined key-value pair. Name your file system on creation by including a \"Key\":\"Name\",\"Value\":\"{value}\" key-value pair.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "KmsKeyId": {
      "description": "The ID of the AWS KMS CMK to be used to protect the encrypted file system. This parameter is only required if you want to use a nondefault CMK. If this parameter is not specified, the default CMK for Amazon EFS is used. This ID can be in one of the following formats:",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LifecyclePolicies": {
      "description": "A list of policies used by EFS lifecycle management to transition files to the Infrequent Access (IA) storage class.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "PerformanceMode": {
      "description": "The performance mode of the file system. We recommend generalPurpose performance mode for most file systems. File systems using the maxIO performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. The performance mode can't be changed after the file system has been created.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProvisionedThroughputInMibps": {
      "description": "The throughput, measured in MiB/s, that you want to provision for a file system that you're creating. Valid values are 1-1024. Required if ThroughputMode is set to provisioned. The upper limit for throughput is 1024 MiB/s. You can get this limit increased by contacting AWS Support. For more information, see Amazon EFS Limits That You Can Increase in the Amazon EFS User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ThroughputMode": {
      "description": "The throughput mode for the file system to be created. There are two throughput modes to choose from for your file system: bursting and provisioned. If you set ThroughputMode to provisioned, you must also set a value for ProvisionedThroughPutInMibps. You can decrease your file system's throughput in Provisioned Throughput mode or change between the throughput modes as long as it’s been more than 24 hours since the last decrease or throughput mode change. For more, see Specifying Throughput with Provisioned Mode in the Amazon EFS User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-efs-filesystem.html",
  "properties": [
    "Encrypted",
    "FileSystemTags",
    "KmsKeyId",
    "LifecyclePolicies",
    "PerformanceMode",
    "ProvisionedThroughputInMibps",
    "ThroughputMode"
  ]
},
"AWS::EFS::MountTarget": {
  "full_properties": {
    "FileSystemId": {
      "description": "The ID of the file system for which to create the mount target.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "IpAddress": {
      "description": "Valid IPv4 address within the address range of the specified subnet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SecurityGroups": {
      "description": "Up to five VPC security group IDs, of the form sg-xxxxxxxx. These must be for the same VPC as subnet specified.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "SubnetId": {
      "description": "The ID of the subnet to add the mount target in.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-efs-mounttarget.html",
  "properties": [
    "FileSystemId",
    "IpAddress",
    "SecurityGroups",
    "SubnetId"
  ]
},
"AWS::EKS::Cluster": {
  "full_properties": {
    "Name": {
      "description": "The unique name to give to your cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ResourcesVpcConfig": {
      "description": "The VPC configuration used by the cluster control plane. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see Cluster VPC Considerations and Cluster Security Group Considerations in the Amazon EKS User Guide. You must specify at least two subnets. You can specify up to five security groups, but we recommend that you use a dedicated security group for your cluster control plane.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "RoleArn": {
      "description": "The Amazon Resource Name (ARN) of the IAM role that provides permissions for Amazon EKS to make calls to other AWS API operations on your behalf. For more information, see Amazon EKS Service IAM Role in the Amazon EKS User Guide .",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Version": {
      "description": "The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-eks-cluster.html",
  "properties": [
    "Name",
    "ResourcesVpcConfig",
    "RoleArn",
    "Version"
  ]
},
"AWS::EMR::Cluster": {
  "full_properties": {
    "AdditionalInfo": {
      "description": "A JSON string for selecting additional features.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Applications": {
      "description": "The applications to install on this cluster, for example, Spark, Flink, Oozie, Zeppelin, and so on.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "AutoScalingRole": {
      "description": "An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "BootstrapActions": {
      "description": "A list of bootstrap actions to run before Hadoop starts on the cluster nodes.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Configurations": {
      "description": "Applies only to Amazon EMR releases 4.x and later. The list of Configurations supplied to the EMR cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "CustomAmiId": {
      "description": "Available only in Amazon EMR version 5.7.0 and later. The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EbsRootVolumeSize": {
      "description": "The size, in GiB, of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "Instances": {
      "description": "A specification of the number and type of Amazon EC2 instances.",
      "required": true,
      "type": "Unknown",
      "update_causes": "unknown"
    },
    "JobFlowRole": {
      "description": "Also called instance profile and EC2 role. An IAM role for an EMR cluster. The EC2 instances of the cluster assume this role. The default role is EMR_EC2_DefaultRole. In order to use the default role, you must have already created it using the CLI or console.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "KerberosAttributes": {
      "description": "Attributes for Kerberos configuration when Kerberos authentication is enabled using a security configuration. For more information see Use Kerberos Authentication in the EMR Management Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "LogUri": {
      "description": "The path to the Amazon S3 location where logs for this cluster are stored.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the cluster.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ReleaseLabel": {
      "description": "The Amazon EMR release label, which determines the version of open-source application packages installed on the cluster. Release labels are in the form emr-x.x.x, where x.x.x is an Amazon EMR release version, for example, emr-5.14.0. For more information about Amazon EMR release versions and included application versions and features, see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/. The release label applies only to Amazon EMR releases versions 4.x and later. Earlier versions use AmiVersion.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ScaleDownBehavior": {
      "description": "The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION is available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SecurityConfiguration": {
      "description": "The name of the security configuration applied to the cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ServiceRole": {
      "description": "The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Steps": {
      "description": "A list of steps to run.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A list of tags associated with a cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VisibleToAllUsers": {
      "description": "Indicates whether the cluster is visible to all IAM users of the AWS account associated with the cluster. If this value is set to true, all IAM users of that AWS account can view and manage the cluster if they have the proper policy permissions set. If this value is false, only the IAM user that created the cluster can view and manage it. This value can be changed using the SetVisibleToAllUsers action.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-elasticmapreduce-cluster.html",
  "properties": [
    "AdditionalInfo",
    "Applications",
    "AutoScalingRole",
    "BootstrapActions",
    "Configurations",
    "CustomAmiId",
    "EbsRootVolumeSize",
    "Instances",
    "JobFlowRole",
    "KerberosAttributes",
    "LogUri",
    "Name",
    "ReleaseLabel",
    "ScaleDownBehavior",
    "SecurityConfiguration",
    "ServiceRole",
    "Steps",
    "Tags",
    "VisibleToAllUsers"
  ]
},
"AWS::EMR::InstanceFleetConfig": {
  "full_properties": {
    "ClusterId": {
      "description": "The unique identifier of the EMR cluster.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceFleetType": {
      "description": "The node type that the instance fleet hosts. Valid values are MASTER,CORE,and TASK.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceTypeConfigs": {
      "description": "InstanceTypeConfigs determine the EC2 instances that Amazon EMR attempts to provision to fulfill On-Demand and Spot target capacities. There can be a maximum of 5 instance type configurations in a fleet, each one specified using an InstanceTypeConfig.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "LaunchSpecifications": {
      "description": "The launch specification for the instance fleet.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The friendly name of the instance fleet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "TargetOnDemandCapacity": {
      "description": "The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision. When the instance fleet launches, Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig. Each instance configuration has a specified WeightedCapacity. When an On-Demand instance is provisioned, the WeightedCapacity units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a WeightedCapacity of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TargetSpotCapacity": {
      "description": "The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision. When the instance fleet launches, Amazon EMR tries to provision Spot instances as specified by InstanceTypeConfig. Each instance configuration has a specified WeightedCapacity. When a Spot instance is provisioned, the WeightedCapacity units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a WeightedCapacity of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-elasticmapreduce-instancefleetconfig.html",
  "properties": [
    "ClusterId",
    "InstanceFleetType",
    "InstanceTypeConfigs",
    "LaunchSpecifications",
    "Name",
    "TargetOnDemandCapacity",
    "TargetSpotCapacity"
  ]
},
"AWS::EMR::InstanceGroupConfig": {
  "full_properties": {
    "AutoScalingPolicy": {
      "description": "AutoScalingPolicy is a subproperty of InstanceGroupConfig. AutoScalingPolicy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. For more information, see Using Automatic Scaling in Amazon EMR in the Amazon EMR Management Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BidPrice": {
      "description": "The maximum Spot price your are willing to pay for EC2 instances.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Configurations": {
      "description": "Note",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "EbsConfiguration": {
      "description": "EbsConfiguration determines the EBS volumes to attach to EMR cluster instances.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "InstanceCount": {
      "description": "Target number of instances for the instance group.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "InstanceRole": {
      "description": "The role of the instance group in the cluster.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceType": {
      "description": "The EC2 instance type for all instances in the instance group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "JobFlowId": {
      "description": "The ID of an Amazon EMR cluster that you want to associate this instance group with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Market": {
      "description": "Market type of the EC2 instances used to create a cluster node.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "Friendly name given to the instance group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-emr-instancegroupconfig.html",
  "properties": [
    "AutoScalingPolicy",
    "BidPrice",
    "Configurations",
    "EbsConfiguration",
    "InstanceCount",
    "InstanceRole",
    "InstanceType",
    "JobFlowId",
    "Market",
    "Name"
  ]
},
"AWS::EMR::SecurityConfiguration": {
  "full_properties": {
    "Name": {
      "description": "The name of the security configuration.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SecurityConfiguration": {
      "description": "The security configuration details in JSON format.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-emr-securityconfiguration.html",
  "properties": [
    "Name",
    "SecurityConfiguration"
  ]
},
"AWS::EMR::Step": {
  "full_properties": {
    "ActionOnFailure": {
      "description": "The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is provided for backward compatibility. We recommend using TERMINATE_CLUSTER instead.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "HadoopJarStep": {
      "description": "The HadoopJarStepConfig property type specifies a job flow step consisting of a JAR file whose main function will be executed. The main function submits a job for the cluster to execute as a step on the master node, and then waits for the job to finish or fail before executing subsequent steps.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "JobFlowId": {
      "description": "A string that uniquely identifies the cluster (job flow).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the cluster step.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-emr-step.html",
  "properties": [
    "ActionOnFailure",
    "HadoopJarStep",
    "JobFlowId",
    "Name"
  ]
},
"AWS::ElastiCache::CacheCluster": {
  "full_properties": {
    "AZMode": {
      "description": "Specifies whether the nodes in this Memcached cluster are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "AutoMinorVersionUpgrade": {
      "description": "This parameter is currently disabled.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "CacheNodeType": {
      "description": "The compute and memory capacity of the nodes in the node group (shard).",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "CacheParameterGroupName": {
      "description": "The name of the parameter group to associate with this cluster. If this argument is omitted, the default parameter group for the specified engine is used. You cannot use any parameter group which has cluster-enabled='yes' when creating a cluster.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "CacheSecurityGroupNames": {
      "description": "A list of security group names to associate with this cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "CacheSubnetGroupName": {
      "description": "The name of the subnet group to be used for the cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ClusterName": {
      "description": "A name for the cache cluster. If you don't specify a name, AWSCloudFormation generates a unique physical ID and uses that ID for the cache cluster. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Engine": {
      "description": "The name of the cache engine to be used for this cluster.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineVersion": {
      "description": "The version number of the cache engine to be used for this cluster. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NotificationTopicArn": {
      "description": "The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic  to which notifications are sent.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NumCacheNodes": {
      "description": "The number of cache nodes that the cache cluster should have.",
      "required": true,
      "type": "Number",
      "update_causes": "replacement"
    },
    "Port": {
      "description": "The port number on which each of the cache nodes  accepts connections.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "PreferredAvailabilityZone": {
      "description": "The EC2 Availability Zone in which the cluster is created.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "PreferredAvailabilityZones": {
      "description": "A list of the Availability Zones in which cache nodes are created. The order of the zones in the list is not important.",
      "required": false,
      "type": "Array",
      "update_causes": "unknown"
    },
    "PreferredMaintenanceWindow": {
      "description": "Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SnapshotArns": {
      "description": "A single-element string list containing an Amazon Resource Name (ARN) that uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot file is used to populate the node group (shard). The Amazon S3 object name in the ARN cannot contain any commas.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SnapshotName": {
      "description": "The name of a Redis snapshot from which to restore data into the new node group (shard). The snapshot status changes to restoring while the new node group (shard) is being created.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SnapshotRetentionLimit": {
      "description": "The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot taken today is retained for 5 days before being deleted.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "SnapshotWindow": {
      "description": "The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "A list of cost allocation tags to be added to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcSecurityGroupIds": {
      "description": "One or more VPC security groups associated with the cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-elasticache-cache-cluster.html",
  "properties": [
    "AutoMinorVersionUpgrade",
    "AZMode",
    "CacheNodeType",
    "CacheParameterGroupName",
    "CacheSecurityGroupNames",
    "CacheSubnetGroupName",
    "ClusterName",
    "Engine",
    "EngineVersion",
    "NotificationTopicArn",
    "NumCacheNodes",
    "Port",
    "PreferredAvailabilityZone",
    "PreferredAvailabilityZones",
    "PreferredMaintenanceWindow",
    "SnapshotArns",
    "SnapshotName",
    "SnapshotRetentionLimit",
    "SnapshotWindow",
    "Tags",
    "VpcSecurityGroupIds"
  ]
},
"AWS::ElastiCache::ParameterGroup": {
  "full_properties": {
    "CacheParameterGroupFamily": {
      "description": "The name of the cache parameter group family that this cache parameter group is compatible with.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description for this cache parameter group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Properties": {
      "description": "A comma-delimited list of parameter name/value pairs. For more information, see ModifyCacheParameterGroup in the Amazon ElastiCache API Reference Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-elasticache-parameter-group.html",
  "properties": [
    "CacheParameterGroupFamily",
    "Description",
    "Properties"
  ]
},
"AWS::ElastiCache::ReplicationGroup": {
  "full_properties": {
    "AtRestEncryptionEnabled": {
      "description": "A flag that enables encryption at rest when set to true.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "AuthToken": {
      "description": "Reserved parameter. The password used to access a password protected server.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "AutoMinorVersionUpgrade": {
      "description": "This parameter is currently disabled.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AutomaticFailoverEnabled": {
      "description": "Specifies whether a read-only replica is automatically promoted to read/write primary if the existing primary fails.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "CacheNodeType": {
      "description": "The compute and memory capacity of the nodes in the node group (shard).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "CacheParameterGroupName": {
      "description": "The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "CacheSecurityGroupNames": {
      "description": "A list of cache security group names to associate with this replication group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "CacheSubnetGroupName": {
      "description": "The name of the cache subnet group to be used for the replication group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Engine": {
      "description": "The name of the cache engine to be used for the clusters in this replication group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineVersion": {
      "description": "The version number of the cache engine to be used for the clusters in this replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NodeGroupConfiguration": {
      "description": "NodeGroupConfiguration  is a property of the AWS::ElastiCache::ReplicationGroup resource that configures an Amazon ElastiCache (ElastiCache) Redis cluster node group.",
      "required": false,
      "type": "Array",
      "update_causes": "unknown"
    },
    "NotificationTopicArn": {
      "description": "The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NumCacheClusters": {
      "description": "The number of clusters this replication group initially has.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "NumNodeGroups": {
      "description": "An optional parameter that specifies the number of node groups (shards) for this Redis (cluster mode enabled) replication group. For Redis (cluster mode disabled) either omit this parameter or set it to 1.",
      "required": false,
      "type": "Number",
      "update_causes": "unknown"
    },
    "Port": {
      "description": "The port number on which each member of the replication group accepts connections.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "PreferredCacheClusterAZs": {
      "description": "A list of EC2 Availability Zones in which the replication group's clusters are created.  The order of the Availability Zones in the list is the order in which clusters are allocated. The primary cluster is created in the first AZ in the list.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "PreferredMaintenanceWindow": {
      "description": "Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid values for ddd are:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PrimaryClusterId": {
      "description": "The identifier of the cluster that serves as the primary for this replication group. This cluster must already exist and have a status of available.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ReplicasPerNodeGroup": {
      "description": "An optional parameter that specifies the number of replica nodes in each node group (shard). Valid values are 0 to 5.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "ReplicationGroupDescription": {
      "description": "A user-created description for the replication group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ReplicationGroupId": {
      "description": "The replication group identifier. This parameter is stored as a lowercase string.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SecurityGroupIds": {
      "description": "One or more Amazon VPC security groups associated with this replication group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SnapshotArns": {
      "description": "A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new replication group. The Amazon S3 object name in the ARN cannot contain any commas. The new replication group will have the number of node groups (console: shards) specified by the parameter NumNodeGroups or the number of node groups configured by NodeGroupConfiguration regardless of the number of ARNs specified here.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SnapshotName": {
      "description": "The name of a snapshot from which to restore data into the new replication group. The snapshot status changes to restoring while the new replication group is being created.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SnapshotRetentionLimit": {
      "description": "The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "SnapshotWindow": {
      "description": "The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SnapshottingClusterId": {
      "description": "The cluster ID that is used as the daily snapshot source for the replication group. This parameter cannot be set for Redis (cluster mode enabled) replication groups.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "A list of cost allocation tags to be added to this resource. Tags are comma-separated key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple tags as shown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TransitEncryptionEnabled": {
      "description": "A flag that enables in-transit encryption when set to true.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-elasticache-replicationgroup.html",
  "properties": [
    "AtRestEncryptionEnabled",
    "AuthToken",
    "AutomaticFailoverEnabled",
    "AutoMinorVersionUpgrade",
    "CacheNodeType",
    "CacheParameterGroupName",
    "CacheSecurityGroupNames",
    "CacheSubnetGroupName",
    "Engine",
    "EngineVersion",
    "NodeGroupConfiguration",
    "NotificationTopicArn",
    "NumCacheClusters",
    "NumNodeGroups",
    "Port",
    "PreferredCacheClusterAZs",
    "PreferredMaintenanceWindow",
    "PrimaryClusterId",
    "ReplicasPerNodeGroup",
    "ReplicationGroupDescription",
    "ReplicationGroupId",
    "SecurityGroupIds",
    "SnapshotArns",
    "SnapshotName",
    "SnapshotRetentionLimit",
    "SnapshottingClusterId",
    "SnapshotWindow",
    "Tags",
    "TransitEncryptionEnabled"
  ]
},
"AWS::ElastiCache::SecurityGroup": {
  "full_properties": {
    "Description": {
      "description": "A description for the cache security group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-elasticache-security-group.html",
  "properties": [
    "Description"
  ]
},
"AWS::ElastiCache::SecurityGroupIngress": {
  "full_properties": {
    "CacheSecurityGroupName": {
      "description": "The name of the Cache Security Group to authorize.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "EC2SecurityGroupName": {
      "description": "Name of the EC2 Security Group to include in the authorization.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "EC2SecurityGroupOwnerId": {
      "description": "Specifies the AWS Account ID of the owner of the EC2 security group specified in the EC2SecurityGroupName property. The AWS access key ID is not an acceptable value.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-elasticache-security-group-ingress.html",
  "properties": [
    "CacheSecurityGroupName",
    "EC2SecurityGroupName",
    "EC2SecurityGroupOwnerId"
  ]
},
"AWS::ElastiCache::SubnetGroup": {
  "full_properties": {
    "CacheSubnetGroupName": {
      "description": "The name for the cache subnet group. This value is stored as a lowercase string.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The description for the cache subnet group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "SubnetIds": {
      "description": "The EC2 subnet IDs for the cache subnet group.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-elasticache-subnetgroup.html",
  "properties": [
    "CacheSubnetGroupName",
    "Description",
    "SubnetIds"
  ]
},
"AWS::ElasticBeanstalk::Application": {
  "full_properties": {
    "ApplicationName": {
      "description": "A name for the Elastic Beanstalk application. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the application name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "Your description of the application.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ResourceLifecycleConfig": {
      "description": "Specifies an application resource lifecycle configuration to prevent your application from accumulating too many versions.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-beanstalk.html",
  "properties": [
    "ApplicationName",
    "Description",
    "ResourceLifecycleConfig"
  ]
},
"AWS::ElasticBeanstalk::ApplicationVersion": {
  "full_properties": {
    "ApplicationName": {
      "description": "The name of the Elastic Beanstalk application that is associated with this application version.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "A description of this application version.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SourceBundle": {
      "description": "The Amazon S3 bucket and key that identify the location of the source bundle for this version.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-properties-beanstalk-version.html",
  "properties": [
    "ApplicationName",
    "Description",
    "SourceBundle"
  ]
},
"AWS::ElasticBeanstalk::ConfigurationTemplate": {
  "full_properties": {
    "ApplicationName": {
      "description": "The name of the Elastic Beanstalk application to associate with this configuration template.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "An optional description for this configuration.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EnvironmentId": {
      "description": "The ID of an environment whose settings you want to use to create the configuration template. You must specify EnvironmentId if you don't specify PlatformArn, SolutionStackName, or SourceConfiguration.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "OptionSettings": {
      "description": "Option values for the Elastic Beanstalk configuration, such as the instance type. If specified, these values override the values obtained from the solution stack or the source configuration template. For a complete list of Elastic Beanstalk configuration options, see Option Values in the AWS Elastic Beanstalk Developer Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "PlatformArn": {
      "description": "The Amazon Resource Name (ARN) of the custom platform. For more information, see  Custom Platforms in the AWS Elastic Beanstalk Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SolutionStackName": {
      "description": "The name of an Elastic Beanstalk solution stack (platform version) that this configuration uses. For example, 64bit Amazon Linux 2013.09 running Tomcat 7 Java 7. A solution stack specifies the operating system, runtime, and application server for a configuration template. It also determines the set of configuration options as well as the possible and default values. For more information, see Supported Platforms in the AWS Elastic Beanstalk Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceConfiguration": {
      "description": "An Elastic Beanstalk configuration template to base this one on. If specified, Elastic Beanstalk uses the configuration values from the specified configuration template to create a new configuration.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-elasticbeanstalk-configurationtemplate.html",
  "properties": [
    "ApplicationName",
    "Description",
    "EnvironmentId",
    "OptionSettings",
    "PlatformArn",
    "SolutionStackName",
    "SourceConfiguration"
  ]
},
"AWS::ElasticBeanstalk::Environment": {
  "full_properties": {
    "ApplicationName": {
      "description": "The name of the application that is associated with this environment.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "CNAMEPrefix": {
      "description": "If specified, the environment attempts to use this value as the prefix for the CNAME in your Elastic Beanstalk environment URL. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "Your description for this environment.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EnvironmentName": {
      "description": "A unique name for the environment.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "OptionSettings": {
      "description": "Key-value pairs defining configuration options for this environment, such as the instance type. These options override the values that are defined in the solution stack or the configuration template. If you remove any options during a stack update, the removed options retain their current values.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "PlatformArn": {
      "description": "The Amazon Resource Name (ARN) of the custom platform to use with the environment.  For more information, see Custom Platforms in the AWS Elastic Beanstalk Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SolutionStackName": {
      "description": "The name of an Elastic Beanstalk solution stack (platform version) to use with the environment. If specified, Elastic Beanstalk sets the configuration values to the default values associated with the specified solution stack. For a list of current solution stacks, see Elastic Beanstalk Supported Platforms in the AWS Elastic Beanstalk Platforms guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Specifies the tags applied to resources in the environment.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TemplateName": {
      "description": "The name of the Elastic Beanstalk configuration template to use with the environment.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tier": {
      "description": "Specifies the tier to use in creating this environment. The environment tier that you choose determines whether Elastic Beanstalk provisions resources to support a web application that handles HTTP(S) requests or a web application that handles background-processing tasks.",
      "required": false,
      "type": "Unknown",
      "update_causes": "unknown"
    },
    "VersionLabel": {
      "description": "The name of the application version to deploy.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-beanstalk-environment.html",
  "properties": [
    "ApplicationName",
    "CNAMEPrefix",
    "Description",
    "EnvironmentName",
    "OptionSettings",
    "PlatformArn",
    "SolutionStackName",
    "Tags",
    "TemplateName",
    "Tier",
    "VersionLabel"
  ]
},
"AWS::ElasticLoadBalancing::LoadBalancer": {
  "full_properties": {
    "AccessLoggingPolicy": {
      "description": "Information about where and how access logs are stored for the load balancer.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "AppCookieStickinessPolicy": {
      "description": "Information about a policy for application-controlled session stickiness.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "AvailabilityZones": {
      "description": "The Availability Zones for the load balancer. For load balancers in a VPC, specify Subnets instead.",
      "required": false,
      "type": "Array",
      "update_causes": "unknown"
    },
    "ConnectionDrainingPolicy": {
      "description": "If enabled, the load balancer allows existing requests to complete before the load balancer shifts traffic away from a deregistered or unhealthy instance.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ConnectionSettings": {
      "description": "If enabled, the load balancer allows the connections to remain idle (no data is sent over the connection) for the specified duration.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CrossZone": {
      "description": "If enabled, the load balancer routes the request traffic evenly across all instances regardless of the Availability Zones.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "HealthCheck": {
      "description": "The health check settings to use when evaluating the health of your EC2 instances.",
      "required": false,
      "type": "Unknown",
      "update_causes": "unknown"
    },
    "Instances": {
      "description": "The IDs of the instances for the load balancer.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "LBCookieStickinessPolicy": {
      "description": "Information about a policy for duration-based session stickiness.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Listeners": {
      "description": "The listeners for the load balancer. You can specify at most one listener per port.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "LoadBalancerName": {
      "description": "The name of the load balancer. This name must be unique within your set of load balancers for the region.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Policies": {
      "description": "The policies defined for your Classic Load Balancer. Specify only back-end server policies.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Scheme": {
      "description": "The type of load balancer. Valid only for load balancers in a VPC.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SecurityGroups": {
      "description": "The security groups for the load balancer. Valid only for load balancers in a VPC.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Subnets": {
      "description": "The IDs of the subnets for the load balancer. You can specify at most one subnet per Availability Zone.",
      "required": false,
      "type": "Array",
      "update_causes": "unknown"
    },
    "Tags": {
      "description": "The tags associated with a load balancer.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-ec2-elb.html",
  "properties": [
    "AccessLoggingPolicy",
    "AppCookieStickinessPolicy",
    "AvailabilityZones",
    "ConnectionDrainingPolicy",
    "ConnectionSettings",
    "CrossZone",
    "HealthCheck",
    "Instances",
    "LBCookieStickinessPolicy",
    "Listeners",
    "LoadBalancerName",
    "Policies",
    "Scheme",
    "SecurityGroups",
    "Subnets",
    "Tags"
  ]
},
"AWS::ElasticLoadBalancingV2::Listener": {
  "full_properties": {
    "Certificates": {
      "description": "The default SSL server certificate. You must provide exactly one certificate if the listener protocol is HTTPS or TLS.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "DefaultActions": {
      "description": "The actions for the default rule.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "LoadBalancerArn": {
      "description": "The Amazon Resource Name (ARN) of the load balancer.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Port": {
      "description": "The port on which the load balancer is listening.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "Protocol": {
      "description": "The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "SslPolicy": {
      "description": "[HTTPS and TLS listeners] The security policy that defines which ciphers and protocols are supported. The default is the current predefined security policy.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-elasticloadbalancingv2-listener.html",
  "properties": [
    "Certificates",
    "DefaultActions",
    "LoadBalancerArn",
    "Port",
    "Protocol",
    "SslPolicy"
  ]
},
"AWS::ElasticLoadBalancingV2::ListenerCertificate": {
  "full_properties": {
    "Certificates": {
      "description": "The certificates to add. Duplicates are not allowed.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    },
    "ListenerArn": {
      "description": "The Amazon Resource Name (ARN) of the listener.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-elasticloadbalancingv2-listenercertificate.html",
  "properties": [
    "Certificates",
    "ListenerArn"
  ]
},
"AWS::ElasticLoadBalancingV2::ListenerRule": {
  "full_properties": {
    "Actions": {
      "description": "The actions.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Conditions": {
      "description": "The conditions.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "ListenerArn": {
      "description": "The Amazon Resource Name (ARN) of the listener.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Priority": {
      "description": "The rule priority. A listener can't have multiple rules with the same priority.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-elasticloadbalancingv2-listenerrule.html",
  "properties": [
    "Actions",
    "Conditions",
    "ListenerArn",
    "Priority"
  ]
},
"AWS::ElasticLoadBalancingV2::LoadBalancer": {
  "full_properties": {
    "IpAddressType": {
      "description": "The IP address type. The possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). Internal load balancers must use ipv4. Network Load Balancers must use ipv4.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "LoadBalancerAttributes": {
      "description": "The load balancer attributes.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the load balancer. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, must not begin or end with a hyphen, and must not begin with \"internal-\".",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Scheme": {
      "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SecurityGroups": {
      "description": "[Application Load Balancers] The IDs of the security groups for the load balancer.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SubnetMappings": {
      "description": "The IDs of the public subnets. You can specify only one subnet per Availability Zone.  You must specify either subnets or subnet mappings.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Subnets": {
      "description": "The IDs of the public subnets. You can specify only one subnet per Availability Zone.  You must specify either subnets or subnet mappings.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "One or more tags to assign to the load balancer.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Type": {
      "description": "The type of load balancer. The default is application.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-elasticloadbalancingv2-loadbalancer.html",
  "properties": [
    "IpAddressType",
    "LoadBalancerAttributes",
    "Name",
    "Scheme",
    "SecurityGroups",
    "SubnetMappings",
    "Subnets",
    "Tags",
    "Type"
  ]
},
"AWS::ElasticLoadBalancingV2::TargetGroup": {
  "full_properties": {
    "HealthCheckEnabled": {
      "description": "Indicates whether health checks are enabled. If the target type is lambda, health checks are disabled by default but can be enabled. If the target type is instance or ip, health checks are always enabled and cannot be disabled.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "HealthCheckIntervalSeconds": {
      "description": "The approximate amount of time, in seconds, between health checks of an individual target. For HTTP and HTTPS health checks, the range is 5–300 seconds. For TCP health checks, the supported values are 10 and 30 seconds. If the target type is instance or ip, the default is 30 seconds. If the target type is lambda, the default is 35 seconds.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "HealthCheckPath": {
      "description": "[HTTP/HTTPS health checks] The ping path that is the destination on the targets for health checks. The default is /.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "HealthCheckPort": {
      "description": "The port the load balancer uses when performing health checks on targets. The default is traffic-port, which is the port on which each target receives traffic from the load balancer.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "HealthCheckProtocol": {
      "description": "The protocol the load balancer uses when performing health checks on targets. For Application Load Balancers, the default is HTTP. For Network Load Balancers, the default is TCP. The TCP protocol is supported for health checks only if the protocol of the target group is TCP, TLS, UDP, or TCP_UDP. The TLS, UDP, and TCP_UDP protocols are not supported for health checks.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "HealthCheckTimeoutSeconds": {
      "description": "The amount of time, in seconds, during which no response from a target means a failed health check. For target groups with a protocol of HTTP or HTTPS, the default is 5 seconds. For target groups with a protocol of TCP or TLS, this value must be 6 seconds for HTTP health checks and 10 seconds for TCP and HTTPS health checks. If the target type is lambda, the default is 30 seconds.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "HealthyThresholdCount": {
      "description": "The number of consecutive health checks successes required before considering an unhealthy target healthy. For target groups with a protocol of HTTP or HTTPS, the default is 5. For target groups with a protocol of TCP or TLS, the default is 3. If the target type is lambda, the default is 5.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Matcher": {
      "description": "[HTTP/HTTPS health checks] The HTTP codes to use when checking for a successful response from a target.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the target group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Port": {
      "description": "The port on which the targets receive traffic. This port is used unless you specify a port override when registering the target. If the target is a Lambda function, this  parameter does not apply.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "Protocol": {
      "description": "The protocol to use for routing traffic to the targets. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, or TCP_UDP. A TCP_UDP listener must be associated with a TCP_UDP target group. If the target is a Lambda function, this parameter does not apply.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The tags. Each resource can have a maximum of 10 tags.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TargetGroupAttributes": {
      "description": "The attributes.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TargetType": {
      "description": "The type of target that you must specify when registering targets with this target group. You can't specify targets for a target group using more than one target type.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Targets": {
      "description": "The targets.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "UnhealthyThresholdCount": {
      "description": "The number of consecutive health check failures required before considering a target unhealthy. For target groups with a protocol of HTTP or HTTPS, the default is 2. For target groups with a protocol of TCP or TLS, this value must be the same as the healthy threshold count. If the target type is lambda, the default is 2.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "VpcId": {
      "description": "The identifier of the virtual private cloud (VPC). If the target is a Lambda function,  this parameter does not apply. Otherwise, this parameter is required.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-elasticloadbalancingv2-targetgroup.html",
  "properties": [
    "HealthCheckEnabled",
    "HealthCheckIntervalSeconds",
    "HealthCheckPath",
    "HealthCheckPort",
    "HealthCheckProtocol",
    "HealthCheckTimeoutSeconds",
    "HealthyThresholdCount",
    "Matcher",
    "Name",
    "Port",
    "Protocol",
    "Tags",
    "TargetGroupAttributes",
    "Targets",
    "TargetType",
    "UnhealthyThresholdCount",
    "VpcId"
  ]
},
"AWS::Elasticsearch::Domain": {
  "full_properties": {
    "AccessPolicies": {
      "description": "An AWS Identity and Access Management (IAM) policy document that specifies who can access the Amazon ES domain and their permissions. For more information, see Configuring Access Policies in the Amazon Elasticsearch Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "AdvancedOptions": {
      "description": "Additional options to specify for the Amazon ES domain. For more information, see Configuring Advanced Options in the Amazon Elasticsearch Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DomainName": {
      "description": "A name for the Amazon ES domain. For valid values, see the DomainName data type in the Amazon Elasticsearch Service Developer Guide. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the domain name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "EBSOptions": {
      "description": "The configurations of Amazon Elastic Block Store (Amazon EBS) volumes that are attached to data nodes in the Amazon ES domain. For more information, see Configuring EBS-based Storage in the Amazon Elasticsearch Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ElasticsearchClusterConfig": {
      "description": "ElasticsearchClusterConfig is a property of the AWS::Elasticsearch::Domain resource that configures the cluster of an Amazon Elasticsearch Service (Amazon ES) domain.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ElasticsearchVersion": {
      "description": "The version of Elasticsearch to use, such as 2.3. If not specified, 1.5 is used as the default. For information about the versions that Amazon ES supports, see the Elasticsearch-Version parameter for the CreateElasticsearchDomain action in the Amazon Elasticsearch Service Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EncryptionAtRestOptions": {
      "description": "Whether the domain should encrypt data at rest, and if so, the AWS Key Management Service (KMS) key to use. Can only be used to create a new domain, not update an existing one.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "NodeToNodeEncryptionOptions": {
      "description": "Specifies whether node-to-node encryption is enabled.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "SnapshotOptions": {
      "description": "The automated snapshot configuration for the Amazon ES domain indices.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An arbitrary set of tags (key–value pairs) to associate with the Amazon ES domain.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VPCOptions": {
      "description": "The virtual private cloud (VPC) configuration for the Amazon ES domain. For more information, see VPC Support for Amazon Elasticsearch Service Domains in the Amazon Elasticsearch Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-elasticsearch-domain.html",
  "properties": [
    "AccessPolicies",
    "AdvancedOptions",
    "DomainName",
    "EBSOptions",
    "ElasticsearchClusterConfig",
    "ElasticsearchVersion",
    "EncryptionAtRestOptions",
    "NodeToNodeEncryptionOptions",
    "SnapshotOptions",
    "Tags",
    "VPCOptions"
  ]
},
"AWS::Events::EventBusPolicy": {
  "full_properties": {
    "Action": {
      "description": "The action that you're enabling the other account to perform. Currently, this must be events:PutEvents.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Condition": {
      "description": "Condition is a JSON string that you can use to limit the event bus permissions that you're granting only to accounts that fulfill the condition. Currently, the only supported condition is membership in a certain AWS organization. For more information about AWS Organizations, see What Is AWS Organizations? in the AWS Organizations User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Principal": {
      "description": "The 12-digit AWS account ID that you are permitting to put events to your default  event bus. Specify \"*\" to permit any account to put events to your default event bus.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "StatementId": {
      "description": "An identifier string for the external account that you're granting permissions to. If you later want to revoke the permission for this external account, you must specify this StatementId.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-events-eventbuspolicy.html",
  "properties": [
    "Action",
    "Condition",
    "Principal",
    "StatementId"
  ]
},
"AWS::Events::Rule": {
  "full_properties": {
    "Description": {
      "description": "The description of the rule.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EventPattern": {
      "description": "Describes which events CloudWatch Events routes to the specified target. For more information, see Event Patterns in CloudWatch Events in the Amazon CloudWatch Events User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the rule. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the rule name.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RoleArn": {
      "description": "The Amazon Resource Name (ARN) of the role that is used for target invocation.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ScheduleExpression": {
      "description": "The scheduling expression that determines when and how often the rule runs. For more information, see Schedule Expressions for Rules.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "State": {
      "description": "Indicates whether the rule is enabled.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Targets": {
      "description": "The resources that CloudWatch Events routes events to and invokes when the rule is triggered. For information about valid targets, see PutTargets.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-events-rule.html",
  "properties": [
    "Description",
    "EventPattern",
    "Name",
    "RoleArn",
    "ScheduleExpression",
    "State",
    "Targets"
  ]
},
"AWS::FSx::FileSystem": {
  "full_properties": {
    "BackupId": {
      "description": "The ID of the backup. Specifies the backup to use if you're creating a file system from an existing backup.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "FileSystemType": {
      "description": "The type of Amazon FSx file system, either LUSTRE or WINDOWS.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "KmsKeyId": {
      "description": "The ID of the AWS Key Management Service (AWS KMS) key used to encrypt the file system's data for an Amazon FSx for Windows File Server file system.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LustreConfiguration": {
      "description": "The Lustre configuration for the file system being created. This value is required if FileSystemType is set to LUSTRE.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SecurityGroupIds": {
      "description": "A list of IDs specifying the security groups to apply to all network interfaces created for file system access. This list isn't returned in later requests to describe the file system.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "StorageCapacity": {
      "description": "The storage capacity of the file system being created.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "SubnetIds": {
      "description": "The ID of the subnet to contain the endpoint for the file system. One and only one is supported. The file system is launched in the Availability Zone associated with this subnet.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "WindowsConfiguration": {
      "description": "The configuration object for the Microsoft Windows file system you are creating.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-fsx-filesystem.html",
  "properties": [
    "BackupId",
    "FileSystemType",
    "KmsKeyId",
    "LustreConfiguration",
    "SecurityGroupIds",
    "StorageCapacity",
    "SubnetIds",
    "Tags",
    "WindowsConfiguration"
  ]
},
"AWS::GameLift::Alias": {
  "full_properties": {
    "Description": {
      "description": "Human-readable description of an alias.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "Descriptive label that is associated with an alias. Alias names do not need to be unique.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RoutingStrategy": {
      "description": "A routing configuration that specifies where traffic is directed for this alias, such as to a fleet or to a message.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-gamelift-alias.html",
  "properties": [
    "Description",
    "Name",
    "RoutingStrategy"
  ]
},
"AWS::GameLift::Build": {
  "full_properties": {
    "Name": {
      "description": "Descriptive label that is associated with a build. Build names do not need to be unique.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "StorageLocation": {
      "description": "Information indicating where your game build files are stored. Use this parameter only when creating a build with files stored in an Amazon S3 bucket that you own. The storage location must specify an Amazon S3 bucket name and key, as well as a the ARN for a role that you set up to allow Amazon GameLift to access your Amazon S3 bucket. The S3 bucket must be in the same region that you want to create a new build in.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Version": {
      "description": "Version that is associated with this build. Version strings do not need to be unique.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-gamelift-build.html",
  "properties": [
    "Name",
    "StorageLocation",
    "Version"
  ]
},
"AWS::GameLift::Fleet": {
  "full_properties": {
    "BuildId": {
      "description": "Unique identifier for a build to be deployed on the new fleet. The custom game server build must have been successfully uploaded to Amazon GameLift and be in a READY status. This fleet setting cannot be changed once the fleet is created.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "Human-readable description of a fleet.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DesiredEC2Instances": {
      "description": "Number of EC2 instances you want this fleet to host.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "EC2InboundPermissions": {
      "description": "Range of IP addresses and port settings that permit inbound traffic to access game sessions that running on the fleet. For fleets using a custom game build, this parameter is required before game sessions running on the fleet can accept connections. For Realtime Servers fleets, Amazon GameLift automatically sets TCP and UDP ranges for use by the Realtime servers. You can specify multiple permission settings or add more by updating the fleet.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "EC2InstanceType": {
      "description": "Name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. For more information about the instance types that are supported by GameLift, see the EC2InstanceType parameter in the Amazon GameLift API Reference.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "LogPaths": {
      "description": "This parameter is no longer used. Instead, to specify where Amazon GameLift should store log files once a server process shuts down, use the Amazon GameLift server API ProcessReady() and specify one or more directory paths in logParameters. See more information in the Server API Reference.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "MaxSize": {
      "description": "Maximum value allowed for the fleet's instance count. Default if not set is 1.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "MinSize": {
      "description": "Minimum value allowed for the fleet's instance count. Default if not set is 0.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Name": {
      "description": "Descriptive label that is associated with a fleet. Fleet names do not need to be unique.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ServerLaunchParameters": {
      "description": "The parameters that are required to launch your game server. Specify these parameters as a string of command-line parameters, such as +sv_port 33435 +start_lobby.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ServerLaunchPath": {
      "description": "The location of your game server that GameLift launches. You must escape the slashes (\\) and use the following pattern: C:\\\\game\\\\launchpath. For example, if your game server files are in the MyGame folder, the path should be C:\\\\game\\\\MyGame\\\\server.exe.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-gamelift-fleet.html",
  "properties": [
    "BuildId",
    "Description",
    "DesiredEC2Instances",
    "EC2InboundPermissions",
    "EC2InstanceType",
    "LogPaths",
    "MaxSize",
    "MinSize",
    "Name",
    "ServerLaunchParameters",
    "ServerLaunchPath"
  ]
},
"AWS::Glue::Classifier": {
  "full_properties": {
    "CsvClassifier": {
      "description": "A classifier for comma-separated values (CSV).",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "GrokClassifier": {
      "description": "A classifier that uses grok.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "JsonClassifier": {
      "description": "A classifier for JSON content.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "XMLClassifier": {
      "description": "A classifier for XML content.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-glue-classifier.html",
  "properties": [
    "CsvClassifier",
    "GrokClassifier",
    "JsonClassifier",
    "XMLClassifier"
  ]
},
"AWS::Glue::Connection": {
  "full_properties": {
    "CatalogId": {
      "description": "The ID of the data catalog to create the catalog object in. Currently, this should be the AWS account ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ConnectionInput": {
      "description": "The connection that you want to create.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-glue-connection.html",
  "properties": [
    "CatalogId",
    "ConnectionInput"
  ]
},
"AWS::Glue::Crawler": {
  "full_properties": {
    "Classifiers": {
      "description": "A list of UTF-8 strings that specify the custom classifiers that are associated with the crawler.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Configuration": {
      "description": "Crawler configuration information. This versioned JSON string allows users to specify aspects of a crawler's behavior. For more information, see Configuring a Crawler.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "CrawlerSecurityConfiguration": {
      "description": "The name of the SecurityConfiguration structure to be used by this crawler.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DatabaseName": {
      "description": "The name of the database in which the crawler's output is stored.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the crawler.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the crawler.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Role": {
      "description": "The Amazon Resource Name (ARN) of an IAM role that's used to access customer resources, such as Amazon Simple Storage Service (Amazon S3) data.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Schedule": {
      "description": "For scheduled crawlers, the schedule when the crawler runs.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SchemaChangePolicy": {
      "description": "The policy that specifies update and delete behaviors for the crawler.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TablePrefix": {
      "description": "The prefix added to the names of tables that are created.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags to use with this crawler.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Targets": {
      "description": "A collection of targets to crawl.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-glue-crawler.html",
  "properties": [
    "Classifiers",
    "Configuration",
    "CrawlerSecurityConfiguration",
    "DatabaseName",
    "Description",
    "Name",
    "Role",
    "Schedule",
    "SchemaChangePolicy",
    "TablePrefix",
    "Tags",
    "Targets"
  ]
},
"AWS::Glue::DataCatalogEncryptionSettings": {
  "full_properties": {
    "CatalogId": {
      "description": "The ID of the Data Catalog in which the settings are created.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DataCatalogEncryptionSettings": {
      "description": "Contains configuration information for maintaining Data Catalog security.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-glue-datacatalogencryptionsettings.html",
  "properties": [
    "CatalogId",
    "DataCatalogEncryptionSettings"
  ]
},
"AWS::Glue::Database": {
  "full_properties": {
    "CatalogId": {
      "description": "The AWS account ID for the account in which to create the catalog object.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DatabaseInput": {
      "description": "The metadata for the database.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-glue-database.html",
  "properties": [
    "CatalogId",
    "DatabaseInput"
  ]
},
"AWS::Glue::DevEndpoint": {
  "full_properties": {
    "EndpointName": {
      "description": "The name of the DevEndpoint.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ExtraJarsS3Path": {
      "description": "The path to one or more Java .jar files in an S3 bucket that should be loaded in your DevEndpoint.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ExtraPythonLibsS3Path": {
      "description": "The paths to one or more Python libraries in an Amazon S3 bucket that should be loaded in your DevEndpoint. Multiple values must be complete paths separated by a comma.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NumberOfNodes": {
      "description": "The number of AWS Glue Data Processing Units (DPUs) allocated to this DevEndpoint.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "PublicKey": {
      "description": "The public key to be used by this DevEndpoint for authentication. This attribute is provided for backward compatibility because the recommended attribute to use is public keys.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The Amazon Resource Name (ARN) of the IAM role used in this DevEndpoint.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "SecurityConfiguration": {
      "description": "The name of the SecurityConfiguration structure to be used with this DevEndpoint.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SecurityGroupIds": {
      "description": "A list of security group identifiers used in this DevEndpoint.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SubnetId": {
      "description": "The subnet ID for this DevEndpoint.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags to use with this DevEndpoint.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-glue-devendpoint.html",
  "properties": [
    "EndpointName",
    "ExtraJarsS3Path",
    "ExtraPythonLibsS3Path",
    "NumberOfNodes",
    "PublicKey",
    "RoleArn",
    "SecurityConfiguration",
    "SecurityGroupIds",
    "SubnetId",
    "Tags"
  ]
},
"AWS::Glue::Job": {
  "full_properties": {
    "AllocatedCapacity": {
      "description": "The number of capacity units that are allocated to this job.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Command": {
      "description": "The code that executes a job.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Connections": {
      "description": "The connections used for this job.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DefaultArguments": {
      "description": "The default arguments for this job, specified as name-value pairs.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the job.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ExecutionProperty": {
      "description": "The maximum number of concurrent runs that are allowed for this job.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "LogUri": {
      "description": "This field is reserved for future use.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MaxRetries": {
      "description": "The maximum number of times to retry this job after a JobRun fails.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name you assign to this job definition.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Role": {
      "description": "The name or Amazon Resource Name (ARN) of the IAM role associated with this job.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "SecurityConfiguration": {
      "description": "The name of the SecurityConfiguration structure to be used with this job.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags to use with this job.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-glue-job.html",
  "properties": [
    "AllocatedCapacity",
    "Command",
    "Connections",
    "DefaultArguments",
    "Description",
    "ExecutionProperty",
    "LogUri",
    "MaxRetries",
    "Name",
    "Role",
    "SecurityConfiguration",
    "Tags"
  ]
},
"AWS::Glue::Partition": {
  "full_properties": {
    "CatalogId": {
      "description": "The AWS account ID of the catalog in which the partion is to be created.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DatabaseName": {
      "description": "The name of the catalog database in which to create the partition.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "PartitionInput": {
      "description": "The structure used to create and update a partition.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TableName": {
      "description": "The name of the metadata table in which the partition is to be created.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-glue-partition.html",
  "properties": [
    "CatalogId",
    "DatabaseName",
    "PartitionInput",
    "TableName"
  ]
},
"AWS::Glue::SecurityConfiguration": {
  "full_properties": {
    "EncryptionConfiguration": {
      "description": "The encryption configuration associated with this security configuration.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the security configuration.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-glue-securityconfiguration.html",
  "properties": [
    "EncryptionConfiguration",
    "Name"
  ]
},
"AWS::Glue::Table": {
  "full_properties": {
    "CatalogId": {
      "description": "The ID of the Data Catalog in which to create the Table. If none is supplied, the AWS account ID is used by default.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DatabaseName": {
      "description": "The name of the database where the table metadata resides. For Hive compatibility, this must be all lowercase.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TableInput": {
      "description": "A structure used to define a table.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-glue-table.html",
  "properties": [
    "CatalogId",
    "DatabaseName",
    "TableInput"
  ]
},
"AWS::Glue::Trigger": {
  "full_properties": {
    "Actions": {
      "description": "The actions initiated by this trigger.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of this trigger.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the trigger.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Predicate": {
      "description": "The predicate of this trigger, which defines when it will fire.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Schedule": {
      "description": "A cron expression used to specify the schedule. For more information, see Time-Based Schedules for Jobs and Crawlers in the AWS Glue Developer Guide. For example, to run something every day at 12:15 UTC, specify cron(15 12 * * ? *).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags to use with this trigger.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Type": {
      "description": "The type of trigger that this is.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-glue-trigger.html",
  "properties": [
    "Actions",
    "Description",
    "Name",
    "Predicate",
    "Schedule",
    "Tags",
    "Type"
  ]
},
"AWS::Greengrass::ConnectorDefinition": {
  "full_properties": {
    "InitialVersion": {
      "description": "The connector definition version to include when the connector definition is created.  A connector definition version contains a list of connector property types.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the connector definition.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-greengrass-connectordefinition.html",
  "properties": [
    "InitialVersion",
    "Name"
  ]
},
"AWS::Greengrass::ConnectorDefinitionVersion": {
  "full_properties": {
    "ConnectorDefinitionId": {
      "description": "The ID of the connector definition associated with this version. This value is a GUID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Connectors": {
      "description": "The connectors in this version. Only one instance of a given connector can be added to the connector definition version at a time.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-greengrass-connectordefinitionversion.html",
  "properties": [
    "ConnectorDefinitionId",
    "Connectors"
  ]
},
"AWS::Greengrass::CoreDefinition": {
  "full_properties": {
    "InitialVersion": {
      "description": "The core definition version to include when the core definition is created. Currently, a core definition version can contain only one core.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the core definition.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-greengrass-coredefinition.html",
  "properties": [
    "InitialVersion",
    "Name"
  ]
},
"AWS::Greengrass::CoreDefinitionVersion": {
  "full_properties": {
    "CoreDefinitionId": {
      "description": "The ID of the core definition associated with this version. This value is a GUID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Cores": {
      "description": "The Greengrass core in this version. Currently, the Cores property for a core definition version can contain only one core.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-greengrass-coredefinitionversion.html",
  "properties": [
    "CoreDefinitionId",
    "Cores"
  ]
},
"AWS::Greengrass::DeviceDefinition": {
  "full_properties": {
    "InitialVersion": {
      "description": "The device definition version to include when the device definition is created. A device definition version contains a list of device property types.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the device definition.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-greengrass-devicedefinition.html",
  "properties": [
    "InitialVersion",
    "Name"
  ]
},
"AWS::Greengrass::DeviceDefinitionVersion": {
  "full_properties": {
    "DeviceDefinitionId": {
      "description": "The ID of the device definition associated with this version. This value is a GUID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Devices": {
      "description": "The devices in this version.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-greengrass-devicedefinitionversion.html",
  "properties": [
    "DeviceDefinitionId",
    "Devices"
  ]
},
"AWS::Greengrass::FunctionDefinition": {
  "full_properties": {
    "InitialVersion": {
      "description": "The function definition version to include when the function definition is created.  A function definition version contains a list of function property types.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the function definition.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-greengrass-functiondefinition.html",
  "properties": [
    "InitialVersion",
    "Name"
  ]
},
"AWS::Greengrass::FunctionDefinitionVersion": {
  "full_properties": {
    "DefaultConfig": {
      "description": "The default configuration that applies to all Lambda functions in the group. Individual Lambda functions can override these settings.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "FunctionDefinitionId": {
      "description": "The ID of the function definition associated with this version. This value is a GUID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Functions": {
      "description": "The functions in this version.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-greengrass-functiondefinitionversion.html",
  "properties": [
    "DefaultConfig",
    "FunctionDefinitionId",
    "Functions"
  ]
},
"AWS::Greengrass::Group": {
  "full_properties": {
    "InitialVersion": {
      "description": "The group version to include when the group is created. A group version references the Amazon Resource Name (ARN) of a core definition version,  device definition version, subscription definition version, and other version types.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The Amazon Resource Name (ARN) of the IAM role attached to the group. This role contains the permissions that Lambda functions and connectors use to interact with other AWS services.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-greengrass-group.html",
  "properties": [
    "InitialVersion",
    "Name",
    "RoleArn"
  ]
},
"AWS::Greengrass::GroupVersion": {
  "full_properties": {
    "ConnectorDefinitionVersionArn": {
      "description": "The Amazon Resource Name (ARN) of the connector definition version that contains the connectors you want to deploy with the group version.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "CoreDefinitionVersionArn": {
      "description": "The ARN of the core definition version that contains the core you want to deploy with the group version. Currently, the core definition version can contain only one core.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DeviceDefinitionVersionArn": {
      "description": "The ARN of the device definition version that contains the devices you want to deploy with the group version.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "FunctionDefinitionVersionArn": {
      "description": "The ARN of the function definition version that contains the functions you want to deploy with the group version.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "GroupId": {
      "description": "The ID of the group associated with this version. This value is a GUID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "LoggerDefinitionVersionArn": {
      "description": "The ARN of the  logger definition version that contains the loggers you want to deploy with the group version.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ResourceDefinitionVersionArn": {
      "description": "The ARN of the resource definition version that contains the resources you want to deploy with the group version.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubscriptionDefinitionVersionArn": {
      "description": "The ARN of the subscription definition version that contains the subscriptions you want to deploy with the group version.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-greengrass-groupversion.html",
  "properties": [
    "ConnectorDefinitionVersionArn",
    "CoreDefinitionVersionArn",
    "DeviceDefinitionVersionArn",
    "FunctionDefinitionVersionArn",
    "GroupId",
    "LoggerDefinitionVersionArn",
    "ResourceDefinitionVersionArn",
    "SubscriptionDefinitionVersionArn"
  ]
},
"AWS::Greengrass::LoggerDefinition": {
  "full_properties": {
    "InitialVersion": {
      "description": "The logger definition version to include when the logger definition is created. A logger definition version contains a list of logger property types.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the logger definition.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-greengrass-loggerdefinition.html",
  "properties": [
    "InitialVersion",
    "Name"
  ]
},
"AWS::Greengrass::LoggerDefinitionVersion": {
  "full_properties": {
    "LoggerDefinitionId": {
      "description": "The ID of the logger definition associated with this version. This value is a GUID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Loggers": {
      "description": "The loggers in this version.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-greengrass-loggerdefinitionversion.html",
  "properties": [
    "LoggerDefinitionId",
    "Loggers"
  ]
},
"AWS::Greengrass::ResourceDefinition": {
  "full_properties": {
    "InitialVersion": {
      "description": "The resource definition version to include when the resource definition is created.  A resource definition version contains a list of resource instance property types.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the resource definition.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-greengrass-resourcedefinition.html",
  "properties": [
    "InitialVersion",
    "Name"
  ]
},
"AWS::Greengrass::ResourceDefinitionVersion": {
  "full_properties": {
    "ResourceDefinitionId": {
      "description": "The ID of the resource definition associated with this version. This value is a GUID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Resources": {
      "description": "The resources in this version.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-greengrass-resourcedefinitionversion.html",
  "properties": [
    "ResourceDefinitionId",
    "Resources"
  ]
},
"AWS::Greengrass::SubscriptionDefinition": {
  "full_properties": {
    "InitialVersion": {
      "description": "The subscription definition version to include when the subscription definition is created. A subscription definition version contains a list of  subscription property types.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the subscription definition.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-greengrass-subscriptiondefinition.html",
  "properties": [
    "InitialVersion",
    "Name"
  ]
},
"AWS::Greengrass::SubscriptionDefinitionVersion": {
  "full_properties": {
    "SubscriptionDefinitionId": {
      "description": "The ID of the subscription definition associated with this version. This value is a GUID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Subscriptions": {
      "description": "The subscriptions in this version.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-greengrass-subscriptiondefinitionversion.html",
  "properties": [
    "SubscriptionDefinitionId",
    "Subscriptions"
  ]
},
"AWS::GuardDuty::Detector": {
  "full_properties": {
    "Enable": {
      "description": "Specifies whether or not to enable the detector.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "FindingPublishingFrequency": {
      "description": "A enumeration value that specifies how frequently finding updates are published. Valid values include: FIFTEEN_MINUTES | ONE_HOUR | SIX_HOURS. The default value is SIX_HOURS.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-guardduty-detector.html",
  "properties": [
    "Enable",
    "FindingPublishingFrequency"
  ]
},
"AWS::GuardDuty::Filter": {
  "full_properties": {
    "Action": {
      "description": "Specifies the action that is to be applied to the findings that match the filter.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the filter.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DetectorId": {
      "description": "The ID of the detector to associate the Filter with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "FindingCriteria": {
      "description": "Represents the criteria to be used in the filter for querying findings.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the filter.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Rank": {
      "description": "Specifies the position of the filter in the list of current filters. Also specifies the order in which this filter is applied to the findings.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-guardduty-filter.html",
  "properties": [
    "Action",
    "Description",
    "DetectorId",
    "FindingCriteria",
    "Name",
    "Rank"
  ]
},
"AWS::GuardDuty::IPSet": {
  "full_properties": {
    "Activate": {
      "description": "Indicated whether or not GuardDuty uses the IPSet.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "DetectorId": {
      "description": "The unique ID of the detector for the GuardDuty service to associate the IPSet with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Format": {
      "description": "The format of the file that contains the IPSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Location": {
      "description": "The URI of the file that contains the IPSet.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name for the IPSet. This name is displayed in all findings that are triggered by activity associated with the IP addresses included in this IPSet.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-guardduty-ipset.html",
  "properties": [
    "Activate",
    "DetectorId",
    "Format",
    "Location",
    "Name"
  ]
},
"AWS::GuardDuty::Master": {
  "full_properties": {
    "DetectorId": {
      "description": "The unique ID of the detector associated with the GuardDuty master account.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "InvitationId": {
      "description": "The ID of the invitation that is sent to the account designated as a member account. You can find the invitation ID by using the ListInvitation action of the GuardDuty API.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "MasterId": {
      "description": "The AWS account ID of the account designated as the GuardDuty master account.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-guardduty-master.html",
  "properties": [
    "DetectorId",
    "InvitationId",
    "MasterId"
  ]
},
"AWS::GuardDuty::Member": {
  "full_properties": {
    "DetectorId": {
      "description": "The ID of the detector associated with the GuardDuty service to add the member to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DisableEmailNotification": {
      "description": "Specifies whether or not to disable email notification for the member account that you invite.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Email": {
      "description": "The email address associated with the member account.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "MemberId": {
      "description": "The AWS account ID of the account to designate as a member.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Message": {
      "description": "The message to include with the invitation sent to the member accounts.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Status": {
      "description": "You can use the Status property to update the status of the relationship between the member account and its master account. Valid values are Created and Invited when using a AWS::GuardDuty::Member resource. If the value for this property is not provided or set to Created, a member account is created but not invited. If the value of this property is set to Invited, a member account is created and invited.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-guardduty-member.html",
  "properties": [
    "DetectorId",
    "DisableEmailNotification",
    "Email",
    "MemberId",
    "Message",
    "Status"
  ]
},
"AWS::GuardDuty::ThreatIntelSet": {
  "full_properties": {
    "Activate": {
      "description": "Specifies whether or not GuardDuty uses the ThreatIntelSet.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "DetectorId": {
      "description": "The ID of the detector to associate the ThreatIntelSet with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Format": {
      "description": "The format of the file that contains the ThreatIntelSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Location": {
      "description": "The URI of the file that contains the ThreatIntelSet.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "A name for the ThreatIntelSet. The name is displayed in all finding generated by activity associated with the IP addresses included in this ThreatIntelSet.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-guardduty-threatintelset.html",
  "properties": [
    "Activate",
    "DetectorId",
    "Format",
    "Location",
    "Name"
  ]
},
"AWS::IAM::AccessKey": {
  "full_properties": {
    "Serial": {
      "description": "This value is specific to CloudFormation and can only be incremented. Incrementing this value notifies CloudFormation that you want to rotate your access key. When you update your stack, CloudFormation will replace the existing access key with a new key.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "Status": {
      "description": "The status of the access key. Active means that the key is valid for API calls, while Inactive means it is not.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "UserName": {
      "description": "The name of the IAM user that the new key will belong to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-properties-iam-accesskey.html",
  "properties": [
    "Serial",
    "Status",
    "UserName"
  ]
},
"AWS::IAM::Group": {
  "full_properties": {
    "GroupName": {
      "description": "The name of the group to create. Do not include the path in this value.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ManagedPolicyArns": {
      "description": "The Amazon Resource Name (ARN) of the IAM policy you want to attach.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Path": {
      "description": "The path to the group. For more information about paths, see IAM Identifiers in the IAM User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Policies": {
      "description": "Adds or updates an inline policy document that is embedded in the specified IAM group. To view AWS::IAM::Group snippets, see Declaring an IAM Group Resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-iam-group.html",
  "properties": [
    "GroupName",
    "ManagedPolicyArns",
    "Path",
    "Policies"
  ]
},
"AWS::IAM::InstanceProfile": {
  "full_properties": {
    "InstanceProfileName": {
      "description": "The name of the instance profile to create.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Path": {
      "description": "The path to the instance profile. For more information about paths, see IAM Identifiers in the IAM User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Roles": {
      "description": "The role associated with the instance profile.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iam-instanceprofile.html",
  "properties": [
    "InstanceProfileName",
    "Path",
    "Roles"
  ]
},
"AWS::IAM::ManagedPolicy": {
  "full_properties": {
    "Description": {
      "description": "A friendly description of the policy.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Groups": {
      "description": "The name (friendly name, not ARN) of the group to attach the policy to.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ManagedPolicyName": {
      "description": "The friendly name of the policy.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Path": {
      "description": "The path for the policy.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PolicyDocument": {
      "description": "The JSON policy document that you want to use as the content for the new policy.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Roles": {
      "description": "The name (friendly name, not ARN) of the role to attach the policy to.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Users": {
      "description": "The name (friendly name, not ARN) of the IAM user to attach the policy to.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iam-managedpolicy.html",
  "properties": [
    "Description",
    "Groups",
    "ManagedPolicyName",
    "Path",
    "PolicyDocument",
    "Roles",
    "Users"
  ]
},
"AWS::IAM::Policy": {
  "full_properties": {
    "Groups": {
      "description": "The name of the group to associate the policy with.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "PolicyDocument": {
      "description": "The policy document.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "PolicyName": {
      "description": "The name of the policy document.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Roles": {
      "description": "The name of the role to associate the policy with.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Users": {
      "description": "The name of the user to associate the policy with.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iam-policy.html",
  "properties": [
    "Groups",
    "PolicyDocument",
    "PolicyName",
    "Roles",
    "Users"
  ]
},
"AWS::IAM::Role": {
  "full_properties": {
    "AssumeRolePolicyDocument": {
      "description": "The trust policy that is associated with this role. Trust policies define which entities can assume the role. You can associate only one trust policy with a role. For an example of a policy that can be used to assume a role, see Template Examples. For more information about the elements that you can use in an IAM policy, see IAM Policy Elements Reference in the IAM User Guide.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ManagedPolicyArns": {
      "description": "A list of Amazon Resource Names (ARNs) of the IAM managed policies that you want to attach to the user.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "MaxSessionDuration": {
      "description": "The maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Path": {
      "description": "The path to the role. For more information about paths, see IAM Identifiers in the IAM User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PermissionsBoundary": {
      "description": "The ARN of the policy used to set the permissions boundary for the role.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Policies": {
      "description": "Adds or updates an inline policy document that is embedded in the specified IAM role.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "RoleName": {
      "description": "A name for the IAM role. For valid values, see the RoleName parameter for the CreateRole action in the IAM User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-iam-role.html",
  "properties": [
    "AssumeRolePolicyDocument",
    "ManagedPolicyArns",
    "MaxSessionDuration",
    "Path",
    "PermissionsBoundary",
    "Policies",
    "RoleName"
  ]
},
"AWS::IAM::ServiceLinkedRole": {
  "full_properties": {
    "AWSServiceName": {
      "description": "The service principal for the AWS service to which this role is attached. You use a string similar to a URL but without the http:// in front. For example: elasticbeanstalk.amazonaws.com.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "CustomSuffix": {
      "description": "A string that you provide, which is combined with the service-provided prefix to form the complete role name. If you make multiple requests for the same service, then you must supply a different CustomSuffix for each request. Otherwise the request fails with a duplicate role name error. For example, you could add -1 or -debug to the suffix.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The description of the role.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iam-servicelinkedrole.html",
  "properties": [
    "AWSServiceName",
    "CustomSuffix",
    "Description"
  ]
},
"AWS::IAM::User": {
  "full_properties": {
    "Groups": {
      "description": "A list of groups to which you want to add the user.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "LoginProfile": {
      "description": "Creates a password for the specified user, giving the user the ability to access AWS services through the AWS Management Console. For more information about managing passwords, see Managing Passwords in the IAM User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ManagedPolicyArns": {
      "description": "A list of Amazon Resource Names (ARNs) of the IAM managed policies that you want to attach to the user.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Path": {
      "description": "The path for the user name. For more information about paths, see IAM Identifiers in the IAM User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PermissionsBoundary": {
      "description": "The ARN of the policy that is used to set the permissions boundary for the user.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Policies": {
      "description": "Adds or updates an inline policy document that is embedded in the specified IAM user. To view AWS::IAM::User snippets, see Declaring an IAM User Resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "UserName": {
      "description": "The name of the user to create. Do not include the path in this value.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-properties-iam-user.html",
  "properties": [
    "Groups",
    "LoginProfile",
    "ManagedPolicyArns",
    "Path",
    "PermissionsBoundary",
    "Policies",
    "UserName"
  ]
},
"AWS::IAM::UserToGroupAddition": {
  "full_properties": {
    "GroupName": {
      "description": "The name of the group to update.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Users": {
      "description": "A list of the names of the users that you want to add to the group.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-iam-addusertogroup.html",
  "properties": [
    "GroupName",
    "Users"
  ]
},
"AWS::Inspector::AssessmentTarget": {
  "full_properties": {
    "AssessmentTargetName": {
      "description": "The name of the Amazon Inspector assessment target. The name must be unique within the AWS account.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ResourceGroupArn": {
      "description": "The ARN that specifies the resource group that is used to create the assessment target. If resourceGroupArn is not specified, all EC2 instances in the current AWS account and Region are included in the assessment target.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-inspector-assessmenttarget.html",
  "properties": [
    "AssessmentTargetName",
    "ResourceGroupArn"
  ]
},
"AWS::Inspector::AssessmentTemplate": {
  "full_properties": {
    "AssessmentTargetArn": {
      "description": "The ARN of the assessment target to be included in the assessment template.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "AssessmentTemplateName": {
      "description": "The user-defined name that identifies the assessment template that you want to create. You can create several assessment templates for the same assessment target. The names of the assessment templates that correspond to a particular assessment target must be unique.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DurationInSeconds": {
      "description": "The duration of the assessment run in seconds.",
      "required": true,
      "type": "Number",
      "update_causes": "replacement"
    },
    "RulesPackageArns": {
      "description": "The ARNs of the rules packages that you want to use in the assessment template.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    },
    "UserAttributesForFindings": {
      "description": "The user-defined attributes that are assigned to every finding that is generated by the assessment run that uses this assessment template. Within an assessment template, each key must be unique.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-inspector-assessmenttemplate.html",
  "properties": [
    "AssessmentTargetArn",
    "AssessmentTemplateName",
    "DurationInSeconds",
    "RulesPackageArns",
    "UserAttributesForFindings"
  ]
},
"AWS::Inspector::ResourceGroup": {
  "full_properties": {
    "ResourceGroupTags": {
      "description": "The tags (key and value pairs) that will be associated with the resource group.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-inspector-resourcegroup.html",
  "properties": [
    "ResourceGroupTags"
  ]
},
"AWS::IoT1Click::Device": {
  "full_properties": {
    "DeviceId": {
      "description": "The ID of the device, such as G030PX0312744DWM.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Enabled": {
      "description": "A Boolean value indicating whether the device is enabled (true) or not (false).",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iot1click-device.html",
  "properties": [
    "DeviceId",
    "Enabled"
  ]
},
"AWS::IoT1Click::Placement": {
  "full_properties": {
    "AssociatedDevices": {
      "description": "The devices to associate with the placement, as defined by a mapping of zero or more key-value pairs wherein the key is a template name and the value is a device ID.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Attributes": {
      "description": "The user-defined attributes associated with the placement.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "PlacementName": {
      "description": "The name of the placement.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProjectName": {
      "description": "The name of the project containing the placement.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-iot1click-placement.html",
  "properties": [
    "AssociatedDevices",
    "Attributes",
    "PlacementName",
    "ProjectName"
  ]
},
"AWS::IoT1Click::Project": {
  "full_properties": {
    "Description": {
      "description": "The description of the project.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PlacementTemplate": {
      "description": "An object describing the project's placement specifications.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ProjectName": {
      "description": "The name of the project from which to obtain information.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-iot1click-project.html",
  "properties": [
    "Description",
    "PlacementTemplate",
    "ProjectName"
  ]
},
"AWS::IoT::Certificate": {
  "full_properties": {
    "CertificateSigningRequest": {
      "description": "The certificate signing request (CSR).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Status": {
      "description": "The status of the certificate.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iot-certificate.html",
  "properties": [
    "CertificateSigningRequest",
    "Status"
  ]
},
"AWS::IoT::Policy": {
  "full_properties": {
    "PolicyDocument": {
      "description": "The JSON document that describes the policy.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "PolicyName": {
      "description": "The policy name.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-iot-policy.html",
  "properties": [
    "PolicyDocument",
    "PolicyName"
  ]
},
"AWS::IoT::PolicyPrincipalAttachment": {
  "full_properties": {
    "PolicyName": {
      "description": "The name of the AWS IoT policy.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Principal": {
      "description": "The principal, which can be a certificate ARN (as returned from the CreateCertificate operation) or an Amazon Cognito ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-iot-policyprincipalattachment.html",
  "properties": [
    "PolicyName",
    "Principal"
  ]
},
"AWS::IoT::Thing": {
  "full_properties": {
    "AttributePayload": {
      "description": "A string that contains up to three key–value pairs. Maximum length of 800. Duplicates not allowed.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ThingName": {
      "description": "The name of the thing to update.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-iot-thing.html",
  "properties": [
    "AttributePayload",
    "ThingName"
  ]
},
"AWS::IoT::ThingPrincipalAttachment": {
  "full_properties": {
    "Principal": {
      "description": "The principal, which can be a certificate ARN (as returned from the CreateCertificate operation) or an Amazon Cognito ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ThingName": {
      "description": "The name of the AWS IoT thing.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-iot-thingprincipalattachment.html",
  "properties": [
    "Principal",
    "ThingName"
  ]
},
"AWS::IoT::TopicRule": {
  "full_properties": {
    "RuleName": {
      "description": "The name of the rule.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "TopicRulePayload": {
      "description": "The rule payload.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iot-topicrule.html",
  "properties": [
    "RuleName",
    "TopicRulePayload"
  ]
},
"AWS::IoTAnalytics::Channel": {
  "full_properties": {
    "ChannelName": {
      "description": "The name of the channel.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ChannelStorage": {
      "description": "Where channel data is stored.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RetentionPeriod": {
      "description": "How long, in days, message data is kept for the channel.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Metadata which can be used to manage the channel.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iotanalytics-channel.html",
  "properties": [
    "ChannelName",
    "ChannelStorage",
    "RetentionPeriod",
    "Tags"
  ]
},
"AWS::IoTAnalytics::Dataset": {
  "full_properties": {
    "Actions": {
      "description": "The \"DatasetAction\" objects that automatically create the data set contents.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "ContentDeliveryRules": {
      "description": "When data set contents are created they are delivered to destinations specified here.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "DatasetName": {
      "description": "The name of the data set.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RetentionPeriod": {
      "description": "[Optional] How long, in days, message data is kept for the data set.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Metadata which can be used to manage the data set.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Triggers": {
      "description": "The \"DatasetTrigger\" objects that specify when the data set is automatically updated.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VersioningConfiguration": {
      "description": "[Optional] How many versions of data set contents are kept. If not specified or set to null, only the latest version plus the latest succeeded version (if they are different) are kept for the time period specified by the \"retentionPeriod\" parameter. (For more information, see https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html#aws-iot-analytics-dataset-versions)",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iotanalytics-dataset.html",
  "properties": [
    "Actions",
    "ContentDeliveryRules",
    "DatasetName",
    "RetentionPeriod",
    "Tags",
    "Triggers",
    "VersioningConfiguration"
  ]
},
"AWS::IoTAnalytics::Datastore": {
  "full_properties": {
    "DatastoreName": {
      "description": "The name of the data store.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DatastoreStorage": {
      "description": "Where data store data is stored.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RetentionPeriod": {
      "description": "How long, in days, message data is kept for the data store. When \"customerManagedS3\" storage is selected, this parameter is ignored.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Metadata which can be used to manage the data store.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iotanalytics-datastore.html",
  "properties": [
    "DatastoreName",
    "DatastoreStorage",
    "RetentionPeriod",
    "Tags"
  ]
},
"AWS::IoTAnalytics::Pipeline": {
  "full_properties": {
    "PipelineActivities": {
      "description": "A list of \"PipelineActivity\" objects. Activities perform transformations on your messages,  such as removing, renaming or adding message attributes; filtering messages based on attribute values; invoking your Lambda functions on messages for advanced processing; or performing  mathematical transformations to normalize device data.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "PipelineName": {
      "description": "The name of the pipeline.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Metadata which can be used to manage the pipeline.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iotanalytics-pipeline.html",
  "properties": [
    "PipelineActivities",
    "PipelineName",
    "Tags"
  ]
},
"AWS::IoTEvents::DetectorModel": {
  "full_properties": {
    "DetectorModelDefinition": {
      "description": "Information that defines how a detector operates.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DetectorModelDescription": {
      "description": "A brief description of the detector model.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DetectorModelName": {
      "description": "The name of the detector model.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Key": {
      "description": "The input attribute key used to identify a device or system to create a detector (an  instance of the detector model) and then to route each input received to the appropriate detector (instance). This parameter uses a JSON-path expression to specify the attribute-value pair in the message payload of each input that is used to identify the device associated with the input.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RoleArn": {
      "description": "The ARN of the role that grants permission to AWS IoT Events to perform its operations.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iotevents-detectormodel.html",
  "properties": [
    "DetectorModelDefinition",
    "DetectorModelDescription",
    "DetectorModelName",
    "Key",
    "RoleArn",
    "Tags"
  ]
},
"AWS::IoTEvents::Input": {
  "full_properties": {
    "InputDefinition": {
      "description": "The definition of the input.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "InputDescription": {
      "description": "A brief description of the input.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InputName": {
      "description": "The name of the input.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iotevents-input.html",
  "properties": [
    "InputDefinition",
    "InputDescription",
    "InputName",
    "Tags"
  ]
},
"AWS::IoTThingsGraph::FlowTemplate": {
  "full_properties": {
    "CompatibleNamespaceVersion": {
      "description": "The version of the user's namespace against which the workflow was validated. Use this value in your system instance.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Definition": {
      "description": "A workflow's definition document.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-iotthingsgraph-flowtemplate.html",
  "properties": [
    "CompatibleNamespaceVersion",
    "Definition"
  ]
},
"AWS::KMS::Alias": {
  "full_properties": {
    "AliasName": {
      "description": "Specifies the alias name. This value must begin with alias/ followed by a name, such as alias/ExampleAlias. The alias name cannot begin with alias/aws/. The alias/aws/ prefix is reserved for AWS managed CMKs.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TargetKeyId": {
      "description": "Identifies the CMK to which the alias refers. Specify the key ID or the Amazon Resource Name (ARN) of the CMK. You cannot specify another alias. For help finding the key ID and ARN, see Finding the Key ID and ARN in the AWS Key Management Service Developer Guide.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kms-alias.html",
  "properties": [
    "AliasName",
    "TargetKeyId"
  ]
},
"AWS::KMS::Key": {
  "full_properties": {
    "Description": {
      "description": "A description of the CMK. Use a description that helps you to distinguish this CMK from others in the account, such as its intended use.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EnableKeyRotation": {
      "description": "Enables automatic rotation of the key material for the specified customer master key (CMK). By default, automation key rotation is not enabled.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Enabled": {
      "description": "Specifies whether the customer master key (CMK) is enabled. Disabled CMKs cannot be used in cryptographic operations.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "KeyPolicy": {
      "description": "The key policy that authorizes use of the CMK. The key policy must observe the following rules.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "KeyUsage": {
      "description": "The cryptographic operations for which you can use the CMK. The only valid value is ENCRYPT_DECRYPT, which means you can use the CMK to encrypt and decrypt data.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PendingWindowInDays": {
      "description": "Specifies the number of days in the waiting period before AWS KMS deletes a CMK that has been removed from a CloudFormation stack. Enter a value between 7 and 30 days. The default value is 30 days.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kms-key.html",
  "properties": [
    "Description",
    "Enabled",
    "EnableKeyRotation",
    "KeyPolicy",
    "KeyUsage",
    "PendingWindowInDays",
    "Tags"
  ]
},
"AWS::Kinesis::Stream": {
  "full_properties": {
    "Name": {
      "description": "The name of the Kinesis stream. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the stream name. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "RetentionPeriodHours": {
      "description": "The number of hours for the data records that are stored in shards to remain accessible. The default value is 24. For more information about the stream retention period, see Changing the Data Retention Period in the Amazon Kinesis Developer Guide.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "ShardCount": {
      "description": "The number of shards that the stream uses. For greater provisioned throughput, increase the number of shards.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "StreamEncryption": {
      "description": "Enables or updates server-side encryption using an AWS KMS key for a specified stream.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An arbitrary set of tags (key–value pairs) to associate with the Kinesis stream. For information about constraints for this property, see Tag Restrictions in the Amazon Kinesis Developer Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kinesis-stream.html",
  "properties": [
    "Name",
    "RetentionPeriodHours",
    "ShardCount",
    "StreamEncryption",
    "Tags"
  ]
},
"AWS::Kinesis::StreamConsumer": {
  "full_properties": {
    "ConsumerName": {
      "description": "The name of the consumer is something you choose when you register the consumer.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "StreamARN": {
      "description": "The ARN of the stream with which you registered the consumer.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-kinesis-streamconsumer.html",
  "properties": [
    "ConsumerName",
    "StreamARN"
  ]
},
"AWS::KinesisAnalytics::Application": {
  "full_properties": {
    "ApplicationCode": {
      "description": "One or more SQL statements that read input data, transform it, and generate output. For example, you can write a SQL statement that reads data from one in-application stream, generates a running average of the number of advertisement clicks by vendor, and insert resulting rows in another in-application stream using pumps. For more information about the typical pattern, see Application Code.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ApplicationDescription": {
      "description": "Summary description of the application.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ApplicationName": {
      "description": "Name of your Amazon Kinesis Analytics application (for example, sample-app).",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Inputs": {
      "description": "Use this parameter to configure the application input.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kinesisanalytics-application.html",
  "properties": [
    "ApplicationCode",
    "ApplicationDescription",
    "ApplicationName",
    "Inputs"
  ]
},
"AWS::KinesisAnalytics::ApplicationOutput": {
  "full_properties": {
    "ApplicationName": {
      "description": "Name of the application to which you want to add the output configuration.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Output": {
      "description": "An array of objects, each describing one output configuration. In the output configuration, you specify the name of an in-application stream, a destination (that is, an Amazon Kinesis stream, an Amazon Kinesis Firehose delivery stream, or an AWS Lambda function), and record the formation to use when writing to the destination.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kinesisanalytics-applicationoutput.html",
  "properties": [
    "ApplicationName",
    "Output"
  ]
},
"AWS::KinesisAnalytics::ApplicationReferenceDataSource": {
  "full_properties": {
    "ApplicationName": {
      "description": "Name of an existing application.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ReferenceDataSource": {
      "description": "The reference data source can be an object in your Amazon S3 bucket. Amazon Kinesis Analytics reads the object and copies the data into the in-application table that is created. You provide an S3 bucket, object key name, and the resulting in-application table that is created. You must also provide an IAM role with the necessary permissions that Amazon Kinesis Analytics can assume to read the object from your S3 bucket on your behalf.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kinesisanalytics-applicationreferencedatasource.html",
  "properties": [
    "ApplicationName",
    "ReferenceDataSource"
  ]
},
"AWS::KinesisAnalyticsV2::Application": {
  "full_properties": {
    "ApplicationConfiguration": {
      "description": "Use this parameter to configure the application.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ApplicationDescription": {
      "description": "The description of the application.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ApplicationName": {
      "description": "The name of the application.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RuntimeEnvironment": {
      "description": "The runtime environment for the application (SQL-1.0 or FLINK-1_6).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ServiceExecutionRole": {
      "description": "Specifies the IAM role that the application uses to access external resources.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kinesisanalyticsv2-application.html",
  "properties": [
    "ApplicationConfiguration",
    "ApplicationDescription",
    "ApplicationName",
    "RuntimeEnvironment",
    "ServiceExecutionRole"
  ]
},
"AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption": {
  "full_properties": {
    "ApplicationName": {
      "description": "The name of the application.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "CloudWatchLoggingOption": {
      "description": "Provides a description of Amazon CloudWatch logging options, including the log stream Amazon Resource Name (ARN).",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kinesisanalyticsv2-applicationcloudwatchloggingoption.html",
  "properties": [
    "ApplicationName",
    "CloudWatchLoggingOption"
  ]
},
"AWS::KinesisAnalyticsV2::ApplicationOutput": {
  "full_properties": {
    "ApplicationName": {
      "description": "The name of the application.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Output": {
      "description": "Describes an SQL-based Amazon Kinesis Data Analytics application's output configuration, in which you identify an in-application stream and a destination where you want the in-application stream data to be written. The destination can be a Kinesis data stream or a Kinesis Data Firehose delivery stream.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kinesisanalyticsv2-applicationoutput.html",
  "properties": [
    "ApplicationName",
    "Output"
  ]
},
"AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource": {
  "full_properties": {
    "ApplicationName": {
      "description": "The name of the application.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ReferenceDataSource": {
      "description": "For an SQL-based Amazon Kinesis Data Analytics application, describes the reference data source by providing the source information (Amazon S3 bucket name and object key name), the resulting in-application table name that is created, and the necessary schema to map the data elements in the Amazon S3 object to the in-application table.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kinesisanalyticsv2-applicationreferencedatasource.html",
  "properties": [
    "ApplicationName",
    "ReferenceDataSource"
  ]
},
"AWS::KinesisFirehose::DeliveryStream": {
  "full_properties": {
    "DeliveryStreamName": {
      "description": "The name of the delivery stream.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DeliveryStreamType": {
      "description": "The delivery stream type. This can be one of the following values:",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ElasticsearchDestinationConfiguration": {
      "description": "An Amazon ES destination for the delivery stream.",
      "required": false,
      "type": "Unknown",
      "update_causes": [
        "none",
        "interrupt"
      ]
    },
    "ExtendedS3DestinationConfiguration": {
      "description": "An Amazon S3 destination for the delivery stream.",
      "required": false,
      "type": "Unknown",
      "update_causes": [
        "none",
        "interrupt"
      ]
    },
    "KinesisStreamSourceConfiguration": {
      "description": "When a Kinesis stream is used as the source for the delivery stream, a KinesisStreamSourceConfiguration containing the Kinesis stream ARN and the role ARN for the source stream.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RedshiftDestinationConfiguration": {
      "description": "An Amazon Redshift destination for the delivery stream.",
      "required": false,
      "type": "Unknown",
      "update_causes": [
        "none",
        "interrupt"
      ]
    },
    "S3DestinationConfiguration": {
      "description": "The S3DestinationConfiguration property type specifies an Amazon Simple Storage Service (Amazon S3) destination to which Amazon Kinesis Data Firehose (Kinesis Data Firehose) delivers data.",
      "required": false,
      "type": "Unknown",
      "update_causes": [
        "none",
        "interrupt"
      ]
    },
    "SplunkDestinationConfiguration": {
      "description": "The configuration of a destination in Splunk for the delivery stream.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-kinesisfirehose-deliverystream.html",
  "properties": [
    "DeliveryStreamName",
    "DeliveryStreamType",
    "ElasticsearchDestinationConfiguration",
    "ExtendedS3DestinationConfiguration",
    "KinesisStreamSourceConfiguration",
    "RedshiftDestinationConfiguration",
    "S3DestinationConfiguration",
    "SplunkDestinationConfiguration"
  ]
},
"AWS::Lambda::Alias": {
  "full_properties": {
    "Description": {
      "description": "A description of the alias.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "FunctionName": {
      "description": "The name of the Lambda function.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "FunctionVersion": {
      "description": "The function version that the alias invokes.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the alias.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RoutingConfig": {
      "description": "The routing configuration of the alias.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-lambda-alias.html",
  "properties": [
    "Description",
    "FunctionName",
    "FunctionVersion",
    "Name",
    "RoutingConfig"
  ]
},
"AWS::Lambda::EventSourceMapping": {
  "full_properties": {
    "BatchSize": {
      "description": "The maximum number of items to retrieve in a single batch.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Enabled": {
      "description": "Disables the event source mapping to pause polling and invocation.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "EventSourceArn": {
      "description": "The Amazon Resource Name (ARN) of the event source.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "FunctionName": {
      "description": "The name of the Lambda function.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "StartingPosition": {
      "description": "The position in a stream from which to start reading. Required for Amazon Kinesis and Amazon DynamoDB Streams sources. AT_TIMESTAMP is only supported for Amazon Kinesis streams.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-lambda-eventsourcemapping.html",
  "properties": [
    "BatchSize",
    "Enabled",
    "EventSourceArn",
    "FunctionName",
    "StartingPosition"
  ]
},
"AWS::Lambda::Function": {
  "full_properties": {
    "Code": {
      "description": "The code for the function.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DeadLetterConfig": {
      "description": "A dead letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see Dead Letter Queues.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the function.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Environment": {
      "description": "Environment variables that are accessible from function code during execution.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "FunctionName": {
      "description": "The name of the Lambda function, up to 64 characters in length. If you don't specify a name, AWS CloudFormation generates one.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Handler": {
      "description": "The name of the method within your code that Lambda calls to execute your function. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see Programming Model.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "KmsKeyArn": {
      "description": "The ARN of the AWS Key Management Service (AWS KMS) key that's used to encrypt your function's environment variables. If it's not provided, AWS Lambda uses a default service key.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Layers": {
      "description": "A list of function layers to add to the function's execution environment. Specify each layer by its ARN, including the version.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "MemorySize": {
      "description": "The amount of memory that your function has access to. Increasing the function's memory also increases its CPU allocation. The default value is 128 MB. The value must be a multiple of 64 MB.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "ReservedConcurrentExecutions": {
      "description": "The number of simultaneous executions to reserve for the function.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Role": {
      "description": "The Amazon Resource Name (ARN) of the function's execution role.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Runtime": {
      "description": "The identifier of the function's runtime.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "A list of tags to apply to the function.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Timeout": {
      "description": "The amount of time that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "TracingConfig": {
      "description": "Set Mode to Active to sample and trace a subset of incoming requests with AWS X-Ray.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "VpcConfig": {
      "description": "For network connectivity to AWS resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can only access resources and the internet through that VPC. For more information, see VPC Settings.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-lambda-function.html",
  "properties": [
    "Code",
    "DeadLetterConfig",
    "Description",
    "Environment",
    "FunctionName",
    "Handler",
    "KmsKeyArn",
    "Layers",
    "MemorySize",
    "ReservedConcurrentExecutions",
    "Role",
    "Runtime",
    "Tags",
    "Timeout",
    "TracingConfig",
    "VpcConfig"
  ]
},
"AWS::Lambda::LayerVersion": {
  "full_properties": {
    "CompatibleRuntimes": {
      "description": "A list of compatible function runtimes. Used for filtering with ListLayers and ListLayerVersions.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Content": {
      "description": "The function layer archive.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Description": {
      "description": "The description of the version.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LayerName": {
      "description": "The name or Amazon Resource Name (ARN) of the layer.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LicenseInfo": {
      "description": "The layer's software license. It can be any of the following:",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-lambda-layerversion.html",
  "properties": [
    "CompatibleRuntimes",
    "Content",
    "Description",
    "LayerName",
    "LicenseInfo"
  ]
},
"AWS::Lambda::LayerVersionPermission": {
  "full_properties": {
    "Action": {
      "description": "The API action that grants access to the layer. For example, lambda:GetLayerVersion.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "LayerVersionArn": {
      "description": "The Amazon Resource Name (ARN) of the layer.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "OrganizationId": {
      "description": "With the principal set to *, grant permission to all accounts in the specified organization.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Principal": {
      "description": "An account ID, or * to grant permission to all AWS accounts.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-lambda-layerversionpermission.html",
  "properties": [
    "Action",
    "LayerVersionArn",
    "OrganizationId",
    "Principal"
  ]
},
"AWS::Lambda::Permission": {
  "full_properties": {
    "Action": {
      "description": "The action that the principal can use on the function. For example, lambda:InvokeFunction or lambda:GetFunction.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EventSourceToken": {
      "description": "For Alexa Smart Home functions, a token that must be supplied by the invoker.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "FunctionName": {
      "description": "The name of the Lambda function, version, or alias.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Principal": {
      "description": "The AWS service or account that invokes the function. If you specify a service, use SourceArn or SourceAccount to limit who can invoke the function through that service.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceAccount": {
      "description": "For AWS services, the ID of the account that owns the resource. Use this instead of SourceArn to grant permission to resources that are owned by another account (for example, all of an account's Amazon S3 buckets). Or use it together with SourceArn to ensure that the resource is owned by the specified account. For example, an Amazon S3 bucket could be deleted by its owner and recreated by another account.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceArn": {
      "description": "For AWS services, the ARN of the AWS resource that invokes the function. For example, an Amazon S3 bucket or Amazon SNS topic.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-lambda-permission.html",
  "properties": [
    "Action",
    "EventSourceToken",
    "FunctionName",
    "Principal",
    "SourceAccount",
    "SourceArn"
  ]
},
"AWS::Lambda::Version": {
  "full_properties": {
    "CodeSha256": {
      "description": "Only publish a version if the hash value matches the value that's specified. Use this option to avoid publishing a version if the function code has changed since you last updated it.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description for the version to override the description in the function configuration.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "FunctionName": {
      "description": "The name of the Lambda function.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-lambda-version.html",
  "properties": [
    "CodeSha256",
    "Description",
    "FunctionName"
  ]
},
"AWS::Logs::Destination": {
  "full_properties": {
    "DestinationName": {
      "description": "The name of the destination.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DestinationPolicy": {
      "description": "An IAM policy document that governs which AWS accounts can create subscription filters against this destination.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The ARN of an IAM role that permits CloudWatch Logs to send data to the specified AWS resource.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TargetArn": {
      "description": "The Amazon Resource Name (ARN) of the physical target to where the log events are delivered (for example, a Kinesis stream).",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-logs-destination.html",
  "properties": [
    "DestinationName",
    "DestinationPolicy",
    "RoleArn",
    "TargetArn"
  ]
},
"AWS::Logs::LogGroup": {
  "full_properties": {
    "LogGroupName": {
      "description": "The name of the log group. If you don't specify a name, AWS CloudFormation generates a unique ID for the log group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RetentionInDays": {
      "description": "The number of days to retain the log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, and 3653.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-logs-loggroup.html",
  "properties": [
    "LogGroupName",
    "RetentionInDays"
  ]
},
"AWS::Logs::LogStream": {
  "full_properties": {
    "LogGroupName": {
      "description": "The name of the log group where the log stream is created.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "LogStreamName": {
      "description": "The name of the log stream. The name must be unique within the log group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-logs-logstream.html",
  "properties": [
    "LogGroupName",
    "LogStreamName"
  ]
},
"AWS::Logs::MetricFilter": {
  "full_properties": {
    "FilterPattern": {
      "description": "A filter pattern for extracting metric data out of ingested log events.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "LogGroupName": {
      "description": "The name of an existing log group that you want to associate with this metric filter.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "MetricTransformations": {
      "description": "The metric transformations.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-logs-metricfilter.html",
  "properties": [
    "FilterPattern",
    "LogGroupName",
    "MetricTransformations"
  ]
},
"AWS::Logs::SubscriptionFilter": {
  "full_properties": {
    "DestinationArn": {
      "description": "The Amazon Resource Name (ARN) of the destination.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "FilterPattern": {
      "description": "The filtering expressions that restrict what gets delivered to the destination AWS resource. For more information about the filter pattern syntax, see Filter and Pattern Syntax.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "LogGroupName": {
      "description": "The log group to associate with the subscription filter. All log events that are uploaded to this log group are filtered and delivered to the specified AWS resource if the filter pattern matches the log events.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RoleArn": {
      "description": "The ARN of an IAM role that grants CloudWatch Logs permissions to deliver ingested log events to the destination stream.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-logs-subscriptionfilter.html",
  "properties": [
    "DestinationArn",
    "FilterPattern",
    "LogGroupName",
    "RoleArn"
  ]
},
"AWS::MSK::Cluster": {
  "full_properties": {
    "BrokerNodeGroupInfo": {
      "description": "The setup to be used for brokers in the cluster.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "ClientAuthentication": {
      "description": "Includes information related to client authentication.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "ClusterName": {
      "description": "The name of the cluster.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ConfigurationInfo": {
      "description": "The Amazon MSK configuration to use for the cluster.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "EncryptionInfo": {
      "description": "Includes all encryption-related information.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "EnhancedMonitoring": {
      "description": "Specifies the level of monitoring for the MSK cluster. The possible values are DEFAULT, PER_BROKER, and PER_TOPIC_PER_BROKER.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "KafkaVersion": {
      "description": "The version of Apache Kafka.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "NumberOfBrokerNodes": {
      "description": "The number of broker nodes you want in the Amazon MSK cluster.",
      "required": true,
      "type": "Number",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource. You can specify tags in JSON or in YAML, depending on which format you use for your template.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-msk-cluster.html",
  "properties": [
    "BrokerNodeGroupInfo",
    "ClientAuthentication",
    "ClusterName",
    "ConfigurationInfo",
    "EncryptionInfo",
    "EnhancedMonitoring",
    "KafkaVersion",
    "NumberOfBrokerNodes",
    "Tags"
  ]
},
"AWS::MediaLive::Channel": {
  "full_properties": {
    "ChannelClass": {
      "description": "The class for this channel. For a channel with two pipelines, the class is STANDARD. For a channel with one pipeline, the class is SINGLE_PIPELINE.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Destinations": {
      "description": "The settings that identify the destination for the outputs in this MediaLive output package.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "EncoderSettings": {
      "description": "The encoding configuration for the output content.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "InputAttachments": {
      "description": "The list of input attachments for the channel.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "InputSpecification": {
      "description": "The input specification for this channel. It specifies the key characteristics of the inputs for this channel: the maximum bitrate, the resolution, and the codec.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "LogLevel": {
      "description": "The verbosity for logging activity for this channel. Charges for logging (which are generated through Amazon CloudWatch Logging) are higher for higher verbosities.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "A name for this audio selector. The AudioDescription (in an output) references this name in order to identify a specific input audio to include in that output.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The IAM role for MediaLive to assume when running this channel. The role is identified by its ARN.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "A collection of tags for this channel. Each tag is a key-value pair.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-medialive-channel.html",
  "properties": [
    "ChannelClass",
    "Destinations",
    "EncoderSettings",
    "InputAttachments",
    "InputSpecification",
    "LogLevel",
    "Name",
    "RoleArn",
    "Tags"
  ]
},
"AWS::MediaLive::Input": {
  "full_properties": {
    "Destinations": {
      "description": "The destination settings for push types of inputs. If the input is a pull type, these settings don't apply.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "InputSecurityGroups": {
      "description": "The list of input security groups (referenced by IDs) to attach to the input if the input is a push type.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "MediaConnectFlows": {
      "description": "Settings that apply only if the input is a MediaConnect input.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "A name for the input.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The IAM role for MediaLive to assume when creating a MediaConnect input or Amazon VPC input. This doesn't apply to other types of inputs. The role is identified by its ARN.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Sources": {
      "description": "The source settings for a pull type of input. These settings don't apply if the input is a push type.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "A collection of tags for this input. Each tag is a key-value pair.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Type": {
      "description": "The type for this input.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Vpc": {
      "description": "Settings that apply only if the input is an Amazon VPC input.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-medialive-input.html",
  "properties": [
    "Destinations",
    "InputSecurityGroups",
    "MediaConnectFlows",
    "Name",
    "RoleArn",
    "Sources",
    "Tags",
    "Type",
    "Vpc"
  ]
},
"AWS::MediaLive::InputSecurityGroup": {
  "full_properties": {
    "Tags": {
      "description": "A collection of tags for this input security group. Each tag is a key-value pair.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "WhitelistRules": {
      "description": "The list of IPv4 CIDR addresses to include in the input security group as \"allowed\" addresses.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-medialive-inputsecuritygroup.html",
  "properties": [
    "Tags",
    "WhitelistRules"
  ]
},
"AWS::MediaStore::Container": {
  "full_properties": {
    "AccessLoggingEnabled": {
      "description": "The state of access logging on the container. This value is false by default, indicating that AWS Elemental MediaStore does not send access logs to Amazon CloudWatch Logs. When you enable access logging on the container, MediaStore changes this value to true, indicating that the service delivers access logs for objects stored in that container to CloudWatch Logs.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "ContainerName": {
      "description": "The name for the container. The name must be from 1 to 255 characters. Container names must be unique to your AWS account within a specific region. As an example, you could create a container named movies in every region, as long as you don’t have an existing container with that name.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "CorsPolicy": {
      "description": "Sets the cross-origin resource sharing (CORS) configuration on a container so that the container can service cross-origin requests. For example, you might want to enable a request whose origin is http://www.example.com to access your AWS Elemental MediaStore container at my.example.container.com by using the browser's XMLHttpRequest capability.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "LifecyclePolicy": {
      "description": "Writes an object lifecycle policy to a container. If the container already has an object lifecycle policy, the service replaces the existing policy with the new policy. It takes up to 20 minutes for the change to take effect.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Policy": {
      "description": "Creates an access policy for the specified container to restrict the users and clients that can access it. For information about the data that is included in an access policy, see the AWS Identity and Access Management User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-mediastore-container.html",
  "properties": [
    "AccessLoggingEnabled",
    "ContainerName",
    "CorsPolicy",
    "LifecyclePolicy",
    "Policy"
  ]
},
"AWS::Neptune::DBCluster": {
  "full_properties": {
    "AvailabilityZones": {
      "description": "Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "BackupRetentionPeriod": {
      "description": "Specifies the number of days for which automatic DB snapshots are retained.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "DBClusterIdentifier": {
      "description": "Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBClusterParameterGroupName": {
      "description": "Provides the name of the DB cluster parameter group.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DBSubnetGroupName": {
      "description": "Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "IamAuthEnabled": {
      "description": "True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "KmsKeyId": {
      "description": "If StorageEncrypted is true, the AWS KMS key identifier for the encrypted DB cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Port": {
      "description": "Specifies the port that the database engine is listening on.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "PreferredBackupWindow": {
      "description": "Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PreferredMaintenanceWindow": {
      "description": "Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SnapshotIdentifier": {
      "description": "Contains the identifier of the source DB cluster if this DB cluster is a Read Replica.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "StorageEncrypted": {
      "description": "Indicates whether the DB cluster is encrypted.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The tags assigned to this cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcSecurityGroupIds": {
      "description": "Provides a list of VPC security groups that the DB cluster belongs to.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-neptune-dbcluster.html",
  "properties": [
    "AvailabilityZones",
    "BackupRetentionPeriod",
    "DBClusterIdentifier",
    "DBClusterParameterGroupName",
    "DBSubnetGroupName",
    "IamAuthEnabled",
    "KmsKeyId",
    "Port",
    "PreferredBackupWindow",
    "PreferredMaintenanceWindow",
    "SnapshotIdentifier",
    "StorageEncrypted",
    "Tags",
    "VpcSecurityGroupIds"
  ]
},
"AWS::Neptune::DBClusterParameterGroup": {
  "full_properties": {
    "Description": {
      "description": "Provides the customer-specified description for this DB cluster parameter group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Family": {
      "description": "Must be neptune1.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "Provides the name of the DB cluster parameter group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Parameters": {
      "description": "The parameters to set for this DB cluster parameter group.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags that you want to attach to this parameter group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-neptune-dbclusterparametergroup.html",
  "properties": [
    "Description",
    "Family",
    "Name",
    "Parameters",
    "Tags"
  ]
},
"AWS::Neptune::DBInstance": {
  "full_properties": {
    "AllowMajorVersionUpgrade": {
      "description": "Indicates that major version upgrades are allowed. Changing this parameter doesn't result in an outage and the change is asynchronously applied as soon as possible. This parameter must be set to true when specifying a value for the EngineVersion parameter that is a different major version than the DB instance's current version.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AutoMinorVersionUpgrade": {
      "description": "Indicates that minor version patches are applied automatically.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AvailabilityZone": {
      "description": "Specifies the name of the Availability Zone the DB instance is located in.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBClusterIdentifier": {
      "description": "If the DB instance is a member of a DB cluster, contains the name of the DB cluster that the DB instance is a member of.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBInstanceClass": {
      "description": "Contains the name of the compute and memory capacity class of the DB instance.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DBInstanceIdentifier": {
      "description": "Contains a user-supplied database identifier. This identifier is the unique key that identifies a DB instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBParameterGroupName": {
      "description": "The name of an existing DB parameter group or a reference to an AWS::Neptune::DBParameterGroup resource created in the template. If any of the data members of the referenced parameter group are changed during an update, the DB instance might need to be restarted, which causes some interruption. If the parameter group contains static parameters, whether they were changed or not, an update triggers a reboot.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DBSnapshotIdentifier": {
      "description": "This parameter is not supported.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBSubnetGroupName": {
      "description": "A DB subnet group to associate with the DB instance. If you update this value, the new subnet group must be a subnet group in a new virtual private cloud (VPC).",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PreferredMaintenanceWindow": {
      "description": "Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An arbitrary set of tags (key-value pairs) for this DB instance.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-neptune-dbinstance.html",
  "properties": [
    "AllowMajorVersionUpgrade",
    "AutoMinorVersionUpgrade",
    "AvailabilityZone",
    "DBClusterIdentifier",
    "DBInstanceClass",
    "DBInstanceIdentifier",
    "DBParameterGroupName",
    "DBSnapshotIdentifier",
    "DBSubnetGroupName",
    "PreferredMaintenanceWindow",
    "Tags"
  ]
},
"AWS::Neptune::DBParameterGroup": {
  "full_properties": {
    "Description": {
      "description": "Provides the customer-specified description for this DB parameter group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Family": {
      "description": "Must be neptune1.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "Provides the name of the DB parameter group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Parameters": {
      "description": "The parameters to set for this DB parameter group.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags that you want to attach to this parameter group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-neptune-dbparametergroup.html",
  "properties": [
    "Description",
    "Family",
    "Name",
    "Parameters",
    "Tags"
  ]
},
"AWS::Neptune::DBSubnetGroup": {
  "full_properties": {
    "DBSubnetGroupDescription": {
      "description": "Provides the description of the DB subnet group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DBSubnetGroupName": {
      "description": "The name of the DB subnet group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetIds": {
      "description": "The Amazon EC2 subnet IDs for the DB subnet group.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags that you want to attach to the DB subnet group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-neptune-dbsubnetgroup.html",
  "properties": [
    "DBSubnetGroupDescription",
    "DBSubnetGroupName",
    "SubnetIds",
    "Tags"
  ]
},
"AWS::OpsWorks::App": {
  "full_properties": {
    "AppSource": {
      "description": "A Source object that specifies the app repository.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Attributes": {
      "description": "One or more user-defined key/value pairs to be added to the stack attributes.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DataSources": {
      "description": "The app's data source.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the app.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Domains": {
      "description": "The app virtual host settings, with multiple domains separated by commas. For example: 'www.example.com, example.com'",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "EnableSsl": {
      "description": "Whether to enable SSL for the app.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Environment": {
      "description": "An array of EnvironmentVariable objects that specify environment variables to be associated with the app. After you deploy the app, these variables are defined on the associated app server instance. For more information, see  Environment Variables.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "The app name.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Shortname": {
      "description": "The app's short name.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SslConfiguration": {
      "description": "An SslConfiguration object with the SSL configuration.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "StackId": {
      "description": "The stack ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Type": {
      "description": "The app type. Each supported type is associated with a particular layer. For example, PHP applications are associated with a PHP layer. AWS OpsWorks Stacks deploys an application to those instances that are members of the corresponding layer. If your app isn't one of the standard types, or you prefer to implement your own Deploy recipes, specify other.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-opsworks-app.html",
  "properties": [
    "AppSource",
    "Attributes",
    "DataSources",
    "Description",
    "Domains",
    "EnableSsl",
    "Environment",
    "Name",
    "Shortname",
    "SslConfiguration",
    "StackId",
    "Type"
  ]
},
"AWS::OpsWorks::ElasticLoadBalancerAttachment": {
  "full_properties": {
    "ElasticLoadBalancerName": {
      "description": "The Elastic Load Balancing instance's name.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "LayerId": {
      "description": "The AWS OpsWorks layer ID that the Elastic Load Balancing load balancer will be attached to.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-opsworks-elbattachment.html",
  "properties": [
    "ElasticLoadBalancerName",
    "LayerId"
  ]
},
"AWS::OpsWorks::Instance": {
  "full_properties": {
    "AgentVersion": {
      "description": "The default AWS OpsWorks Stacks agent version. You have the following options:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AmiId": {
      "description": "A custom AMI ID to be used to create the instance. The AMI should be based on one of the supported operating systems. For more information, see Using Custom AMIs.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Architecture": {
      "description": "The instance architecture. The default option is x86_64. Instance types do not necessarily support both architectures. For a list of the architectures that are supported by the different instance types, see Instance Families and Types.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "AutoScalingType": {
      "description": "For load-based or time-based instances, the type. Windows stacks can use only time-based instances.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "AvailabilityZone": {
      "description": "The Availability Zone of the AWS OpsWorks instance, such as us-east-2a.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "BlockDeviceMappings": {
      "description": "An array of BlockDeviceMapping objects that specify the instance's block devices. For more information, see Block Device Mapping. Note that block device mappings are not supported for custom AMIs.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "EbsOptimized": {
      "description": "Whether to create an Amazon EBS-optimized instance.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "ElasticIps": {
      "description": "A list of Elastic IP addresses to associate with the instance.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Hostname": {
      "description": "The instance host name.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InstallUpdatesOnBoot": {
      "description": "Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or by manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "InstanceType": {
      "description": "The instance type, such as t2.micro. For a list of supported instance types, open the stack in the console, choose Instances, and choose + Instance. The Size list contains the currently supported types. For more information, see Instance Families and Types. The parameter values that you use to specify the various types are in the API Name column of the Available Instance Types table.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "LayerIds": {
      "description": "An array that contains the instance's layer IDs.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Os": {
      "description": "The instance's operating system, which must be set to one of the following.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RootDeviceType": {
      "description": "The instance root device type. For more information, see Storage for the Root Device.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SshKeyName": {
      "description": "The instance's Amazon EC2 key-pair name.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "StackId": {
      "description": "The stack ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetId": {
      "description": "The ID of the instance's subnet. If the stack is running in a VPC, you can use this parameter to override the stack's default subnet ID value and direct AWS OpsWorks Stacks to launch the instance in a different subnet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tenancy": {
      "description": "The instance's tenancy option. The default option is no tenancy, or if the instance is running in a VPC, inherit tenancy settings from the VPC. The following are valid values for this parameter:  dedicated, default, or host. Because there are costs associated with changes in tenancy options, we recommend that you research tenancy options before choosing them for your instances. For more information about dedicated hosts, see Dedicated Hosts Overview and Amazon EC2 Dedicated Hosts. For more information about dedicated instances, see Dedicated Instances and Amazon EC2 Dedicated Instances.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "TimeBasedAutoScaling": {
      "description": "The time-based scaling configuration for the instance.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "VirtualizationType": {
      "description": "The instance's virtualization type, paravirtual or hvm.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Volumes": {
      "description": "A list of AWS OpsWorks volume IDs to associate with the instance. For more information, see AWS::OpsWorks::Volume.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-opsworks-instance.html",
  "properties": [
    "AgentVersion",
    "AmiId",
    "Architecture",
    "AutoScalingType",
    "AvailabilityZone",
    "BlockDeviceMappings",
    "EbsOptimized",
    "ElasticIps",
    "Hostname",
    "InstallUpdatesOnBoot",
    "InstanceType",
    "LayerIds",
    "Os",
    "RootDeviceType",
    "SshKeyName",
    "StackId",
    "SubnetId",
    "Tenancy",
    "TimeBasedAutoScaling",
    "VirtualizationType",
    "Volumes"
  ]
},
"AWS::OpsWorks::Layer": {
  "full_properties": {
    "Attributes": {
      "description": "One or more user-defined key-value pairs to be added to the stack attributes.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "AutoAssignElasticIps": {
      "description": "Whether to automatically assign an Elastic IP address to the layer's instances. For more information, see How to Edit a Layer.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AutoAssignPublicIps": {
      "description": "For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see How to Edit a Layer.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "CustomInstanceProfileArn": {
      "description": "The ARN of an IAM profile to be used for the layer's EC2 instances. For more information about IAM ARNs, see Using Identifiers.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "CustomJson": {
      "description": "A JSON-formatted string containing custom stack configuration and deployment attributes to be installed on the layer's instances. For more information, see  Using Custom JSON. This feature is supported as of version 1.7.42 of the AWS CLI.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CustomRecipes": {
      "description": "A LayerCustomRecipes object that specifies the layer custom recipes.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CustomSecurityGroupIds": {
      "description": "An array containing the layer custom security group IDs.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "EnableAutoHealing": {
      "description": "Whether to disable auto healing for the layer.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "InstallUpdatesOnBoot": {
      "description": "Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or by manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "LifecycleEventConfiguration": {
      "description": "A LifeCycleEventConfiguration object that you can use to configure the Shutdown event to specify an execution timeout and enable or disable Elastic Load Balancer connection draining.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "LoadBasedAutoScaling": {
      "description": "The load-based scaling configuration for the AWS OpsWorks layer.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The layer name, which is used by the console.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Packages": {
      "description": "An array of Package objects that describes the layer packages.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Shortname": {
      "description": "For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorks Stacks and by Chef recipes. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters, which are limited to the alphanumeric characters, '-', '_', and '.'.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "StackId": {
      "description": "The layer stack ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Specifies one or more sets of tags (key–value pairs) to associate with this AWS OpsWorks layer. Use tags to manage your resources.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Type": {
      "description": "The layer type. A stack cannot have more than one built-in layer of the same type. It can have any number of custom layers. Built-in layers are not available in Chef 12 stacks.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "UseEbsOptimizedInstances": {
      "description": "Whether to use Amazon EBS-optimized instances.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "VolumeConfigurations": {
      "description": "A VolumeConfigurations object that describes the layer's Amazon EBS volumes.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-opsworks-layer.html",
  "properties": [
    "Attributes",
    "AutoAssignElasticIps",
    "AutoAssignPublicIps",
    "CustomInstanceProfileArn",
    "CustomJson",
    "CustomRecipes",
    "CustomSecurityGroupIds",
    "EnableAutoHealing",
    "InstallUpdatesOnBoot",
    "LifecycleEventConfiguration",
    "LoadBasedAutoScaling",
    "Name",
    "Packages",
    "Shortname",
    "StackId",
    "Tags",
    "Type",
    "UseEbsOptimizedInstances",
    "VolumeConfigurations"
  ]
},
"AWS::OpsWorks::Stack": {
  "full_properties": {
    "AgentVersion": {
      "description": "The default AWS OpsWorks Stacks agent version. You have the following options:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Attributes": {
      "description": "One or more user-defined key-value pairs to be added to the stack attributes.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ChefConfiguration": {
      "description": "A ChefConfiguration object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see Create a New Stack.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CloneAppIds": {
      "description": "If you're cloning an AWS OpsWorks stack, a list of AWS OpsWorks application stack IDs from the source stack to include in the cloned stack.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "ClonePermissions": {
      "description": "If you're cloning an AWS OpsWorks stack, indicates whether to clone the source stack's permissions.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "ConfigurationManager": {
      "description": "The configuration manager. When you create a stack we recommend that you use the configuration manager to specify the Chef version: 12, 11.10, or 11.4 for Linux stacks, or 12.2 for Windows stacks. The default value for Linux stacks is currently 12.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CustomCookbooksSource": {
      "description": "Contains the information required to retrieve an app or cookbook from a repository. For more information, see Adding Apps or Cookbooks and Recipes.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CustomJson": {
      "description": "A string that contains user-defined, custom JSON. It can be used to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format:",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DefaultAvailabilityZone": {
      "description": "The stack's default Availability Zone, which must be in the specified region. For more information, see Regions and Endpoints. If you also specify a value for DefaultSubnetId, the subnet must be in the same zone. For more information, see the VpcId parameter description.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultInstanceProfileArn": {
      "description": "The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see Using Identifiers.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultOs": {
      "description": "The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultRootDeviceType": {
      "description": "The default root device type. This value is the default for all instances in the stack, but you can override it when you create an instance. The default option is instance-store. For more information, see Storage for the Root Device.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultSshKeyName": {
      "description": "A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, AWS OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see  Using SSH to Communicate with an Instance and  Managing SSH Access. You can override this setting by specifying a different key pair, or no key pair, when you create an instance.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultSubnetId": {
      "description": "The stack's default subnet ID. All instances are launched into this subnet unless you specify another subnet ID when you create the instance. This parameter is required if you specify a value for the VpcId parameter. If you also specify a value for DefaultAvailabilityZone, the subnet must be in that zone.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EcsClusterArn": {
      "description": "The Amazon Resource Name (ARN) of the Amazon Elastic Container Service (Amazon ECS) cluster to register with the AWS OpsWorks stack.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ElasticIps": {
      "description": "A list of Elastic IP addresses to register with the AWS OpsWorks stack.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "HostnameTheme": {
      "description": "The stack's host name theme, with spaces replaced by underscores. The theme is used to generate host names for the stack's instances. By default, HostnameTheme is set to Layer_Dependent, which creates host names by appending integers to the layer's short name. The other themes are:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The stack name.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RdsDbInstances": {
      "description": "The Amazon Relational Database Service (Amazon RDS) DB instance to register with the AWS OpsWorks stack.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ServiceRoleArn": {
      "description": "The stack's AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks Stacks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see Using Identifiers.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceStackId": {
      "description": "If you're cloning an AWS OpsWorks stack, the stack ID of the source AWS OpsWorks stack to clone.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A map that contains tag keys and tag values that are attached to a stack or layer.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "UseCustomCookbooks": {
      "description": "Whether the stack uses custom cookbooks.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "UseOpsworksSecurityGroups": {
      "description": "Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "VpcId": {
      "description": "The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-opsworks-stack.html",
  "properties": [
    "AgentVersion",
    "Attributes",
    "ChefConfiguration",
    "CloneAppIds",
    "ClonePermissions",
    "ConfigurationManager",
    "CustomCookbooksSource",
    "CustomJson",
    "DefaultAvailabilityZone",
    "DefaultInstanceProfileArn",
    "DefaultOs",
    "DefaultRootDeviceType",
    "DefaultSshKeyName",
    "DefaultSubnetId",
    "EcsClusterArn",
    "ElasticIps",
    "HostnameTheme",
    "Name",
    "RdsDbInstances",
    "ServiceRoleArn",
    "SourceStackId",
    "Tags",
    "UseCustomCookbooks",
    "UseOpsworksSecurityGroups",
    "VpcId"
  ]
},
"AWS::OpsWorks::UserProfile": {
  "full_properties": {
    "AllowSelfManagement": {
      "description": "Whether users can specify their own SSH public key through the My Settings page. For more information, see Managing User Permissions.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "IamUserArn": {
      "description": "The user's IAM ARN.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SshPublicKey": {
      "description": "The user's SSH public key.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SshUsername": {
      "description": "The user's SSH user name.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-opsworks-userprofile.html",
  "properties": [
    "AllowSelfManagement",
    "IamUserArn",
    "SshPublicKey",
    "SshUsername"
  ]
},
"AWS::OpsWorks::Volume": {
  "full_properties": {
    "Ec2VolumeId": {
      "description": "The Amazon EC2 volume ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "MountPoint": {
      "description": "The volume mount point. For example, \"/mnt/disk1\".",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The volume name.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "StackId": {
      "description": "The stack ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-opsworks-volume.html",
  "properties": [
    "Ec2VolumeId",
    "MountPoint",
    "Name",
    "StackId"
  ]
},
"AWS::OpsWorksCM::Server": {
  "full_properties": {
    "AssociatePublicIpAddress": {
      "description": "Associate a public IP address with a server that you are launching. Valid values are true or false. The default value is true.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "BackupId": {
      "description": "If you specify this field, AWS OpsWorks CM creates the server by using the backup represented by BackupId.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "BackupRetentionCount": {
      "description": "The number of automated backups that you want to keep. Whenever a new backup is created, AWS OpsWorks CM deletes the oldest backups if this number is exceeded. The default value is 1.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "DisableAutomatedBackup": {
      "description": "Enable or disable scheduled backups. Valid values are true or false. The default value is true.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Engine": {
      "description": "The configuration management engine to use. Valid values include ChefAutomate and Puppet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineAttributes": {
      "description": "Optional engine attributes on a specified server.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "EngineModel": {
      "description": "The engine model of the server. Valid values in this release include Monolithic for Puppet and Single for Chef.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineVersion": {
      "description": "The major release version of the engine that you want to use. For a Chef server, the valid value for EngineVersion is currently 12. For a Puppet server, the valid value is 2017.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceProfileArn": {
      "description": "The ARN of the instance profile that your Amazon EC2 instances use.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceType": {
      "description": "The Amazon EC2 instance type to use. For example, m5.large.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "KeyPair": {
      "description": "The Amazon EC2 key pair to set for the instance. This parameter is optional; if desired, you may specify this parameter to connect to your instances by using SSH.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PreferredBackupWindow": {
      "description": "The start time for a one-hour period during which AWS OpsWorks CM backs up application-level data on your server if automated backups are enabled. Valid values must be specified in one of the following formats:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PreferredMaintenanceWindow": {
      "description": "The start time for a one-hour period each week during which AWS OpsWorks CM performs maintenance on the instance. Valid values must be specified in the following format: DDD:HH:MM. The specified time is in coordinated universal time (UTC). The default value is a random one-hour period on Tuesday, Wednesday, or Friday. See TimeWindowDefinition for more information.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SecurityGroupIds": {
      "description": "A list of security group IDs to attach to the Amazon EC2 instance. If you add this parameter, the specified security groups must be within the VPC that is specified by SubnetIds.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "ServerName": {
      "description": "The name of the server. The server name must be unique within your AWS account, within each region. Server names must start with a letter; then letters, numbers, or hyphens (-) are allowed, up to a maximum of 40 characters.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ServiceRoleArn": {
      "description": "The service role that the AWS OpsWorks CM service backend uses to work with your account. Although the AWS OpsWorks management console typically creates the service role for you, if you are using the AWS CLI or API commands, run the service-role-creation.yaml AWS CloudFormation template, located at https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-roles.yaml. This template creates a CloudFormation stack that includes the service role and instance profile that you need.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetIds": {
      "description": "The IDs of subnets in which to launch the server EC2 instance.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-opsworkscm-server.html",
  "properties": [
    "AssociatePublicIpAddress",
    "BackupId",
    "BackupRetentionCount",
    "DisableAutomatedBackup",
    "Engine",
    "EngineAttributes",
    "EngineModel",
    "EngineVersion",
    "InstanceProfileArn",
    "InstanceType",
    "KeyPair",
    "PreferredBackupWindow",
    "PreferredMaintenanceWindow",
    "SecurityGroupIds",
    "ServerName",
    "ServiceRoleArn",
    "SubnetIds"
  ]
},
"AWS::Pinpoint::ADMChannel": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique identifier of the Amazon Pinpoint application that the ADM channel applies to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ClientId": {
      "description": "The Client ID that you received from Amazon to send messages by using ADM.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ClientSecret": {
      "description": "The Client Secret that you received from Amazon to send messages by using ADM.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Enabled": {
      "description": "Specifies whether to enable the ADM channel for the application.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-admchannel.html",
  "properties": [
    "ApplicationId",
    "ClientId",
    "ClientSecret",
    "Enabled"
  ]
},
"AWS::Pinpoint::APNSChannel": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique identifier of the Amazon Pinpoint application that the APNs channel applies to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "BundleId": {
      "description": "The bundle identifier that's assigned to your iOS app. This identifier is used for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Certificate": {
      "description": "The APNs client certificate that you received from Apple. Specify this value if you want Amazon Pinpoint to communicate with APNs by using an APNs certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultAuthenticationMethod": {
      "description": "The default authentication method that you want Amazon Pinpoint to use when authenticating with APNs. Valid options are key or certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Enabled": {
      "description": "Specifies whether to enable the APNs channel for the application.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "PrivateKey": {
      "description": "The private key for the APNs client certificate that you want Amazon Pinpoint to use to communicate with APNs.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TeamId": {
      "description": "The identifier that's assigned to your Apple Developer Account team. This identifier is used for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TokenKey": {
      "description": "The authentication key to use for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TokenKeyId": {
      "description": "The key identifier that's assigned to your APNs signing key. Specify this value if you want Amazon Pinpoint to communicate with APNs by using APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-apnschannel.html",
  "properties": [
    "ApplicationId",
    "BundleId",
    "Certificate",
    "DefaultAuthenticationMethod",
    "Enabled",
    "PrivateKey",
    "TeamId",
    "TokenKey",
    "TokenKeyId"
  ]
},
"AWS::Pinpoint::APNSSandboxChannel": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique identifier of the Amazon Pinpoint application that the APNs sandbox channel applies to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "BundleId": {
      "description": "The bundle identifier that's assigned to your iOS app. This identifier is used for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Certificate": {
      "description": "The APNs client certificate that you received from Apple. Specify this value if you want Amazon Pinpoint to communicate with APNs by using an APNs certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultAuthenticationMethod": {
      "description": "The default authentication method that you want Amazon Pinpoint to use when authenticating with APNs. Valid options are key or certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Enabled": {
      "description": "Specifies whether to enable the APNs Sandbox channel for the Amazon Pinpoint application.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "PrivateKey": {
      "description": "The private key for the APNs client certificate that you want Amazon Pinpoint to use to communicate with APNs.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TeamId": {
      "description": "The identifier that's assigned to your Apple Developer Account team. This identifier is used for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TokenKey": {
      "description": "The authentication key to use for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TokenKeyId": {
      "description": "The key identifier that's assigned to your APNs signing key. Specify this value if you want Amazon Pinpoint to communicate with APNs by using APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-apnssandboxchannel.html",
  "properties": [
    "ApplicationId",
    "BundleId",
    "Certificate",
    "DefaultAuthenticationMethod",
    "Enabled",
    "PrivateKey",
    "TeamId",
    "TokenKey",
    "TokenKeyId"
  ]
},
"AWS::Pinpoint::APNSVoipChannel": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique identifier of the Amazon Pinpoint application that the APNs VoIP channel applies to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "BundleId": {
      "description": "The bundle identifier that's assigned to your iOS app. This identifier is used for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Certificate": {
      "description": "The APNs client certificate that you received from Apple. Specify this value if you want Amazon Pinpoint to communicate with APNs by using an APNs certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultAuthenticationMethod": {
      "description": "The default authentication method that you want Amazon Pinpoint to use when authenticating with APNs. Valid options are key or certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Enabled": {
      "description": "Specifies whether to enable the APNs VoIP channel for the Amazon Pinpoint application.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "PrivateKey": {
      "description": "The private key for the APNs client certificate that you want Amazon Pinpoint to use to communicate with APNs.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TeamId": {
      "description": "The identifier that's assigned to your Apple Developer Account team. This identifier is used for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TokenKey": {
      "description": "The authentication key to use for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TokenKeyId": {
      "description": "The key identifier that's assigned to your APNs signing key. Specify this value if you want Amazon Pinpoint to communicate with APNs by using APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-apnsvoipchannel.html",
  "properties": [
    "ApplicationId",
    "BundleId",
    "Certificate",
    "DefaultAuthenticationMethod",
    "Enabled",
    "PrivateKey",
    "TeamId",
    "TokenKey",
    "TokenKeyId"
  ]
},
"AWS::Pinpoint::APNSVoipSandboxChannel": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique identifier for the application that the APNs VoIP sandbox channel applies to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "BundleId": {
      "description": "The bundle identifier that's assigned to your iOS app. This identifier is used for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Certificate": {
      "description": "The APNs client certificate that you received from Apple. Specify this value if you want Amazon Pinpoint to communicate with the APNs sandbox environment by using an APNs certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DefaultAuthenticationMethod": {
      "description": "The default authentication method that you want Amazon Pinpoint to use when authenticating with APNs. Valid options are key or certificate.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Enabled": {
      "description": "Specifies whether the APNs VoIP sandbox channel is enabled for the application.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "PrivateKey": {
      "description": "The private key for the APNs client certificate that you want Amazon Pinpoint to use to communicate with the APNs sandbox environment.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TeamId": {
      "description": "The identifier that's assigned to your Apple developer account team. This identifier is used for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TokenKey": {
      "description": "The authentication key to use for APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TokenKeyId": {
      "description": "The key identifier that's assigned to your APNs signing key. Specify this value if you want Amazon Pinpoint to communicate with the APNs sandbox environment by using APNs tokens.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-apnsvoipsandboxchannel.html",
  "properties": [
    "ApplicationId",
    "BundleId",
    "Certificate",
    "DefaultAuthenticationMethod",
    "Enabled",
    "PrivateKey",
    "TeamId",
    "TokenKey",
    "TokenKeyId"
  ]
},
"AWS::Pinpoint::App": {
  "full_properties": {
    "Name": {
      "description": "The display name of the application.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-pinpoint-app.html",
  "properties": [
    "Name"
  ]
},
"AWS::Pinpoint::ApplicationSettings": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique ID of the Amazon Pinpoint app.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "CampaignHook": {
      "description": "The settings for the AWS Lambda function to use by default as a code hook for campaigns in the application. To override these settings for a specific campaign, use the Campaign resource to define custom Lambda function settings for the campaign.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "CloudWatchMetricsEnabled": {
      "description": "Specifies whether to enable application-related alarms in Amazon CloudWatch.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Limits": {
      "description": "The default sending limits for campaigns in the application. To override these limits for a specific campaign, use the Campaign resource to define custom limits for the campaign.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "QuietTime": {
      "description": "The default quiet time for campaigns in the application. Quiet time is a specific time range when campaigns don't send messages to endpoints, if all the following conditions are met:",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-applicationsettings.html",
  "properties": [
    "ApplicationId",
    "CampaignHook",
    "CloudWatchMetricsEnabled",
    "Limits",
    "QuietTime"
  ]
},
"AWS::Pinpoint::BaiduChannel": {
  "full_properties": {
    "ApiKey": {
      "description": "The API key that you received from the Baidu Cloud Push service to communicate with the service.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ApplicationId": {
      "description": "The unique ID of the Amazon Pinpoint app that you're configuring the Baidu channel for.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Enabled": {
      "description": "Specifies whether to enable the Baidu channel for the application.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "SecretKey": {
      "description": "The secret key that you received from the Baidu Cloud Push service to communicate with the service.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-baiduchannel.html",
  "properties": [
    "ApiKey",
    "ApplicationId",
    "Enabled",
    "SecretKey"
  ]
},
"AWS::Pinpoint::Campaign": {
  "full_properties": {
    "AdditionalTreatments": {
      "description": "An array of requests that defines additional treatments for the campaign, in addition to the default treatment for the campaign.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ApplicationId": {
      "description": "The unique ID of the Amazon Pinpoint app that the campaign is associated with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "CampaignHook": {
      "description": "Specifies the AWS Lambda function to use as a code hook for a campaign.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Description": {
      "description": "The custom description of the campaign.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "HoldoutPercent": {
      "description": "The allocated percentage of users (segment members) who shouldn't receive messages from the campaign.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "IsPaused": {
      "description": "Specifies whether to pause the campaign. A paused campaign doesn't run unless you resume it by setting this value to false.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Limits": {
      "description": "The messaging limits for the campaign.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MessageConfiguration": {
      "description": "The message configuration settings for the campaign.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The custom name of the campaign.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Schedule": {
      "description": "The schedule settings for the campaign.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SegmentId": {
      "description": "The unique identifier for the segment to associate with the campaign.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "SegmentVersion": {
      "description": "The version of the segment to associate with the campaign.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "TreatmentDescription": {
      "description": "The custom description of a variation of the campaign to use for A/B testing.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TreatmentName": {
      "description": "The custom name of a variation of the campaign to use for A/B testing.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-campaign.html",
  "properties": [
    "AdditionalTreatments",
    "ApplicationId",
    "CampaignHook",
    "Description",
    "HoldoutPercent",
    "IsPaused",
    "Limits",
    "MessageConfiguration",
    "Name",
    "Schedule",
    "SegmentId",
    "SegmentVersion",
    "TreatmentDescription",
    "TreatmentName"
  ]
},
"AWS::Pinpoint::EmailChannel": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique ID of the Amazon Pinpoint app that you're specifying the email channel for.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ConfigurationSet": {
      "description": "The configuration set that you want to apply to email that you send through the channel by using the Amazon Pinpoint Email API.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Enabled": {
      "description": "Specifies whether to enable the email channel for the application.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "FromAddress": {
      "description": "The verified email address that you want to send email from when you send email through the channel.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Identity": {
      "description": "The Amazon Resource Name (ARN) of the identity, verified with Amazon Simple Email Service (Amazon SES), that you want to use when you send email through the channel.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The ARN of the AWS Identity and Access Management (IAM) role that you want Amazon Pinpoint to use when it submits email-related event data for the channel.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-emailchannel.html",
  "properties": [
    "ApplicationId",
    "ConfigurationSet",
    "Enabled",
    "FromAddress",
    "Identity",
    "RoleArn"
  ]
},
"AWS::Pinpoint::EventStream": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique ID of the Amazon Pinpoint app that you want to export data from.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "DestinationStreamArn": {
      "description": "The Amazon Resource Name (ARN) of the Amazon Kinesis data stream or Amazon Kinesis Data Firehose delivery stream that you want to publish event data to.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The AWS Identity and Access Management (IAM) role that authorizes Amazon Pinpoint to publish event data to the stream in your AWS account.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-eventstream.html",
  "properties": [
    "ApplicationId",
    "DestinationStreamArn",
    "RoleArn"
  ]
},
"AWS::Pinpoint::GCMChannel": {
  "full_properties": {
    "ApiKey": {
      "description": "The API key, also called the server key, that you received from Google to communicate with Google services.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ApplicationId": {
      "description": "The unique identifier for the Amazon Pinpoint app that the GCM channel applies to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Enabled": {
      "description": "Specifies whether to enable the GCM channel for the Amazon Pinpoint application.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-gcmchannel.html",
  "properties": [
    "ApiKey",
    "ApplicationId",
    "Enabled"
  ]
},
"AWS::Pinpoint::SMSChannel": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique identifier for the Amazon Pinpoint app that the SMS channel applies to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Enabled": {
      "description": "Specifies whether to enable the SMS channel for the app.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "SenderId": {
      "description": "The identity that you want to display on recipients' devices when they receive messages from the SMS channel.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ShortCode": {
      "description": "The registered short code that you want to use when you send messages through the SMS channel.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-smschannel.html",
  "properties": [
    "ApplicationId",
    "Enabled",
    "SenderId",
    "ShortCode"
  ]
},
"AWS::Pinpoint::Segment": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique ID of the Amazon Pinpoint app that the segment is associated with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Dimensions": {
      "description": "The criteria that define the dimensions for the segment.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the segment.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "SegmentGroups": {
      "description": "The segment group to use and the dimensions to apply to the group's base segments in order to build the segment. A segment group can consist of zero or more base segments. Your request can include only one segment group.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-segment.html",
  "properties": [
    "ApplicationId",
    "Dimensions",
    "Name",
    "SegmentGroups"
  ]
},
"AWS::Pinpoint::VoiceChannel": {
  "full_properties": {
    "ApplicationId": {
      "description": "The unique ID of the Amazon Pinpoint app that you're setting up the voice channel for.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Enabled": {
      "description": "Specifies whether to enable the voice channel for the application.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpoint-voicechannel.html",
  "properties": [
    "ApplicationId",
    "Enabled"
  ]
},
"AWS::PinpointEmail::ConfigurationSet": {
  "full_properties": {
    "DeliveryOptions": {
      "description": "An object that defines the dedicated IP pool that is used to send emails that you send using the configuration set.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the configuration set.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ReputationOptions": {
      "description": "An object that defines whether or not Amazon Pinpoint collects reputation metrics for the emails that you send that use the configuration set.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SendingOptions": {
      "description": "An object that defines whether or not Amazon Pinpoint can send email that you send using the configuration set.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An object that defines the tags (keys and values) that you want to associate with the configuration set.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TrackingOptions": {
      "description": "An object that defines the open and click tracking options for emails that you send using the configuration set.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpointemail-configurationset.html",
  "properties": [
    "DeliveryOptions",
    "Name",
    "ReputationOptions",
    "SendingOptions",
    "Tags",
    "TrackingOptions"
  ]
},
"AWS::PinpointEmail::ConfigurationSetEventDestination": {
  "full_properties": {
    "ConfigurationSetName": {
      "description": "The name of the configuration set that contains the event destination that you want to modify.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EventDestination": {
      "description": "An object that defines the event destination.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EventDestinationName": {
      "description": "The name of the event destination that you want to modify.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-pinpointemail-configurationseteventdestination.html",
  "properties": [
    "ConfigurationSetName",
    "EventDestination",
    "EventDestinationName"
  ]
},
"AWS::PinpointEmail::DedicatedIpPool": {
  "full_properties": {
    "PoolName": {
      "description": "The name of the dedicated IP pool.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An object that defines the tags (keys and values) that you want to associate with the dedicated IP pool.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpointemail-dedicatedippool.html",
  "properties": [
    "PoolName",
    "Tags"
  ]
},
"AWS::PinpointEmail::Identity": {
  "full_properties": {
    "DkimSigningEnabled": {
      "description": "For domain identities, this attribute is used to enable or disable DomainKeys Identified Mail (DKIM) signing for the domain.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "FeedbackForwardingEnabled": {
      "description": "Used to enable or disable feedback forwarding for an identity. This setting determines what happens when an identity is used to send an email that results in a bounce or complaint event.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "MailFromAttributes": {
      "description": "Used to enable or disable the custom Mail-From domain configuration for an email identity.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The address or domain of the identity, such as sender@example.com or example.co.uk.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "An object that defines the tags (keys and values) that you want to associate with the email identity.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-pinpointemail-identity.html",
  "properties": [
    "DkimSigningEnabled",
    "FeedbackForwardingEnabled",
    "MailFromAttributes",
    "Name",
    "Tags"
  ]
},
"AWS::RAM::ResourceShare": {
  "full_properties": {
    "AllowExternalPrincipals": {
      "description": "Indicates whether principals outside your AWS organization can be associated with a resource share.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the resource share.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Principals": {
      "description": "The principals to associate with the resource share. The possible values are IDs of AWS accounts, the ARN of an OU or organization from AWS Organizations.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ResourceArns": {
      "description": "The Amazon Resource Names (ARN) of the resources to associate with the resource share.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "One or more tags.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ram-resourceshare.html",
  "properties": [
    "AllowExternalPrincipals",
    "Name",
    "Principals",
    "ResourceArns",
    "Tags"
  ]
},
"AWS::RDS::DBCluster": {
  "full_properties": {
    "AvailabilityZones": {
      "description": "A list of Availability Zones (AZs) where instances in the DB cluster can be created. For information on AWS Regions and Availability Zones, see Choosing the Regions and Availability Zones in the Amazon Aurora User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "BacktrackWindow": {
      "description": "The target backtrack window, in seconds. To disable backtracking, set this value to 0.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BackupRetentionPeriod": {
      "description": "The number of days for which automated backups are retained.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "DBClusterIdentifier": {
      "description": "The DB cluster identifier. This parameter is stored as a lowercase string.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBClusterParameterGroupName": {
      "description": "The name of the DB cluster parameter group to associate with this DB cluster.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DBSubnetGroupName": {
      "description": "A DB subnet group that you want to associate with this DB cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DatabaseName": {
      "description": "The name of your database. If you don't provide a name, then Amazon RDS won't create a database in this DB cluster. For naming constraints, see Naming Constraints in the Amazon RDS User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DeletionProtection": {
      "description": "A value that indicates whether the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "EnableCloudwatchLogsExports": {
      "description": "The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in the list depend on the DB engine being used. For more information, see Publishing Database Logs to Amazon CloudWatch Logs in the Amazon Aurora User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "EnableIAMDatabaseAuthentication": {
      "description": "A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts. By default, mapping is disabled.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Engine": {
      "description": "The name of the database engine to be used for this DB cluster.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineMode": {
      "description": "The DB engine mode of the DB cluster, either provisioned, serverless, parallelquery, or global.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineVersion": {
      "description": "The version number of the database engine to use.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "KmsKeyId": {
      "description": "The Amazon Resource Name (ARN) of the AWS Key Management Service master key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default master key is used. If you specify this property, you must set the StorageEncrypted property to true.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "MasterUserPassword": {
      "description": "The master password for the DB instance.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MasterUsername": {
      "description": "The name of the master user for the DB cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Port": {
      "description": "The port number on which the instances in the DB cluster accept connections.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "PreferredBackupWindow": {
      "description": "The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PreferredMaintenanceWindow": {
      "description": "The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ReplicationSourceIdentifier": {
      "description": "The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a Read Replica.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ScalingConfiguration": {
      "description": "The ScalingConfiguration property type specifies the scaling configuration of an Aurora Serverless DB cluster.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SnapshotIdentifier": {
      "description": "The identifier for the DB snapshot or DB cluster snapshot to restore from.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceRegion": {
      "description": "The AWS Region which contains the source DB cluster when replicating a DB cluster. For example, us-east-1.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "StorageEncrypted": {
      "description": "Indicates whether the DB instance is encrypted.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Tags to assign to the DB cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcSecurityGroupIds": {
      "description": "A list of EC2 VPC security groups to associate with this DB cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-rds-dbcluster.html",
  "properties": [
    "AvailabilityZones",
    "BacktrackWindow",
    "BackupRetentionPeriod",
    "DatabaseName",
    "DBClusterIdentifier",
    "DBClusterParameterGroupName",
    "DBSubnetGroupName",
    "DeletionProtection",
    "EnableCloudwatchLogsExports",
    "EnableIAMDatabaseAuthentication",
    "Engine",
    "EngineMode",
    "EngineVersion",
    "KmsKeyId",
    "MasterUsername",
    "MasterUserPassword",
    "Port",
    "PreferredBackupWindow",
    "PreferredMaintenanceWindow",
    "ReplicationSourceIdentifier",
    "ScalingConfiguration",
    "SnapshotIdentifier",
    "SourceRegion",
    "StorageEncrypted",
    "Tags",
    "VpcSecurityGroupIds"
  ]
},
"AWS::RDS::DBClusterParameterGroup": {
  "full_properties": {
    "Description": {
      "description": "A friendly description for this DB cluster parameter group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Family": {
      "description": "The DB cluster parameter group family name. A DB cluster parameter group can be associated with one and only one DB cluster parameter group family, and can be applied only to a DB cluster running a DB engine and engine version compatible with that DB cluster parameter group family.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Parameters": {
      "description": "Provides a list of parameters for the DB cluster parameter group.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Tags to assign to the DB cluster parameter group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-rds-dbclusterparametergroup.html",
  "properties": [
    "Description",
    "Family",
    "Parameters",
    "Tags"
  ]
},
"AWS::RDS::DBInstance": {
  "full_properties": {
    "AllocatedStorage": {
      "description": "The amount of storage (in gigabytes) to be initially allocated for the database instance.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AllowMajorVersionUpgrade": {
      "description": "A value that indicates whether major version upgrades are allowed. Changing this parameter doesn't result in an outage and the change is asynchronously applied as soon as possible.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AutoMinorVersionUpgrade": {
      "description": "A value that indicates whether minor engine upgrades are applied automatically to the DB instance during the maintenance window. By default, minor engine upgrades are applied automatically.",
      "required": false,
      "type": "Boolean",
      "update_causes": "unknown"
    },
    "AvailabilityZone": {
      "description": "The Availability Zone (AZ) where the database will be created. For information on AWS Regions and Availability Zones, see Regions and Availability Zones.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "BackupRetentionPeriod": {
      "description": "The number of days for which automated backups are retained. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups.",
      "required": false,
      "type": "Number",
      "update_causes": "unknown"
    },
    "CharacterSetName": {
      "description": "For supported engines, indicates that the DB instance should be associated with the specified CharacterSet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "CopyTagsToSnapshot": {
      "description": "A value that indicates whether to copy tags from the DB instance to snapshots of the DB instance. By default, tags are not copied.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "DBClusterIdentifier": {
      "description": "The identifier of the DB cluster that the instance will belong to.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBInstanceClass": {
      "description": "The compute and memory capacity of the DB instance, for example, db.m4.large. Not all DB instance classes are available in all AWS Regions, or for all database engines. For the full list of DB instance classes, and availability for your engine, see DB Instance Class in the Amazon RDS User Guide.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DBInstanceIdentifier": {
      "description": "A name for the DB instance. If you specify a name, AWS CloudFormation converts it to lowercase. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the DB instance. For more information, see Name Type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "DBName": {
      "description": "The name of the DB instance that was provided at the time of creation, if one was specified. This same name is returned for the life of the DB instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBParameterGroupName": {
      "description": "The name of an existing DB parameter group or a reference to an AWS::RDS::DBParameterGroup resource created in the template.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "DBSecurityGroups": {
      "description": "A list of the DB security groups to assign to the DB instance. The list can include both the name of existing DB security groups or references to AWS::RDS::DBSecurityGroup resources created in the template.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "DBSnapshotIdentifier": {
      "description": "The name or Amazon Resource Name (ARN) of the DB snapshot that's used to restore the DB instance. If you're restoring from a shared manual DB snapshot, you must specify the ARN of the snapshot.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DBSubnetGroupName": {
      "description": "A DB subnet group to associate with the DB instance. If you update this value, the new subnet group must be a subnet group in a new VPC.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "DeleteAutomatedBackups": {
      "description": "A value that indicates whether to remove automated backups immediately after the DB instance is deleted. This parameter isn't case-sensitive. The default is to remove  automated backups immediately after the DB instance is deleted.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "DeletionProtection": {
      "description": "A value that indicates whether the DB instance has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled. For more information, see  Deleting a DB Instance.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Domain": {
      "description": "For an Amazon RDS DB instance that's running Microsoft SQL Server, this parameter specifies the Active Directory directory ID to create the instance in. Amazon RDS uses Windows Authentication to authenticate users that connect to the DB instance. For more information, see Using Windows Authentication with an Amazon RDS DB Instance Running Microsoft SQL Server in the Amazon RDS User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DomainIAMRoleName": {
      "description": "Specify the name of the IAM role to be used when making API calls to the Directory Service.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EnableCloudwatchLogsExports": {
      "description": "The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in the list depend on the DB engine being used. For more information, see Publishing Database Logs to Amazon CloudWatch Logs  in the Amazon Relational Database Service User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "EnableIAMDatabaseAuthentication": {
      "description": "A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts. By default, mapping is disabled.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "EnablePerformanceInsights": {
      "description": "A value that indicates whether to enable Performance Insights for the DB instance.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Engine": {
      "description": "The name of the database engine that you want to use for this DB instance. For valid values, see the Engine parameter of the CreateDBInstance action in the Amazon RDS API Reference.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EngineVersion": {
      "description": "The version number of the database engine to use.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "Iops": {
      "description": "The number of I/O operations per second (IOPS) that the database provisions. The value must be equal to or greater than 1000.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "KmsKeyId": {
      "description": "The ARN of the AWS Key Management Service (AWS KMS) master key that's used to encrypt the DB instance, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, AWS CloudFormation uses the default master key. If you specify this property, you must set the StorageEncrypted property to true.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LicenseModel": {
      "description": "License model information for this DB instance.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MasterUserPassword": {
      "description": "The password for the master user. The password can include any printable ASCII character except \"/\", \"\"\", or \"@\".",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MasterUsername": {
      "description": "The master user name for the DB instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "MonitoringInterval": {
      "description": "The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0.",
      "required": false,
      "type": "Number",
      "update_causes": "unknown"
    },
    "MonitoringRoleArn": {
      "description": "The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to Amazon CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess. For information on creating a monitoring role, go to Setting Up and Enabling Enhanced Monitoring in the Amazon RDS User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MultiAZ": {
      "description": "Specifies whether the database instance is a multiple Availability Zone deployment. You can't set the AvailabilityZone parameter if the MultiAZ parameter is set to true. Amazon Aurora storage is replicated across all the Availability Zones and doesn't require the MultiAZ option to be set.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "OptionGroupName": {
      "description": "Indicates that the DB instance should be associated with the specified option group.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PerformanceInsightsKMSKeyId": {
      "description": "The AWS KMS key identifier for encryption of Performance Insights data. The KMS key ID is the Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for the KMS encryption key.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "PerformanceInsightsRetentionPeriod": {
      "description": "The amount of time, in days, to retain Performance Insights data. Valid values are 7 or 731 (2 years).",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "Port": {
      "description": "The port number on which the database accepts connections.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PreferredBackupWindow": {
      "description": "The daily time range during which automated backups are created if automated backups are enabled, using the BackupRetentionPeriod parameter. For more information, see The Backup Window in the Amazon RDS User Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PreferredMaintenanceWindow": {
      "description": "The weekly time range (in UTC) during which system maintenance can occur.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "ProcessorFeatures": {
      "description": "The number of CPU cores and the number of threads per core for the DB instance class of the DB instance.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "PromotionTier": {
      "description": "A value that specifies the order in which an Aurora Replica is promoted to the primary instance after a failure of the existing primary instance. For more information, see Fault Tolerance for an Aurora DB Cluster in the Amazon Aurora User Guide.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "PubliclyAccessible": {
      "description": "Indicates whether the DB instance is an internet-facing instance. If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an internal instance with a DNS name that resolves to a private IP address.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "SourceDBInstanceIdentifier": {
      "description": "If you want to create a Read Replica DB instance, specify the ID of the source DB instance. Each DB instance can have a limited number of Read Replicas. For more information, see Working with Read Replicas in the Amazon Relational Database Service Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceRegion": {
      "description": "The ID of the region that contains the source DB instance for the Read Replica.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "StorageEncrypted": {
      "description": "A value that indicates whether the DB instance is encrypted. By default, it is not encrypted.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "StorageType": {
      "description": "Specifies the storage type to be associated with the DB instance.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    },
    "Tags": {
      "description": "Tags to assign to the DB instance.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Timezone": {
      "description": "The time zone of the DB instance. The time zone parameter is currently supported only by Microsoft SQL Server.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "UseDefaultProcessorFeatures": {
      "description": "A value that indicates whether the DB instance class of the DB instance uses its default processor features.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "VPCSecurityGroups": {
      "description": "A list of the VPC security group IDs to assign to the DB instance. The list can include both the physical IDs of existing VPC security groups and references to AWS::EC2::SecurityGroup resources created in the template.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-rds-database-instance.html",
  "properties": [
    "AllocatedStorage",
    "AllowMajorVersionUpgrade",
    "AutoMinorVersionUpgrade",
    "AvailabilityZone",
    "BackupRetentionPeriod",
    "CharacterSetName",
    "CopyTagsToSnapshot",
    "DBClusterIdentifier",
    "DBInstanceClass",
    "DBInstanceIdentifier",
    "DBName",
    "DBParameterGroupName",
    "DBSecurityGroups",
    "DBSnapshotIdentifier",
    "DBSubnetGroupName",
    "DeleteAutomatedBackups",
    "DeletionProtection",
    "Domain",
    "DomainIAMRoleName",
    "EnableCloudwatchLogsExports",
    "EnableIAMDatabaseAuthentication",
    "EnablePerformanceInsights",
    "Engine",
    "EngineVersion",
    "Iops",
    "KmsKeyId",
    "LicenseModel",
    "MasterUsername",
    "MasterUserPassword",
    "MonitoringInterval",
    "MonitoringRoleArn",
    "MultiAZ",
    "OptionGroupName",
    "PerformanceInsightsKMSKeyId",
    "PerformanceInsightsRetentionPeriod",
    "Port",
    "PreferredBackupWindow",
    "PreferredMaintenanceWindow",
    "ProcessorFeatures",
    "PromotionTier",
    "PubliclyAccessible",
    "SourceDBInstanceIdentifier",
    "SourceRegion",
    "StorageEncrypted",
    "StorageType",
    "Tags",
    "Timezone",
    "UseDefaultProcessorFeatures",
    "VPCSecurityGroups"
  ]
},
"AWS::RDS::DBParameterGroup": {
  "full_properties": {
    "Description": {
      "description": "Provides the customer-specified description for this DB parameter group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Family": {
      "description": "The DB parameter group family name. A DB parameter group can be associated with one and only one DB parameter group family, and can be applied only to a DB instance running a DB engine and engine version compatible with that DB parameter group family.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Parameters": {
      "description": "An array of parameter names, values, and the apply method for the parameter update. At least one parameter name, value, and apply method must be supplied; subsequent arguments are optional. A maximum of 20 parameters may be modified in a single request. For more information, see Working with DB Parameter Groups in the Amazon RDS User Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Tags to assign to the DB parameter group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-rds-dbparametergroup.html",
  "properties": [
    "Description",
    "Family",
    "Parameters",
    "Tags"
  ]
},
"AWS::RDS::DBSecurityGroup": {
  "full_properties": {
    "DBSecurityGroupIngress": {
      "description": "Ingress rules to be applied to the DB security group.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "EC2VpcId": {
      "description": "The identifier of an Amazon VPC. This property indicates the VPC that this DB security group belongs to.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "GroupDescription": {
      "description": "Provides the description of the DB security group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Tags to assign to the DB security group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-rds-security-group.html",
  "properties": [
    "DBSecurityGroupIngress",
    "EC2VpcId",
    "GroupDescription",
    "Tags"
  ]
},
"AWS::RDS::DBSecurityGroupIngress": {
  "full_properties": {
    "CIDRIP": {
      "description": "The IP range to authorize.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DBSecurityGroupName": {
      "description": "The name of the DB security group to add authorization to.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "EC2SecurityGroupId": {
      "description": "Id of the EC2 security group to authorize. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EC2SecurityGroupName": {
      "description": "Name of the EC2 security group to authorize. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "EC2SecurityGroupOwnerId": {
      "description": "AWS account number of the owner of the EC2 security group specified in the EC2SecurityGroupName parameter. The AWS Access Key ID is not an acceptable value. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-rds-security-group-ingress.html",
  "properties": [
    "CIDRIP",
    "DBSecurityGroupName",
    "EC2SecurityGroupId",
    "EC2SecurityGroupName",
    "EC2SecurityGroupOwnerId"
  ]
},
"AWS::RDS::DBSubnetGroup": {
  "full_properties": {
    "DBSubnetGroupDescription": {
      "description": "The description for the DB subnet group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "DBSubnetGroupName": {
      "description": "The name for the DB subnet group. This value is stored as a lowercase string.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SubnetIds": {
      "description": "The EC2 Subnet IDs for the DB subnet group.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Tags to assign to the DB subnet group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-rds-dbsubnet-group.html",
  "properties": [
    "DBSubnetGroupDescription",
    "DBSubnetGroupName",
    "SubnetIds",
    "Tags"
  ]
},
"AWS::RDS::EventSubscription": {
  "full_properties": {
    "Enabled": {
      "description": "A value that indicates whether to activate the subscription. If the event notification subscription is not activated, the subscription is created but not active.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "EventCategories": {
      "description": "A list of event categories for a SourceType that you want to subscribe to. You can see a list of the categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "SnsTopicArn": {
      "description": "The Amazon Resource Name (ARN) of the SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourceIds": {
      "description": "The list of identifiers of the event sources for which events are returned. If not specified, then all sources are included in the response. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens; it can't end with a hyphen or contain two consecutive hyphens.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SourceType": {
      "description": "The type of source that is generating the events. For example, if you want to be notified of events generated by a DB instance, you would set this parameter to db-instance. if this value is not specified, all events are returned.",
      "required": false,
      "type": "String",
      "update_causes": "unknown"
    }
  },
  "path": "aws-resource-rds-eventsubscription.html",
  "properties": [
    "Enabled",
    "EventCategories",
    "SnsTopicArn",
    "SourceIds",
    "SourceType"
  ]
},
"AWS::RDS::OptionGroup": {
  "full_properties": {
    "EngineName": {
      "description": "Specifies the name of the engine that this option group should be associated with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "MajorEngineVersion": {
      "description": "Specifies the major version of the engine that this option group should be associated with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "OptionConfigurations": {
      "description": "A list of all available options",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    },
    "OptionGroupDescription": {
      "description": "The description of the option group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Tags to assign to the option group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-rds-optiongroup.html",
  "properties": [
    "EngineName",
    "MajorEngineVersion",
    "OptionConfigurations",
    "OptionGroupDescription",
    "Tags"
  ]
},
"AWS::Redshift::Cluster": {
  "full_properties": {
    "AllowVersionUpgrade": {
      "description": "If true, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "AutomatedSnapshotRetentionPeriod": {
      "description": "The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with CreateClusterSnapshot.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "AvailabilityZone": {
      "description": "The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ClusterIdentifier": {
      "description": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ClusterParameterGroupName": {
      "description": "The name of the parameter group to be associated with this cluster.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ClusterSecurityGroups": {
      "description": "A list of security groups to be associated with this cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ClusterSubnetGroupName": {
      "description": "The name of a cluster subnet group to be associated with this cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ClusterType": {
      "description": "The type of the cluster. When cluster type is specified as",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ClusterVersion": {
      "description": "The version of the Amazon Redshift engine software that you want to deploy on the cluster.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DBName": {
      "description": "The name of the first database to be created when the cluster is created.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ElasticIp": {
      "description": "The Elastic IP (EIP) address for the cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Encrypted": {
      "description": "If true, the data in the cluster is encrypted at rest.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "HsmClientCertificateIdentifier": {
      "description": "Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "HsmConfigurationIdentifier": {
      "description": "Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "IamRoles": {
      "description": "A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. You can supply up to 10 IAM roles in a single request.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "KmsKeyId": {
      "description": "The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LoggingProperties": {
      "description": "Specifies logging information, such as queries and connection attempts, for the specified Amazon Redshift cluster.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MasterUserPassword": {
      "description": "The password associated with the master user account for the cluster that is being created.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "MasterUsername": {
      "description": "The user name associated with the master user account for the cluster that is being created.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "NodeType": {
      "description": "The node type to be provisioned for the cluster. For information about node types, go to  Working with Clusters in the Amazon Redshift Cluster Management Guide.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "NumberOfNodes": {
      "description": "The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "OwnerAccount": {
      "description": "The AWS customer account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Port": {
      "description": "The port number on which the cluster accepts incoming connections.",
      "required": false,
      "type": "Number",
      "update_causes": "replacement"
    },
    "PreferredMaintenanceWindow": {
      "description": "The weekly time range (in UTC) during which automated cluster maintenance can occur.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PubliclyAccessible": {
      "description": "If true, the cluster can be accessed from a public network.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "SnapshotClusterIdentifier": {
      "description": "The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SnapshotIdentifier": {
      "description": "The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A list of tag instances.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcSecurityGroupIds": {
      "description": "A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-redshift-cluster.html",
  "properties": [
    "AllowVersionUpgrade",
    "AutomatedSnapshotRetentionPeriod",
    "AvailabilityZone",
    "ClusterIdentifier",
    "ClusterParameterGroupName",
    "ClusterSecurityGroups",
    "ClusterSubnetGroupName",
    "ClusterType",
    "ClusterVersion",
    "DBName",
    "ElasticIp",
    "Encrypted",
    "HsmClientCertificateIdentifier",
    "HsmConfigurationIdentifier",
    "IamRoles",
    "KmsKeyId",
    "LoggingProperties",
    "MasterUsername",
    "MasterUserPassword",
    "NodeType",
    "NumberOfNodes",
    "OwnerAccount",
    "Port",
    "PreferredMaintenanceWindow",
    "PubliclyAccessible",
    "SnapshotClusterIdentifier",
    "SnapshotIdentifier",
    "Tags",
    "VpcSecurityGroupIds"
  ]
},
"AWS::Redshift::ClusterParameterGroup": {
  "full_properties": {
    "Description": {
      "description": "The description of the parameter group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ParameterGroupFamily": {
      "description": "The name of the cluster parameter group family that this cluster parameter group is compatible with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Parameters": {
      "description": "An array of parameters to be modified. A maximum of 20 parameters can be modified in a single request.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The list of tags for the cluster parameter group.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-redshift-clusterparametergroup.html",
  "properties": [
    "Description",
    "ParameterGroupFamily",
    "Parameters",
    "Tags"
  ]
},
"AWS::Redshift::ClusterSecurityGroup": {
  "full_properties": {
    "Description": {
      "description": "A description for the security group.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "Specifies an arbitrary set of tags (key–value pairs) to associate with this security group. Use tags to manage your resources.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-redshift-clustersecuritygroup.html",
  "properties": [
    "Description",
    "Tags"
  ]
},
"AWS::Redshift::ClusterSecurityGroupIngress": {
  "full_properties": {
    "CIDRIP": {
      "description": "The IP range to be added the Amazon Redshift security group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ClusterSecurityGroupName": {
      "description": "The name of the security group to which the ingress rule is added.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EC2SecurityGroupName": {
      "description": "The EC2 security group to be added the Amazon Redshift security group.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "EC2SecurityGroupOwnerId": {
      "description": "The AWS account number of the owner of the security group specified by the EC2SecurityGroupName parameter. The AWS Access Key ID is not an acceptable value.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-redshift-clustersecuritygroupingress.html",
  "properties": [
    "CIDRIP",
    "ClusterSecurityGroupName",
    "EC2SecurityGroupName",
    "EC2SecurityGroupOwnerId"
  ]
},
"AWS::Redshift::ClusterSubnetGroup": {
  "full_properties": {
    "Description": {
      "description": "A description for the subnet group.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "SubnetIds": {
      "description": "An array of VPC subnet IDs. A maximum of 20 subnets can be modified in a single request.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Specifies an arbitrary set of tags (key–value pairs) to associate with this subnet group. Use tags to manage your resources.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-redshift-clustersubnetgroup.html",
  "properties": [
    "Description",
    "SubnetIds",
    "Tags"
  ]
},
"AWS::RoboMaker::Fleet": {
  "full_properties": {
    "Name": {
      "description": "The name of the fleet.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The list of all tags added to the fleet.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-robomaker-fleet.html",
  "properties": [
    "Name",
    "Tags"
  ]
},
"AWS::RoboMaker::Robot": {
  "full_properties": {
    "Architecture": {
      "description": "The architecture of the robot.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Fleet": {
      "description": "The Amazon Resource Name (ARN) of the fleet to which the robot will be registered.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "GreengrassGroupId": {
      "description": "The Greengrass group associated with the robot.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the robot.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A map that contains tag keys and tag values that are attached to the robot.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-robomaker-robot.html",
  "properties": [
    "Architecture",
    "Fleet",
    "GreengrassGroupId",
    "Name",
    "Tags"
  ]
},
"AWS::RoboMaker::RobotApplication": {
  "full_properties": {
    "CurrentRevisionId": {
      "description": "The current revision id.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the robot application.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RobotSoftwareSuite": {
      "description": "The robot software suite used by the robot application.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Sources": {
      "description": "The sources of the robot application.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "A map that contains tag keys and tag values that are attached to the robot application.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-robomaker-robotapplication.html",
  "properties": [
    "CurrentRevisionId",
    "Name",
    "RobotSoftwareSuite",
    "Sources",
    "Tags"
  ]
},
"AWS::RoboMaker::RobotApplicationVersion": {
  "full_properties": {
    "Application": {
      "description": "The application information for the robot application.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "CurrentRevisionId": {
      "description": "The current revision id for the robot application. If you provide a value and it matches the latest revision ID, a new version will be created.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-robomaker-robotapplicationversion.html",
  "properties": [
    "Application",
    "CurrentRevisionId"
  ]
},
"AWS::RoboMaker::SimulationApplication": {
  "full_properties": {
    "CurrentRevisionId": {
      "description": "The current revision id.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the simulation application.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RenderingEngine": {
      "description": "The rendering engine for the simulation application.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "RobotSoftwareSuite": {
      "description": "The robot software suite of the simulation application.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "SimulationSoftwareSuite": {
      "description": "The simulation software suite used by the simulation application.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Sources": {
      "description": "The sources of the simulation application.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "A map that contains tag keys and tag values that are attached to the simulation application.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-robomaker-simulationapplication.html",
  "properties": [
    "CurrentRevisionId",
    "Name",
    "RenderingEngine",
    "RobotSoftwareSuite",
    "SimulationSoftwareSuite",
    "Sources",
    "Tags"
  ]
},
"AWS::RoboMaker::SimulationApplicationVersion": {
  "full_properties": {
    "Application": {
      "description": "The application information for the simulation application.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "CurrentRevisionId": {
      "description": "The current revision id for the simulation application. If you provide a value and it matches the latest revision ID, a new version will be created.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-robomaker-simulationapplicationversion.html",
  "properties": [
    "Application",
    "CurrentRevisionId"
  ]
},
"AWS::Route53::HealthCheck": {
  "full_properties": {
    "HealthCheckConfig": {
      "description": "A complex type that contains detailed information about one health check.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "HealthCheckTags": {
      "description": "The HealthCheckTags property describes key-value pairs that are associated with an AWS::Route53::HealthCheck resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-route53-healthcheck.html",
  "properties": [
    "HealthCheckConfig",
    "HealthCheckTags"
  ]
},
"AWS::Route53::HostedZone": {
  "full_properties": {
    "HostedZoneConfig": {
      "description": "(Optional) A complex type that contains the following optional values:",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "HostedZoneTags": {
      "description": "Adds, edits, or deletes tags for a health check or a hosted zone.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the domain. Specify a fully qualified domain name, for example, www.example.com. The trailing dot is optional; Amazon Route 53 assumes that the domain name is fully qualified. This means that Route 53 treats www.example.com (without a trailing dot) and www.example.com. (with a trailing dot) as identical.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "QueryLoggingConfig": {
      "description": "Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "VPCs": {
      "description": "A complex type that contains information about the VPCs that are associated with the specified hosted zone.",
      "required": false,
      "type": "Array",
      "update_causes": "unknown"
    }
  },
  "path": "aws-resource-route53-hostedzone.html",
  "properties": [
    "HostedZoneConfig",
    "HostedZoneTags",
    "Name",
    "QueryLoggingConfig",
    "VPCs"
  ]
},
"AWS::Route53::RecordSet": {
  "full_properties": {
    "AliasTarget": {
      "description": "Alias resource record sets only: Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Comment": {
      "description": "Optional: Any comments you want to include about a change batch request.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Failover": {
      "description": "Failover resource record sets only: To configure failover, you add the Failover element to two resource record sets. For one resource record set, you specify PRIMARY as the value for Failover; for the other resource record set, you specify SECONDARY. In addition, you include the HealthCheckId element and specify the health check that you want Amazon Route 53 to perform for each resource record set.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "GeoLocation": {
      "description": "Geolocation resource record sets only: A complex type that lets you control how Amazon Route 53 responds to DNS queries  based on the geographic origin of the query. For example, if you want all queries from Africa to be routed to a web server with an IP address of 192.0.2.111, create a resource record set with a Type of A and a ContinentCode of AF.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "HealthCheckId": {
      "description": "If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the HealthCheckId element and specify the ID of the applicable health check.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "HostedZoneId": {
      "description": "The ID of the hosted zone that you want to create the record in.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "HostedZoneName": {
      "description": "The name of the domain for the hosted zone where you want to add the resource record set.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "MultiValueAnswer": {
      "description": "Multivalue answer resource record sets only: To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer. Note the following:",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Name": {
      "description": "For ChangeResourceRecordSets requests, the name of the record that you want to create, update, or delete. For ListResourceRecordSets responses, the name of a record in the specified hosted zone.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Region": {
      "description": "Latency-based resource record sets only: The Amazon EC2 Region where you created the resource that this resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or an ELB load balancer, and is referred to by an IP address or a DNS domain name, depending on the record type.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ResourceRecords": {
      "description": "One or more values that correspond with the value that you specified for the Type property. For example, if you specified A for Type, you specify one or more IP addresses in IPv4 format for ResourceRecords. For information about the format of values for each record type, see Supported DNS Resource Record Types in the Amazon Route 53 Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SetIdentifier": {
      "description": "Resource record sets that have a routing policy other than simple: An identifier that differentiates among multiple resource record sets that have the same combination of name and type, such as multiple weighted resource record sets named acme.example.com that have a type of A. In a group of resource record sets that have the same name and type, the value of SetIdentifier must be unique for each resource record set.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "TTL": {
      "description": "The resource record cache time to live (TTL), in seconds. Note the following:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Type": {
      "description": "The DNS record type. For information about different record types and how data is encoded for them, see Supported DNS Resource Record Types in the Amazon Route 53 Developer Guide.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Weight": {
      "description": "Weighted resource record sets only: Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's weight to the total. Note the following:",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-route53-recordset.html",
  "properties": [
    "AliasTarget",
    "Comment",
    "Failover",
    "GeoLocation",
    "HealthCheckId",
    "HostedZoneId",
    "HostedZoneName",
    "MultiValueAnswer",
    "Name",
    "Region",
    "ResourceRecords",
    "SetIdentifier",
    "TTL",
    "Type",
    "Weight"
  ]
},
"AWS::Route53::RecordSetGroup": {
  "full_properties": {
    "Comment": {
      "description": "Optional: Any comments you want to include about a change batch request.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "HostedZoneId": {
      "description": "The ID of the hosted zone that contains the resource record sets that you want to change.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "HostedZoneName": {
      "description": "The name of the hosted zone that you want to create resource record sets in.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RecordSets": {
      "description": "A complex type that contains one RecordSet element for each resource record set that you want to create.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-route53-recordsetgroup.html",
  "properties": [
    "Comment",
    "HostedZoneId",
    "HostedZoneName",
    "RecordSets"
  ]
},
"AWS::Route53Resolver::ResolverEndpoint": {
  "full_properties": {
    "Direction": {
      "description": "Indicates whether the resolver endpoint allows inbound or outbound DNS queries:",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "IpAddresses": {
      "description": "The subnets and IP addresses in your VPC that DNS queries originate from (for outbound endpoints) or that you forward DNS queries to (for inbound endpoints). The subnet ID uniquely identifies a VPC.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "A friendly name that lets you easily find a configuration in the Resolver dashboard in the Route 53 console.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SecurityGroupIds": {
      "description": "The ID of one or more security groups that control access to this VPC. The security group must include one or more inbound rules (for inbound endpoints) or outbound rules (for outbound endpoints). Inbound and outbound rules must allow TCP and UDP access. For inbound access, open port 53. For outbound access, open the port that you're using for DNS queries on your network.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A list of the tag keys and values that you want to associate with the endpoint.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-route53resolver-resolverendpoint.html",
  "properties": [
    "Direction",
    "IpAddresses",
    "Name",
    "SecurityGroupIds",
    "Tags"
  ]
},
"AWS::Route53Resolver::ResolverRule": {
  "full_properties": {
    "DomainName": {
      "description": "DNS queries for this domain name are forwarded to the IP addresses that are specified in TargetIps. If a query matches multiple resolver rules (example.com and www.example.com), the query is routed using the resolver rule that contains the most specific domain name (www.example.com).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name for the resolver rule, which you specified when you created the resolver rule.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ResolverEndpointId": {
      "description": "The ID of the endpoint that the rule is associated with.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RuleType": {
      "description": "This value is always FORWARD. Other resolver rule types aren't supported.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A list of the tag keys and values that you want to associate with the endpoint.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TargetIps": {
      "description": "An array that contains the IP addresses and ports that an outbound endpoint forwards DNS queries to. Typically, these are the IP addresses of DNS resolvers on your network. Specify IPv4 addresses. IPv6 is not supported.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-route53resolver-resolverrule.html",
  "properties": [
    "DomainName",
    "Name",
    "ResolverEndpointId",
    "RuleType",
    "Tags",
    "TargetIps"
  ]
},
"AWS::Route53Resolver::ResolverRuleAssociation": {
  "full_properties": {
    "Name": {
      "description": "The name of an association between a resolver rule and a VPC.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ResolverRuleId": {
      "description": "The ID of the resolver rule that you associated with the VPC that is specified by VPCId.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "VPCId": {
      "description": "The ID of the VPC that you associated the resolver rule with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-route53resolver-resolverruleassociation.html",
  "properties": [
    "Name",
    "ResolverRuleId",
    "VPCId"
  ]
},
"AWS::S3::Bucket": {
  "full_properties": {
    "AccelerateConfiguration": {
      "description": "Configures the transfer acceleration state for an Amazon S3 bucket. For more information, see Amazon S3 Transfer Acceleration in the Amazon Simple Storage Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "AccessControl": {
      "description": "A canned access control list (ACL) that grants predefined permissions to the bucket. For more information about canned ACLs, see Canned ACL in the Amazon Simple Storage Service Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AnalyticsConfigurations": {
      "description": "Specifies the configuration and any analyses for the analytics filter of an Amazon S3 bucket.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "BucketEncryption": {
      "description": "Specifies default encryption for a bucket using server-side encryption with Amazon S3-managed keys (SSE-S3) or AWS KMS-managed keys (SSE-KMS) bucket. For information about the Amazon S3 default encryption feature, see  Amazon S3 Default Encryption for S3 Buckets in the Amazon Simple Storage Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "BucketName": {
      "description": "A name for the bucket. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the bucket name. For more information, see Name Type. The bucket name must contain only lowercase letters, numbers, periods (.), and dashes (-).",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "CorsConfiguration": {
      "description": "Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing in the Amazon Simple Storage Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "InventoryConfigurations": {
      "description": "Specifies the inventory configuration for an Amazon S3 bucket. For more information, see GET Bucket inventory in the Amazon Simple Storage Service API Reference.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "LifecycleConfiguration": {
      "description": "Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For more information, see Object Lifecycle Management in the Amazon Simple Storage Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "LoggingConfiguration": {
      "description": "Settings that define where logs are stored.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MetricsConfigurations": {
      "description": "Specifies a metrics configuration for the CloudWatch request metrics (specified by the metrics configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics configuration, note that this is a full replacement of the existing metrics configuration. If you don't include the elements you want to keep, they are erased. For more information, see PUT Bucket metrics in the Amazon Simple Storage Service API Reference.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "NotificationConfiguration": {
      "description": "Configuration that defines how Amazon S3 handles bucket notifications.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ObjectLockConfiguration": {
      "description": "Places an object lock configuration on the specified bucket. The rule specified in the object lock configuration will be applied by default to every new object placed in the specified bucket.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ObjectLockEnabled": {
      "description": "Indicates whether this bucket has an object lock configuration enabled.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "PublicAccessBlockConfiguration": {
      "description": "Configuration that defines how Amazon S3 handles public access.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ReplicationConfiguration": {
      "description": "Configuration for replicating objects in an S3 bucket. To enable replication, you must also enable versioning by using the VersioningConfiguration property.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "An arbitrary set of tags (key-value pairs) for this S3 bucket.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VersioningConfiguration": {
      "description": "Enables multiple versions of all objects in this bucket. You might enable versioning to prevent objects from being deleted or overwritten by mistake or to archive objects so that you can retrieve previous versions of them.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "WebsiteConfiguration": {
      "description": "Information used to configure the bucket as a static website. For more information, see Hosting Websites on Amazon S3.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-s3-bucket.html",
  "properties": [
    "AccelerateConfiguration",
    "AccessControl",
    "AnalyticsConfigurations",
    "BucketEncryption",
    "BucketName",
    "CorsConfiguration",
    "InventoryConfigurations",
    "LifecycleConfiguration",
    "LoggingConfiguration",
    "MetricsConfigurations",
    "NotificationConfiguration",
    "ObjectLockConfiguration",
    "ObjectLockEnabled",
    "PublicAccessBlockConfiguration",
    "ReplicationConfiguration",
    "Tags",
    "VersioningConfiguration",
    "WebsiteConfiguration"
  ]
},
"AWS::S3::BucketPolicy": {
  "full_properties": {
    "Bucket": {
      "description": "The name of the Amazon S3 bucket to which the policy applies.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "PolicyDocument": {
      "description": "A policy document containing permissions to add to the specified bucket. For more information, see Access Policy Language Overview in the Amazon Simple Storage Service Developer Guide.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-s3-policy.html",
  "properties": [
    "Bucket",
    "PolicyDocument"
  ]
},
"AWS::SDB::Domain": {
  "full_properties": {
    "Description": {
      "description": "Information about the SimpleDB domain.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-simpledb.html",
  "properties": [
    "Description"
  ]
},
"AWS::SES::ConfigurationSet": {
  "full_properties": {
    "Name": {
      "description": "The name of the configuration set. The name must:",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ses-configurationset.html",
  "properties": [
    "Name"
  ]
},
"AWS::SES::ConfigurationSetEventDestination": {
  "full_properties": {
    "ConfigurationSetName": {
      "description": "The name of the configuration set that contains the event destination that you want to update.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "EventDestination": {
      "description": "The event destination object that you want to apply to the specified configuration set.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ses-configurationseteventdestination.html",
  "properties": [
    "ConfigurationSetName",
    "EventDestination"
  ]
},
"AWS::SES::ReceiptFilter": {
  "full_properties": {
    "Filter": {
      "description": "A data structure that describes the IP address filter that you want to specify. This object consists of a name, an IP address range, and a boolean that indicates whether to allow or block mail from the IP range.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ses-receiptfilter.html",
  "properties": [
    "Filter"
  ]
},
"AWS::SES::ReceiptRule": {
  "full_properties": {
    "After": {
      "description": "The name of the existing rule that you want to place the current rule after. If this parameter is null, the new rule is added as the first entry in the receipt rule set.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Rule": {
      "description": "A data structure that contains the specified rule's name, actions, recipients, domains, enabled status, scan status, and TLS policy.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "RuleSetName": {
      "description": "The name of the rule set that you want to add the receipt rule to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ses-receiptrule.html",
  "properties": [
    "After",
    "Rule",
    "RuleSetName"
  ]
},
"AWS::SES::ReceiptRuleSet": {
  "full_properties": {
    "RuleSetName": {
      "description": "The name of the receipt rule set that you want to reorder.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ses-receiptruleset.html",
  "properties": [
    "RuleSetName"
  ]
},
"AWS::SES::Template": {
  "full_properties": {
    "Template": {
      "description": "The content of the email, composed of a subject line, an HTML part, and a text-only part.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ses-template.html",
  "properties": [
    "Template"
  ]
},
"AWS::SNS::Subscription": {
  "full_properties": {
    "DeliveryPolicy": {
      "description": "The JSON serialization of the subscription's delivery policy. For more information, see  GetSubscriptionAttributes in the Amazon Simple Notification Service API Reference.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Endpoint": {
      "description": "The subscription's endpoint. The endpoint value depends on the protocol that you specify. For more information, see the Endpoint parameter of the Subscribe  action in the Amazon Simple Notification Service API Reference.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "FilterPolicy": {
      "description": "The filter policy JSON assigned to the subscription. For more information, see  GetSubscriptionAttributes in the Amazon Simple Notification Service API Reference.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Protocol": {
      "description": "The subscription's protocol. For more information, see the Protocol parameter of the Subscribe action in the Amazon Simple Notification Service API Reference.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RawMessageDelivery": {
      "description": "When set to true, enables raw message delivery. Raw messages don't contain any JSON formatting and can be sent to Amazon SQS and HTTP/S endpoints. For more information, see GetSubscriptionAttributes in the Amazon Simple Notification Service API Reference.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Region": {
      "description": "For cross-region subscriptions, the region in which the topic resides.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "TopicArn": {
      "description": "The ARN of the topic to subscribe to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-sns-subscription.html",
  "properties": [
    "DeliveryPolicy",
    "Endpoint",
    "FilterPolicy",
    "Protocol",
    "RawMessageDelivery",
    "Region",
    "TopicArn"
  ]
},
"AWS::SNS::Topic": {
  "full_properties": {
    "DisplayName": {
      "description": "The display name to use for an Amazon SNS topic with SMS subscriptions.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "KmsMasterKeyId": {
      "description": "The ID of an AWS-managed customer master key (CMK) for Amazon SNS or a custom CMK. For more information, see Key Terms. For more examples, see KeyId in the AWS Key Management Service API Reference.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Subscription": {
      "description": "The SNS subscriptions (endpoints) for this topic.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "TopicName": {
      "description": "The name of the topic you want to create. Topic names must include only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-properties-sns-topic.html",
  "properties": [
    "DisplayName",
    "KmsMasterKeyId",
    "Subscription",
    "TopicName"
  ]
},
"AWS::SNS::TopicPolicy": {
  "full_properties": {
    "PolicyDocument": {
      "description": "A policy document that contains permissions to add to the specified SNS topics.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Topics": {
      "description": "The Amazon Resource Names (ARN) of the topics to which you want to add the policy. You can use the Ref function to specify an AWS::SNS::Topic resource.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-sns-policy.html",
  "properties": [
    "PolicyDocument",
    "Topics"
  ]
},
"AWS::SQS::Queue": {
  "full_properties": {
    "ContentBasedDeduplication": {
      "description": "For first-in-first-out (FIFO) queues, specifies whether to enable content-based deduplication. During the deduplication interval, Amazon SQS treats messages that are sent with identical content as duplicates and delivers only one copy of the message. For more information, see the ContentBasedDeduplication attribute for the CreateQueue action in the Amazon Simple Queue Service API Reference.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "DelaySeconds": {
      "description": "The time in seconds for which the delivery of all messages in the queue is delayed. You can specify an integer value of 0 to 900 (15 minutes). The default value is 0.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "FifoQueue": {
      "description": "If set to true, creates a FIFO queue. If you don't specify this property, Amazon SQS creates a standard queue. For more information, see FIFO (First-In-First-Out) Queues in the Amazon Simple Queue Service Developer Guide.",
      "required": false,
      "type": "Boolean",
      "update_causes": "replacement"
    },
    "KmsDataKeyReusePeriodSeconds": {
      "description": "The length of time in seconds for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. The value must be an integer between 60 (1 minute) and 86,400 (24 hours). The default is 300 (5 minutes).",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "KmsMasterKeyId": {
      "description": "The ID of an AWS managed customer master key (CMK) for Amazon SQS or a custom CMK. To use the AWS managed CMK for Amazon SQS, specify the alias alias/aws/sqs. For more information, see the following:",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "MaximumMessageSize": {
      "description": "The limit of how many bytes that a message can contain before Amazon SQS rejects it. You can specify an integer value from 1,024 bytes (1 KiB) to 262,144 bytes (256 KiB). The default value is 262,144 (256 KiB).",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "MessageRetentionPeriod": {
      "description": "The number of seconds that Amazon SQS retains a message. You can specify an integer value from 60 seconds (1 minute) to 1,209,600 seconds (14 days). The default value is 345,600 seconds (4 days).",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "QueueName": {
      "description": "A name for the queue. To create a FIFO queue, the name of your FIFO queue must end with the .fifo suffix. For more information, see FIFO (First-In-First-Out) Queues in the Amazon Simple Queue Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "ReceiveMessageWaitTimeSeconds": {
      "description": "Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response, rather than returning an empty response if a message isn't yet available. You can specify an integer from 1 to 20. Short polling is used as the default or when you specify 0 for this property. For more information, see Amazon SQS Long Poll.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    },
    "RedrivePolicy": {
      "description": "A string that includes the parameters for the dead-letter queue functionality (redrive policy) of the source queue. For more information about the redrive policy and dead-letter queues, see Using Amazon SQS Dead-Letter Queues in the Amazon Simple Queue Service Developer Guide.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The tags that you attach to this queue. For more information, see Resource Tag in the AWS CloudFormation User Guide.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VisibilityTimeout": {
      "description": "The length of time during which a message will be unavailable after a message is delivered from the queue. This blocks other components from receiving the same message and gives the initial component time to process and delete the message from the queue.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-sqs-queues.html",
  "properties": [
    "ContentBasedDeduplication",
    "DelaySeconds",
    "FifoQueue",
    "KmsDataKeyReusePeriodSeconds",
    "KmsMasterKeyId",
    "MaximumMessageSize",
    "MessageRetentionPeriod",
    "QueueName",
    "ReceiveMessageWaitTimeSeconds",
    "RedrivePolicy",
    "Tags",
    "VisibilityTimeout"
  ]
},
"AWS::SQS::QueuePolicy": {
  "full_properties": {
    "PolicyDocument": {
      "description": "A policy document that contains the permissions for the specified Amazon SQS queues. For more information about Amazon SQS policies, see Creating Custom Policies Using the Access Policy Language in the Amazon Simple Queue Service Developer Guide.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Queues": {
      "description": "The URLs of the queues to which you want to add the policy. You can use the Ref function to specify an AWS::SQS::Queue resource.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-properties-sqs-policy.html",
  "properties": [
    "PolicyDocument",
    "Queues"
  ]
},
"AWS::SSM::Association": {
  "full_properties": {
    "AssociationName": {
      "description": "The name of the association.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DocumentVersion": {
      "description": "The version of the SSM document to associate with the target.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "InstanceId": {
      "description": "The ID of the instance that the SSM document is associated with. You must specify the InstanceId or Targets property.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the Systems Manager document.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "OutputLocation": {
      "description": "An Amazon S3 bucket where you want to store the output details of the request.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Parameters": {
      "description": "The parameters for the runtime configuration of the document.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ScheduleExpression": {
      "description": "A cron expression that specifies a schedule when the association runs.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Targets": {
      "description": "The targets for the association. You must specify the InstanceId or Targets property.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ssm-association.html",
  "properties": [
    "AssociationName",
    "DocumentVersion",
    "InstanceId",
    "Name",
    "OutputLocation",
    "Parameters",
    "ScheduleExpression",
    "Targets"
  ]
},
"AWS::SSM::Document": {
  "full_properties": {
    "Content": {
      "description": "A valid JSON or YAML string.",
      "required": true,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "DocumentType": {
      "description": "The type of document to create. Valid document types include: Command, Policy, Automation, Session, and Package.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "AWS CloudFormation resource tags to apply to the document. Use tags to help you identify and categorize resources.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ssm-document.html",
  "properties": [
    "Content",
    "DocumentType",
    "Tags"
  ]
},
"AWS::SSM::MaintenanceWindow": {
  "full_properties": {
    "AllowUnassociatedTargets": {
      "description": "Enables a maintenance window task to run on managed instances, even if you have not registered those instances as targets. If enabled, then you must specify the unregistered instances (by instance ID) when you register a task with the maintenance window.",
      "required": true,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Cutoff": {
      "description": "The number of hours before the end of the maintenance window that Systems Manager stops scheduling new tasks for execution.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the maintenance window.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Duration": {
      "description": "The duration of the maintenance window in hours.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "EndDate": {
      "description": "The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled to become inactive.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the maintenance window.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Schedule": {
      "description": "The schedule of the maintenance window in the form of a cron or rate expression.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ScheduleTimezone": {
      "description": "The time zone that the scheduled maintenance window executions are based on, in Internet Assigned Numbers Authority (IANA) format.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "StartDate": {
      "description": "The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled to become active. StartDate allows you to delay activation of the Maintenance Window until the specified future date.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Optional metadata that you assign to a resource in the form of an arbitrary set of tags (key-value pairs). Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag a maintenance window to identify the type of tasks it will run, the types of targets, and the environment it will run in.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ssm-maintenancewindow.html",
  "properties": [
    "AllowUnassociatedTargets",
    "Cutoff",
    "Description",
    "Duration",
    "EndDate",
    "Name",
    "Schedule",
    "ScheduleTimezone",
    "StartDate",
    "Tags"
  ]
},
"AWS::SSM::MaintenanceWindowTarget": {
  "full_properties": {
    "Description": {
      "description": "A description for the target.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name for the maintenance window target.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "OwnerInformation": {
      "description": "A user-provided value that will be included in any CloudWatch events that are raised while running tasks for these targets in this maintenance window.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ResourceType": {
      "description": "The type of target that is being registered with the maintenance window.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Targets": {
      "description": "The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "WindowId": {
      "description": "The ID of the maintenance window to register the target with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ssm-maintenancewindowtarget.html",
  "properties": [
    "Description",
    "Name",
    "OwnerInformation",
    "ResourceType",
    "Targets",
    "WindowId"
  ]
},
"AWS::SSM::MaintenanceWindowTask": {
  "full_properties": {
    "Description": {
      "description": "A description of the task.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "LoggingInfo": {
      "description": "Information about an Amazon S3 bucket to write task-level logs to.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MaxConcurrency": {
      "description": "The maximum number of targets this task can be run for, in parallel.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "MaxErrors": {
      "description": "The maximum number of errors allowed before this task stops being scheduled.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The task name.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Priority": {
      "description": "The priority of the task in the maintenance window. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    },
    "ServiceRoleArn": {
      "description": "The ARN of the IAM service role to use to publish Amazon Simple Notification Service (Amazon SNS) notifications for maintenance window Run Command tasks.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Targets": {
      "description": "The targets, either instances or window target IDs.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "TaskArn": {
      "description": "The resource that the task uses during execution.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TaskInvocationParameters": {
      "description": "The parameters to pass to the task when it runs. Populate only the fields that match the task type. All other fields should be empty.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TaskParameters": {
      "description": "The parameters to pass to the task when it runs.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "TaskType": {
      "description": "The type of task. Valid values: RUN_COMMAND, AUTOMATION, LAMBDA, STEP_FUNCTIONS.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "WindowId": {
      "description": "The ID of the maintenance window where the task is registered.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ssm-maintenancewindowtask.html",
  "properties": [
    "Description",
    "LoggingInfo",
    "MaxConcurrency",
    "MaxErrors",
    "Name",
    "Priority",
    "ServiceRoleArn",
    "Targets",
    "TaskArn",
    "TaskInvocationParameters",
    "TaskParameters",
    "TaskType",
    "WindowId"
  ]
},
"AWS::SSM::Parameter": {
  "full_properties": {
    "AllowedPattern": {
      "description": "A regular expression used to validate the parameter value. For example, for String types with values restricted to numbers, you can specify the following: AllowedPattern=^\\d+$",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "Information about the parameter.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the parameter.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Policies": {
      "description": "Information about the policies assigned to a parameter.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Optional metadata that you assign to a resource in the form of an arbitrary set of tags (key-value pairs). Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag a Systems Manager parameter to identify the type of resource to which it applies, the environment, or the type of configuration data referenced by the parameter.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tier": {
      "description": "The parameter tier.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Type": {
      "description": "The type of parameter.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Value": {
      "description": "The parameter value.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ssm-parameter.html",
  "properties": [
    "AllowedPattern",
    "Description",
    "Name",
    "Policies",
    "Tags",
    "Tier",
    "Type",
    "Value"
  ]
},
"AWS::SSM::PatchBaseline": {
  "full_properties": {
    "ApprovalRules": {
      "description": "A set of rules used to include patches in the baseline.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "ApprovedPatches": {
      "description": "A list of explicitly approved patches for the baseline.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ApprovedPatchesComplianceLevel": {
      "description": "Defines the compliance level for approved patches. This means that if an approved patch is reported as missing, this is the severity of the compliance violation. The default value is UNSPECIFIED.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ApprovedPatchesEnableNonSecurity": {
      "description": "Indicates whether the list of approved patches includes non-security updates that should be applied to the instances. The default value is 'false'. Applies to Linux instances only.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Description": {
      "description": "A description of the patch baseline.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "GlobalFilters": {
      "description": "A set of global filters used to include patches in the baseline.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the patch baseline.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "OperatingSystem": {
      "description": "Defines the operating system the patch baseline applies to. The Default value is WINDOWS.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PatchGroups": {
      "description": "The name of the patch group that should be registered with the patch baseline.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "RejectedPatches": {
      "description": "A list of explicitly rejected patches for the baseline.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "RejectedPatchesAction": {
      "description": "The action for Patch Manager to take on patches included in the RejectedPackages list.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Sources": {
      "description": "Information about the patches to use to update the instances, including target operating systems and source repositories. Applies to Linux instances only.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag a patch baseline to identify the severity level of patches it specifies and the operating system family it applies to.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-ssm-patchbaseline.html",
  "properties": [
    "ApprovalRules",
    "ApprovedPatches",
    "ApprovedPatchesComplianceLevel",
    "ApprovedPatchesEnableNonSecurity",
    "Description",
    "GlobalFilters",
    "Name",
    "OperatingSystem",
    "PatchGroups",
    "RejectedPatches",
    "RejectedPatchesAction",
    "Sources",
    "Tags"
  ]
},
"AWS::SSM::ResourceDataSync": {
  "full_properties": {
    "BucketName": {
      "description": "The name of the Amazon S3 bucket where the aggregated data is stored.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "BucketPrefix": {
      "description": "An Amazon S3 prefix for the bucket.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "BucketRegion": {
      "description": "The AWS Region with the Amazon S3 bucket targeted by the Resource Data Sync.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "KMSKeyArn": {
      "description": "The ARN of an encryption key for a destination in Amazon S3. You can use a KMS key to encrypt inventory data in Amazon S3. You must specify a key that exist in the same region as the destination Amazon S3 bucket.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SyncFormat": {
      "description": "A supported sync format. The following format is currently supported: JsonSerDe",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SyncName": {
      "description": "A name for the Resource Data Sync.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ssm-resourcedatasync.html",
  "properties": [
    "BucketName",
    "BucketPrefix",
    "BucketRegion",
    "KMSKeyArn",
    "SyncFormat",
    "SyncName"
  ]
},
"AWS::SageMaker::CodeRepository": {
  "full_properties": {
    "CodeRepositoryName": {
      "description": "The name of the Git repository.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "GitConfig": {
      "description": "Configuration details for the Git repository, including the URL where it is located and the ARN of the AWS Secrets Manager secret that contains the credentials used to access the repository.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-sagemaker-coderepository.html",
  "properties": [
    "CodeRepositoryName",
    "GitConfig"
  ]
},
"AWS::SageMaker::Endpoint": {
  "full_properties": {
    "EndpointConfigName": {
      "description": "The name of the AWS::SageMaker::EndpointConfig resource that specifies the configuration for the endpoint. For more information, see CreateEndpointConfig.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "EndpointName": {
      "description": "The name of the endpoint. The name must be unique within an AWS Region in your AWS account.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A list of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-sagemaker-endpoint.html",
  "properties": [
    "EndpointConfigName",
    "EndpointName",
    "Tags"
  ]
},
"AWS::SageMaker::EndpointConfig": {
  "full_properties": {
    "EndpointConfigName": {
      "description": "The name of the endpoint configuration. You specify this name in a CreateEndpoint request.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "KmsKeyId": {
      "description": "The Amazon Resource Name (ARN) of a AWS Key Management Service key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance that hosts the endpoint.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProductionVariants": {
      "description": "A list of ProductionVariant objects, one for each model that you want to host at this endpoint.",
      "required": true,
      "type": "Array",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A list of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-sagemaker-endpointconfig.html",
  "properties": [
    "EndpointConfigName",
    "KmsKeyId",
    "ProductionVariants",
    "Tags"
  ]
},
"AWS::SageMaker::Model": {
  "full_properties": {
    "Containers": {
      "description": "Specifies the containers in the inference pipeline.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "ExecutionRoleArn": {
      "description": "The Amazon Resource Name (ARN) of the IAM role that Amazon SageMaker can assume to access model artifacts and docker image for deployment on ML compute instances or for batch transform jobs. Deploying on ML compute instances is part of model hosting. For more information, see Amazon SageMaker Roles.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ModelName": {
      "description": "The name of the new model.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PrimaryContainer": {
      "description": "The location of the primary docker image containing inference code, associated artifacts, and custom environment map that the inference code uses when the model is deployed for predictions.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A list of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VpcConfig": {
      "description": "A VpcConfig object that specifies the VPC that you want your model to connect to. Control access to and from your model container by configuring the VPC. VpcConfig is used in hosting services and in batch transform. For more information, see Protect Endpoints by Using an Amazon Virtual Private Cloud and Protect Data in Batch Transform Jobs by Using an Amazon Virtual Private Cloud.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-sagemaker-model.html",
  "properties": [
    "Containers",
    "ExecutionRoleArn",
    "ModelName",
    "PrimaryContainer",
    "Tags",
    "VpcConfig"
  ]
},
"AWS::SageMaker::NotebookInstance": {
  "full_properties": {
    "AcceleratorTypes": {
      "description": "A list of Elastic Inference (EI) instance types to associate with this notebook instance. Currently, only one instance type can be associated with a notebook instance. For more information, see Using Elastic Inference in Amazon SageMaker.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "AdditionalCodeRepositories": {
      "description": "An array of up to three Git repositories associated with the notebook instance. These can be either the names of Git repositories stored as resources in your account, or the URL of Git repositories in AWS CodeCommit or in any other Git repository. These repositories are cloned at the same level as the default repository of your notebook instance. For more information, see Associating Git Repositories with Amazon SageMaker Notebook Instances.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "DefaultCodeRepository": {
      "description": "The Git repository associated with the notebook instance as its default code repository. This can be either the name of a Git repository stored as a resource in your account, or the URL of a Git repository in AWS CodeCommit or in any other Git repository. When you open a notebook instance, it opens in the directory that contains this repository. For more information, see Associating Git Repositories with Amazon SageMaker Notebook Instances.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DirectInternetAccess": {
      "description": "Sets whether Amazon SageMaker provides internet access to the notebook instance. If you set this to Disabled this notebook instance will be able to access resources only in your VPC, and will not be able to connect to Amazon SageMaker training and endpoint services unless your configure a NAT Gateway in your VPC.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "InstanceType": {
      "description": "The type of ML compute instance to launch for the notebook instance.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "KmsKeyId": {
      "description": "The Amazon Resource Name (ARN) of a AWS Key Management Service key that Amazon SageMaker uses to encrypt data on the storage volume attached to your notebook instance. The KMS key you provide must be enabled. For information, see Enabling and Disabling Keys in the AWS Key Management Service Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LifecycleConfigName": {
      "description": "The name of a lifecycle configuration to associate with the notebook instance. For information about lifestyle configurations, see Customize a Notebook Instance in the Amazon SageMaker Developer Guide.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NotebookInstanceName": {
      "description": "The name of the new notebook instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "RoleArn": {
      "description": "When you send any requests to AWS resources from the notebook instance, Amazon SageMaker assumes this role to perform tasks on your behalf. You must grant this role necessary permissions so Amazon SageMaker can perform these tasks. The policy must allow the Amazon SageMaker service principal (sagemaker.amazonaws.com) permissions to assume this role. For more information, see Amazon SageMaker Roles.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RootAccess": {
      "description": "Whether root access is enabled or disabled for users of the notebook instance. The default value is Enabled.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SecurityGroupIds": {
      "description": "The VPC security group IDs, in the form sg-xxxxxxxx. The security groups must be for the same VPC as specified in the subnet.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "SubnetId": {
      "description": "The ID of the subnet in a VPC to which you would like to have a connectivity from your ML compute instance.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "A list of key-value pairs to apply to this resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "VolumeSizeInGB": {
      "description": "The size, in GB, of the ML storage volume to attach to the notebook instance. The default value is 5 GB.",
      "required": false,
      "type": "Number",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-sagemaker-notebookinstance.html",
  "properties": [
    "AcceleratorTypes",
    "AdditionalCodeRepositories",
    "DefaultCodeRepository",
    "DirectInternetAccess",
    "InstanceType",
    "KmsKeyId",
    "LifecycleConfigName",
    "NotebookInstanceName",
    "RoleArn",
    "RootAccess",
    "SecurityGroupIds",
    "SubnetId",
    "Tags",
    "VolumeSizeInGB"
  ]
},
"AWS::SageMaker::NotebookInstanceLifecycleConfig": {
  "full_properties": {
    "NotebookInstanceLifecycleConfigName": {
      "description": "The name of the lifecycle configuration.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "OnCreate": {
      "description": "A shell script that runs only once, when you create a notebook instance. The shell script must be a base64-encoded string.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "OnStart": {
      "description": "A shell script that runs every time you start a notebook instance, including when you create the notebook instance. The shell script must be a base64-encoded string.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-sagemaker-notebookinstancelifecycleconfig.html",
  "properties": [
    "NotebookInstanceLifecycleConfigName",
    "OnCreate",
    "OnStart"
  ]
},
"AWS::SecretsManager::ResourcePolicy": {
  "full_properties": {
    "ResourcePolicy": {
      "description": "Specifies a JSON object that's constructed according to the grammar and syntax for a resource-based policy. The policy identifies who can access or manage this secret and its versions. For information on how to format a JSON object as a parameter for this resource type, see Using Resource-based Policies for Secrets Manager in the AWS Secrets Manager User Guide. Those same rules apply here.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SecretId": {
      "description": "Specifies the Amazon Resource Name (ARN) or the friendly name of the secret that you want to attach a resource-based permissions policy to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-secretsmanager-resourcepolicy.html",
  "properties": [
    "ResourcePolicy",
    "SecretId"
  ]
},
"AWS::SecretsManager::RotationSchedule": {
  "full_properties": {
    "RotationLambdaARN": {
      "description": "Specifies the ARN of the Lambda function that can rotate the secret. If you don't specify this parameter, then the secret must already have the ARN of a Lambda function configured. To reference a Lambda function that's also created in this template, use the Ref function with the function's logical ID.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "RotationRules": {
      "description": "Specifies a structure that defines the rotation schedule for this secret.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SecretId": {
      "description": "Specifies the Amazon Resource Name (ARN) or the friendly name of the secret that you want to rotate. To reference a secret also that's created in this template, use the Ref function with the secret's logical ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-secretsmanager-rotationschedule.html",
  "properties": [
    "RotationLambdaARN",
    "RotationRules",
    "SecretId"
  ]
},
"AWS::SecretsManager::Secret": {
  "full_properties": {
    "Description": {
      "description": "Specifies a user-provided description of the secret.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "GenerateSecretString": {
      "description": "A structure that specifies how to generate a random password by using the functionality of the GetRandomPassword API. You can return that string directly to use as the secret value, or you can specify both the SecretStringTemplate and the GenerateSecretKeyparameters. Secrets Manager uses the value in GenerateSecretKeyparameters. Secrets Manager uses the value in GenerateSecretKey as the key name and combines it with the randomly generated password to make a JSON key-value pair. It then inserts that pair into the JSON structure that's specified in the SecretStringTemplateparameter. Secrets Manager stores the completed string as the secret value in the initial version of the secret. For more information about how to use this property, see Secrets Manager Secret GenerateSecretString and the first example in the following Examples section.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "KmsKeyId": {
      "description": "Specifies the ARN, Key ID, or alias of the AWS KMS customer master key (CMK) that's used to encrypt the SecretString or SecretBinary values for versions of this secret. If you don't specify this value, then Secrets Manager defaults to the AWS account's CMK (the one named aws/secretsmanager). If an AWS KMS CMK with that name doesn't yet exist, Secrets Manager creates it for you automatically the first time it needs to encrypt a version's SecretString or SecretBinary fields.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The friendly name of the secret. You can use forward slashes in the name to represent a path hierarchy. For example, /prod/databases/dbserver1 could represent the secret for a server named dbserver1 in the folder databases in the folder prod.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "SecretString": {
      "description": "Specifies a literal string to use as the secret value for the secret. You can use any text you like, but remember that Lambda rotation functions require a specific JSON structure to be present in this field.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "The list of user-defined tags that are associated with the secret. Use tags to manage your AWS resources. For additional information about tags, see TagResource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-secretsmanager-secret.html",
  "properties": [
    "Description",
    "GenerateSecretString",
    "KmsKeyId",
    "Name",
    "SecretString",
    "Tags"
  ]
},
"AWS::SecretsManager::SecretTargetAttachment": {
  "full_properties": {
    "SecretId": {
      "description": "The Amazon Resource Name (ARN) or the friendly name of the secret that contains the credentials that you want to use with the specified service or database. To reference a secret that's also created in this template, use the see Ref function with the secret's logical ID.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TargetId": {
      "description": "The ARN of the service or database whose credentials are stored in the specified secret.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "TargetType": {
      "description": "A string used by the Secrets Manager console to determine how to parse the structure of the secret text and place the values in the proper fields of the console user interface. If you created this secret using the Secrets Manager console then we recommend that you do not modify this value. If this is a custom secret, then this field is available for your use. As a best practice, do not store any sensitive information in this field. Instead, store sensitive information in the SecretString or SecretBinary fields to ensure that it is encrypted.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-secretsmanager-secrettargetattachment.html",
  "properties": [
    "SecretId",
    "TargetId",
    "TargetType"
  ]
},
"AWS::SecurityHub::Hub": {
  "full_properties": {
    "Tags": {
      "description": "The tags to add to the hub resource.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-securityhub-hub.html",
  "properties": [
    "Tags"
  ]
},
"AWS::ServiceCatalog::AcceptedPortfolioShare": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PortfolioId": {
      "description": "The portfolio identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicecatalog-acceptedportfolioshare.html",
  "properties": [
    "AcceptLanguage",
    "PortfolioId"
  ]
},
"AWS::ServiceCatalog::CloudFormationProduct": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the product.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Distributor": {
      "description": "The distributor of the product.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Name": {
      "description": "The name of the product.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Owner": {
      "description": "The owner of the product.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ProvisioningArtifactParameters": {
      "description": "The configuration of the provisioning artifact (also known as a version).",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "SupportDescription": {
      "description": "The support information about the product.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SupportEmail": {
      "description": "The contact email for product support.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "SupportUrl": {
      "description": "The contact URL for product support.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "One or more tags.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-servicecatalog-cloudformationproduct.html",
  "properties": [
    "AcceptLanguage",
    "Description",
    "Distributor",
    "Name",
    "Owner",
    "ProvisioningArtifactParameters",
    "SupportDescription",
    "SupportEmail",
    "SupportUrl",
    "Tags"
  ]
},
"AWS::ServiceCatalog::CloudFormationProvisionedProduct": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NotificationArns": {
      "description": "Passed to CloudFormation. The SNS topic ARNs to which to publish stack-related events.",
      "required": false,
      "type": "Array",
      "update_causes": "replacement"
    },
    "PathId": {
      "description": "The path identifier of the product. This value is optional if the product has a default path, and required if the product has more than one path. To list the paths for a product, use ListLaunchPaths.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ProductId": {
      "description": "The product identifier.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ProductName": {
      "description": "A user-friendly name for the provisioned product. This value must be unique for the AWS account and cannot be updated after the product is provisioned.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ProvisionedProductName": {
      "description": "A user-friendly name for the provisioned product. This value must be unique for the AWS account and cannot be updated after the product is provisioned.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProvisioningArtifactId": {
      "description": "The identifier of the provisioning artifact (also known as a version).",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ProvisioningArtifactName": {
      "description": "The name of the provisioning artifact (also known as a version) for the product. This name must be unique for the product.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "ProvisioningParameters": {
      "description": "Parameters specified by the administrator that are required for provisioning the product.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "ProvisioningPreferences": {
      "description": "StackSet preferences that are required for provisioning the product or updating a provisioned product.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "Tags": {
      "description": "One or more tags.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-servicecatalog-cloudformationprovisionedproduct.html",
  "properties": [
    "AcceptLanguage",
    "NotificationArns",
    "PathId",
    "ProductId",
    "ProductName",
    "ProvisionedProductName",
    "ProvisioningArtifactId",
    "ProvisioningArtifactName",
    "ProvisioningParameters",
    "ProvisioningPreferences",
    "Tags"
  ]
},
"AWS::ServiceCatalog::LaunchNotificationConstraint": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the constraint.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "NotificationArns": {
      "description": "The notification ARNs.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "PortfolioId": {
      "description": "The portfolio identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProductId": {
      "description": "The product identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicecatalog-launchnotificationconstraint.html",
  "properties": [
    "AcceptLanguage",
    "Description",
    "NotificationArns",
    "PortfolioId",
    "ProductId"
  ]
},
"AWS::ServiceCatalog::LaunchRoleConstraint": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the constraint.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PortfolioId": {
      "description": "The portfolio identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProductId": {
      "description": "The product identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RoleArn": {
      "description": "The ARN of the launch role.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-servicecatalog-launchroleconstraint.html",
  "properties": [
    "AcceptLanguage",
    "Description",
    "PortfolioId",
    "ProductId",
    "RoleArn"
  ]
},
"AWS::ServiceCatalog::LaunchTemplateConstraint": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the constraint.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PortfolioId": {
      "description": "The portfolio identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProductId": {
      "description": "The product identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Rules": {
      "description": "The constraint rules.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-servicecatalog-launchtemplateconstraint.html",
  "properties": [
    "AcceptLanguage",
    "Description",
    "PortfolioId",
    "ProductId",
    "Rules"
  ]
},
"AWS::ServiceCatalog::Portfolio": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the portfolio.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DisplayName": {
      "description": "The name to use for display purposes.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ProviderName": {
      "description": "The name of the portfolio provider.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "One or more tags.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-servicecatalog-portfolio.html",
  "properties": [
    "AcceptLanguage",
    "Description",
    "DisplayName",
    "ProviderName",
    "Tags"
  ]
},
"AWS::ServiceCatalog::PortfolioPrincipalAssociation": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PortfolioId": {
      "description": "The portfolio identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "PrincipalARN": {
      "description": "The ARN of the principal (IAM user, role, or group).",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "PrincipalType": {
      "description": "The principal type. The supported value is IAM.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicecatalog-portfolioprincipalassociation.html",
  "properties": [
    "AcceptLanguage",
    "PortfolioId",
    "PrincipalARN",
    "PrincipalType"
  ]
},
"AWS::ServiceCatalog::PortfolioProductAssociation": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "PortfolioId": {
      "description": "The portfolio identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProductId": {
      "description": "The product identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SourcePortfolioId": {
      "description": "The identifier of the source portfolio.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicecatalog-portfolioproductassociation.html",
  "properties": [
    "AcceptLanguage",
    "PortfolioId",
    "ProductId",
    "SourcePortfolioId"
  ]
},
"AWS::ServiceCatalog::PortfolioShare": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "AccountId": {
      "description": "The AWS account ID. For example, 123456789012.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "PortfolioId": {
      "description": "The portfolio identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicecatalog-portfolioshare.html",
  "properties": [
    "AcceptLanguage",
    "AccountId",
    "PortfolioId"
  ]
},
"AWS::ServiceCatalog::ResourceUpdateConstraint": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the constraint.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "PortfolioId": {
      "description": "The portfolio identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProductId": {
      "description": "The product identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TagUpdateOnProvisionedProduct": {
      "description": "If set to ALLOWED, lets users change tags in a CloudFormationProvisionedProduct resource.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicecatalog-resourceupdateconstraint.html",
  "properties": [
    "AcceptLanguage",
    "Description",
    "PortfolioId",
    "ProductId",
    "TagUpdateOnProvisionedProduct"
  ]
},
"AWS::ServiceCatalog::StackSetConstraint": {
  "full_properties": {
    "AcceptLanguage": {
      "description": "The language code.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "AccountList": {
      "description": "One or more AWS accounts that will have access to the provisioned product.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "AdminRole": {
      "description": "AdminRole ARN",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "Description": {
      "description": "The description of the constraint.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ExecutionRole": {
      "description": "ExecutionRole name",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "PortfolioId": {
      "description": "The portfolio identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "ProductId": {
      "description": "The product identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RegionList": {
      "description": "One or more AWS Regions where the provisioned product will be available.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    },
    "StackInstanceControl": {
      "description": "Permission to create, update, and delete stack instances. Choose from ALLOWED and NOT_ALLOWED.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-servicecatalog-stacksetconstraint.html",
  "properties": [
    "AcceptLanguage",
    "AccountList",
    "AdminRole",
    "Description",
    "ExecutionRole",
    "PortfolioId",
    "ProductId",
    "RegionList",
    "StackInstanceControl"
  ]
},
"AWS::ServiceCatalog::TagOption": {
  "full_properties": {
    "Active": {
      "description": "The TagOption active state.",
      "required": false,
      "type": "Boolean",
      "update_causes": "none"
    },
    "Key": {
      "description": "The TagOption key.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Value": {
      "description": "The TagOption value.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicecatalog-tagoption.html",
  "properties": [
    "Active",
    "Key",
    "Value"
  ]
},
"AWS::ServiceCatalog::TagOptionAssociation": {
  "full_properties": {
    "ResourceId": {
      "description": "The resource identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "TagOptionId": {
      "description": "The TagOption identifier.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicecatalog-tagoptionassociation.html",
  "properties": [
    "ResourceId",
    "TagOptionId"
  ]
},
"AWS::ServiceDiscovery::HttpNamespace": {
  "full_properties": {
    "Description": {
      "description": "A description for the namespace.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name that you want to assign to this namespace.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicediscovery-httpnamespace.html",
  "properties": [
    "Description",
    "Name"
  ]
},
"AWS::ServiceDiscovery::Instance": {
  "full_properties": {
    "InstanceAttributes": {
      "description": "A string map that contains the following information for the service that you specify in ServiceId:",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "InstanceId": {
      "description": "An identifier that you want to associate with the instance. Note the following:",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "ServiceId": {
      "description": "The ID of the service that you want to use for settings for the instance.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicediscovery-instance.html",
  "properties": [
    "InstanceAttributes",
    "InstanceId",
    "ServiceId"
  ]
},
"AWS::ServiceDiscovery::PrivateDnsNamespace": {
  "full_properties": {
    "Description": {
      "description": "A description for the namespace.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name that you want to assign to this namespace. When you create a private DNS namespace, AWS Cloud Map automatically creates an Amazon Route 53 private hosted zone that has the same name as the namespace.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Vpc": {
      "description": "The ID of the Amazon VPC that you want to associate the namespace with.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicediscovery-privatednsnamespace.html",
  "properties": [
    "Description",
    "Name",
    "Vpc"
  ]
},
"AWS::ServiceDiscovery::PublicDnsNamespace": {
  "full_properties": {
    "Description": {
      "description": "A description for the namespace.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name that you want to assign to this namespace.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicediscovery-publicdnsnamespace.html",
  "properties": [
    "Description",
    "Name"
  ]
},
"AWS::ServiceDiscovery::Service": {
  "full_properties": {
    "Description": {
      "description": "The description of the service.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "DnsConfig": {
      "description": "A complex type that contains information about the Route 53 DNS records that you want AWS Cloud Map to create when you register an instance.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "HealthCheckConfig": {
      "description": "Public DNS and HTTP namespaces only. A complex type that contains settings for an optional health check. If you specify settings for a health check, AWS Cloud Map associates the health check with the records that you specify in DnsConfig.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "HealthCheckCustomConfig": {
      "description": "A complex type that contains information about an optional custom health check.",
      "required": false,
      "type": "Unknown",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The name of the service.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "NamespaceId": {
      "description": "The ID of the namespace that was used to create the service.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-servicediscovery-service.html",
  "properties": [
    "Description",
    "DnsConfig",
    "HealthCheckConfig",
    "HealthCheckCustomConfig",
    "Name",
    "NamespaceId"
  ]
},
"AWS::StepFunctions::Activity": {
  "full_properties": {
    "Name": {
      "description": "The name of the activity.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The list of tags to add to a resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-stepfunctions-activity.html",
  "properties": [
    "Name",
    "Tags"
  ]
},
"AWS::StepFunctions::StateMachine": {
  "full_properties": {
    "DefinitionString": {
      "description": "The Amazon States Language definition of the state machine. See Amazon States Language.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "RoleArn": {
      "description": "The Amazon Resource Name (ARN) of the IAM role to use for this state machine.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "StateMachineName": {
      "description": "The name of the state machine.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "Tags": {
      "description": "The list of tags to add to a resource.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-stepfunctions-statemachine.html",
  "properties": [
    "DefinitionString",
    "RoleArn",
    "StateMachineName",
    "Tags"
  ]
},
"AWS::Transfer::Server": {
  "full_properties": {
    "EndpointDetails": {
      "description": "The virtual private cloud (VPC) endpoint settings that you want to configure for your SFTP server. This parameter is required when you specify a value for the EndpointType parameter.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "EndpointType": {
      "description": "The type of VPC endpoint that you want your SFTP server to connect to. If you connect to a VPC endpoint, your SFTP server isn't accessible over the public internet.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "IdentityProviderDetails": {
      "description": "This parameter is required when the IdentityProviderType is set to API_GATEWAY. Accepts an array containing all of the information required to call a customer-supplied authentication API, including the API Gateway URL. This property is not required when the IdentityProviderType is set to SERVICE_MANAGED.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    },
    "IdentityProviderType": {
      "description": "Specifies the mode of authentication for the SFTP server. The default value is SERVICE_MANAGED, which allows you to store and access SFTP user credentials within the AWS Transfer for SFTP service. Use the API_GATEWAY value to integrate with an identity provider of your choosing. The API_GATEWAY setting requires you to provide an API Gateway endpoint URL to call for authentication using the IdentityProviderDetails parameter.",
      "required": false,
      "type": "String",
      "update_causes": "replacement"
    },
    "LoggingRole": {
      "description": "A value that allows the service to write your SFTP users' activity to your Amazon CloudWatch logs for monitoring and auditing purposes.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Key-value pairs that can be used to group and search for servers.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-transfer-server.html",
  "properties": [
    "EndpointDetails",
    "EndpointType",
    "IdentityProviderDetails",
    "IdentityProviderType",
    "LoggingRole",
    "Tags"
  ]
},
"AWS::Transfer::User": {
  "full_properties": {
    "HomeDirectory": {
      "description": "The landing directory (folder) for a user when they log in to the server using their SFTP client. An example is /home/username .",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Policy": {
      "description": "A scope-down policy for your user so you can use the same IAM role across multiple users. This policy scopes down user access to portions of their Amazon S3 bucket. Variables that you can use inside this policy include ${Transfer:UserName}, ${Transfer:HomeDirectory}, and ${Transfer:HomeBucket}.",
      "required": false,
      "type": "String",
      "update_causes": "none"
    },
    "Role": {
      "description": "The IAM role that controls your user's access to your Amazon S3 bucket. The policies attached to this role will determine the level of access you want to provide your users when transferring files into and out of your Amazon S3 bucket or buckets. The IAM role should also contain a trust relationship that allows the SFTP server to access your resources when servicing your SFTP user's transfer requests.",
      "required": true,
      "type": "String",
      "update_causes": "none"
    },
    "ServerId": {
      "description": "A system-assigned unique identifier for an SFTP server instance. This is the specific SFTP server that you added your user to.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SshPublicKeys": {
      "description": "This property contains the public key portion of the Secure Shell (SSH) keys stored for the described user.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Tags": {
      "description": "Key-value pairs that can be used to group and search for users. Tags are metadata attached to users for any purpose.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "UserName": {
      "description": "A unique string that identifies a user and is associated with a server as specified by the ServerId. This user name must be a minimum of 3 and a maximum of 32 characters long. The following are valid characters: a-z, A-Z, 0-9, underscore, and hyphen. The user name can't start with a hyphen.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-transfer-user.html",
  "properties": [
    "HomeDirectory",
    "Policy",
    "Role",
    "ServerId",
    "SshPublicKeys",
    "Tags",
    "UserName"
  ]
},
"AWS::WAF::ByteMatchSet": {
  "full_properties": {
    "ByteMatchTuples": {
      "description": "Specifies the bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to search for in web requests, the location in requests that you want AWS WAF to search, and other settings.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "A friendly name or description of the ByteMatchSet. You can't change Name after you create a ByteMatchSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-waf-bytematchset.html",
  "properties": [
    "ByteMatchTuples",
    "Name"
  ]
},
"AWS::WAF::IPSet": {
  "full_properties": {
    "IPSetDescriptors": {
      "description": "The IP address type (IPV4 or IPV6) and the IP address range (in CIDR notation) that web requests originate from. If the WebACL is associated with a CloudFront distribution and the viewer did not use an HTTP proxy or a load balancer to send the request, this is the value of the c-ip field in the CloudFront access logs.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "A friendly name or description of the IPSet. You can't change the name of an IPSet after you create it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-waf-ipset.html",
  "properties": [
    "IPSetDescriptors",
    "Name"
  ]
},
"AWS::WAF::Rule": {
  "full_properties": {
    "MetricName": {
      "description": "A friendly name or description for the metrics for this Rule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9), with maximum length 128 and minimum length one. It can't contain whitespace or metric names reserved for AWS WAF, including \"All\" and \"Default_Action.\" You can't change MetricName after you create the Rule.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The friendly name or description for the Rule. You can't change the name of a Rule after you create it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Predicates": {
      "description": "The Predicates object contains one Predicate element for each ByteMatchSet, IPSet, or SqlInjectionMatchSet object that you want to include in a Rule.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-waf-rule.html",
  "properties": [
    "MetricName",
    "Name",
    "Predicates"
  ]
},
"AWS::WAF::SizeConstraintSet": {
  "full_properties": {
    "Name": {
      "description": "The name, if any, of the SizeConstraintSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SizeConstraints": {
      "description": "The size constraint and the part of the web request to check.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-waf-sizeconstraintset.html",
  "properties": [
    "Name",
    "SizeConstraints"
  ]
},
"AWS::WAF::SqlInjectionMatchSet": {
  "full_properties": {
    "Name": {
      "description": "The name, if any, of the SqlInjectionMatchSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SqlInjectionMatchTuples": {
      "description": "Specifies the parts of web requests that you want to inspect for snippets of malicious SQL code.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-waf-sqlinjectionmatchset.html",
  "properties": [
    "Name",
    "SqlInjectionMatchTuples"
  ]
},
"AWS::WAF::WebACL": {
  "full_properties": {
    "DefaultAction": {
      "description": "The action to perform if none of the Rules contained in the WebACL match. The action is specified by the WafAction object.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MetricName": {
      "description": "A friendly name or description for the metrics for this WebACL. The name can contain only alphanumeric characters (A-Z, a-z, 0-9), with maximum length 128 and minimum length one. It can't contain whitespace or metric names reserved for AWS WAF, including \"All\" and \"Default_Action.\" You can't change MetricName after you create the WebACL.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "A friendly name or description of the WebACL. You can't change the name of a WebACL after you create it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Rules": {
      "description": "An array that contains the action for each Rule in a WebACL, the priority of the Rule, and the ID of the Rule.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-waf-webacl.html",
  "properties": [
    "DefaultAction",
    "MetricName",
    "Name",
    "Rules"
  ]
},
"AWS::WAF::XssMatchSet": {
  "full_properties": {
    "Name": {
      "description": "The name, if any, of the XssMatchSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "XssMatchTuples": {
      "description": "Specifies the parts of web requests that you want to inspect for cross-site scripting attacks.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-waf-xssmatchset.html",
  "properties": [
    "Name",
    "XssMatchTuples"
  ]
},
"AWS::WAFRegional::ByteMatchSet": {
  "full_properties": {
    "ByteMatchTuples": {
      "description": "Specifies the bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to search for in web requests, the location in requests that you want AWS WAF to search, and other settings.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "A friendly name or description of the ByteMatchSet. You can't change Name after you create a ByteMatchSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-wafregional-bytematchset.html",
  "properties": [
    "ByteMatchTuples",
    "Name"
  ]
},
"AWS::WAFRegional::GeoMatchSet": {
  "full_properties": {
    "GeoMatchConstraints": {
      "description": "An array of GeoMatchConstraint objects, which contain the country that you want AWS WAF to search for.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "A friendly name or description of the AWS::WAFRegional::GeoMatchSet. You can't change the name of an GeoMatchSet after you create it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-wafregional-geomatchset.html",
  "properties": [
    "GeoMatchConstraints",
    "Name"
  ]
},
"AWS::WAFRegional::IPSet": {
  "full_properties": {
    "IPSetDescriptors": {
      "description": "The IP address type (IPV4 or IPV6) and the IP address range (in CIDR notation) that web requests originate from. If the WebACL is associated with a CloudFront distribution and the viewer did not use an HTTP proxy or a load balancer to send the request, this is the value of the c-ip field in the CloudFront access logs.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "Name": {
      "description": "A friendly name or description of the IPSet. You can't change the name of an IPSet after you create it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-wafregional-ipset.html",
  "properties": [
    "IPSetDescriptors",
    "Name"
  ]
},
"AWS::WAFRegional::RateBasedRule": {
  "full_properties": {
    "MatchPredicates": {
      "description": "The Predicates object contains one Predicate element for each ByteMatchSet, IPSet, or SqlInjectionMatchSet> object that you want to include in a RateBasedRule.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "MetricName": {
      "description": "A friendly name or description for the metrics for a RateBasedRule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9), with maximum length 128 and minimum length one. It can't contain whitespace or metric names reserved for AWS WAF, including \"All\" and \"Default_Action.\" You can't change the name of the metric after you create the RateBasedRule.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "A friendly name or description for a RateBasedRule. You can't change the name of a RateBasedRule after you create it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RateKey": {
      "description": "The field that AWS WAF uses to determine if requests are likely arriving from single source and thus subject to rate monitoring. The only valid value for RateKey is IP. IP indicates that requests arriving from the same IP address are subject to the RateLimit that is specified in the RateBasedRule.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RateLimit": {
      "description": "The maximum number of requests, which have an identical value in the field specified by the RateKey, allowed in a five-minute period. If the number of requests exceeds the RateLimit and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule.",
      "required": true,
      "type": "Number",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-wafregional-ratebasedrule.html",
  "properties": [
    "MatchPredicates",
    "MetricName",
    "Name",
    "RateKey",
    "RateLimit"
  ]
},
"AWS::WAFRegional::RegexPatternSet": {
  "full_properties": {
    "Name": {
      "description": "A friendly name or description of the AWS::WAFRegional::RegexPatternSet. You can't change Name after you create a RegexPatternSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "RegexPatternStrings": {
      "description": "Specifies the regular expression (regex) patterns that you want AWS WAF to search for, such as B[a@]dB[o0]t.",
      "required": true,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-wafregional-regexpatternset.html",
  "properties": [
    "Name",
    "RegexPatternStrings"
  ]
},
"AWS::WAFRegional::Rule": {
  "full_properties": {
    "MetricName": {
      "description": "A friendly name or description for the metrics for this Rule. The name can contain only alphanumeric characters (A-Z, a-z, 0-9), with maximum length 128 and minimum length one. It can't contain whitespace or metric names reserved for AWS WAF, including \"All\" and \"Default_Action.\" You can't change MetricName after you create the Rule.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "The friendly name or description for the Rule. You can't change the name of a Rule after you create it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Predicates": {
      "description": "The Predicates object contains one Predicate element for each ByteMatchSet, IPSet, or SqlInjectionMatchSet object that you want to include in a Rule.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-wafregional-rule.html",
  "properties": [
    "MetricName",
    "Name",
    "Predicates"
  ]
},
"AWS::WAFRegional::SizeConstraintSet": {
  "full_properties": {
    "Name": {
      "description": "The name, if any, of the SizeConstraintSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SizeConstraints": {
      "description": "The size constraint and the part of the web request to check.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-wafregional-sizeconstraintset.html",
  "properties": [
    "Name",
    "SizeConstraints"
  ]
},
"AWS::WAFRegional::SqlInjectionMatchSet": {
  "full_properties": {
    "Name": {
      "description": "The name, if any, of the SqlInjectionMatchSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "SqlInjectionMatchTuples": {
      "description": "Specifies the parts of web requests that you want to inspect for snippets of malicious SQL code.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-wafregional-sqlinjectionmatchset.html",
  "properties": [
    "Name",
    "SqlInjectionMatchTuples"
  ]
},
"AWS::WAFRegional::WebACL": {
  "full_properties": {
    "DefaultAction": {
      "description": "The action to perform if none of the Rules contained in the WebACL match. The action is specified by the WafAction object.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "MetricName": {
      "description": "A friendly name or description for the metrics for this WebACL. The name can contain only alphanumeric characters (A-Z, a-z, 0-9), with maximum length 128 and minimum length one. It can't contain whitespace or metric names reserved for AWS WAF, including \"All\" and \"Default_Action.\" You can't change MetricName after you create the WebACL.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Name": {
      "description": "A friendly name or description of the WebACL. You can't change the name of a WebACL after you create it.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "Rules": {
      "description": "An array that contains the action for each Rule in a WebACL, the priority of the Rule, and the ID of the Rule.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-wafregional-webacl.html",
  "properties": [
    "DefaultAction",
    "MetricName",
    "Name",
    "Rules"
  ]
},
"AWS::WAFRegional::WebACLAssociation": {
  "full_properties": {
    "ResourceArn": {
      "description": "The Amazon Resource Name (ARN) of the resource to protect with the web ACL.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "WebACLId": {
      "description": "A unique identifier (ID) for the web ACL.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-wafregional-webaclassociation.html",
  "properties": [
    "ResourceArn",
    "WebACLId"
  ]
},
"AWS::WAFRegional::XssMatchSet": {
  "full_properties": {
    "Name": {
      "description": "The name, if any, of the XssMatchSet.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "XssMatchTuples": {
      "description": "Specifies the parts of web requests that you want to inspect for cross-site scripting attacks.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-wafregional-xssmatchset.html",
  "properties": [
    "Name",
    "XssMatchTuples"
  ]
},
"AWS::WorkSpaces::Workspace": {
  "full_properties": {
    "BundleId": {
      "description": "The identifier of the bundle for the WorkSpace.",
      "required": true,
      "type": "String",
      "update_causes": "unavailable"
    },
    "DirectoryId": {
      "description": "The identifier of the AWS Directory Service directory for the WorkSpace.",
      "required": true,
      "type": "String",
      "update_causes": "unknown"
    },
    "RootVolumeEncryptionEnabled": {
      "description": "Indicates whether the data stored on the root volume is encrypted.",
      "required": false,
      "type": "Boolean",
      "update_causes": "unavailable"
    },
    "Tags": {
      "description": "The tags for the WorkSpace.",
      "required": false,
      "type": "Array",
      "update_causes": "none"
    },
    "UserName": {
      "description": "The username of the user for the WorkSpace. This username must exist in the AWS Directory Service directory for the WorkSpace.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    },
    "UserVolumeEncryptionEnabled": {
      "description": "Indicates whether the data stored on the user volume is encrypted.",
      "required": false,
      "type": "Boolean",
      "update_causes": "unavailable"
    },
    "VolumeEncryptionKey": {
      "description": "The KMS key used to encrypt data stored on your WorkSpace.",
      "required": false,
      "type": "String",
      "update_causes": "unavailable"
    },
    "WorkspaceProperties": {
      "description": "The WorkSpace properties.",
      "required": false,
      "type": "Unknown",
      "update_causes": "none"
    }
  },
  "path": "aws-resource-workspaces-workspace.html",
  "properties": [
    "BundleId",
    "DirectoryId",
    "RootVolumeEncryptionEnabled",
    "Tags",
    "UserName",
    "UserVolumeEncryptionEnabled",
    "VolumeEncryptionKey",
    "WorkspaceProperties"
  ]
},
"Alexa::ASK::Skill": {
  "full_properties": {
    "AuthenticationConfiguration": {
      "description": "Login with Amazon (LWA) configuration used to authenticate with the Alexa service. Only Login with Amazon clients created through the Amazon Developer Console are supported. The client ID, client secret, and refresh token are required.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "SkillPackage": {
      "description": "Configuration for the skill package that contains the components of the Alexa skill. Skill packages are retrieved from an Amazon S3 bucket and key and used to create and update the skill. For more information about the skill package format, see the Skill Package API Reference.",
      "required": true,
      "type": "Unknown",
      "update_causes": "none"
    },
    "VendorId": {
      "description": "The vendor ID associated with the Amazon developer account that will host the skill. Details for retrieving the vendor ID are in How to get your vendor ID. The provided LWA credentials must be linked to the developer account associated with this vendor ID.",
      "required": true,
      "type": "String",
      "update_causes": "replacement"
    }
  },
  "path": "aws-resource-ask-skill.html",
  "properties": [
    "AuthenticationConfiguration",
    "SkillPackage",
    "VendorId"
  ]
}

}